t2-mapper/docs/_next/static/chunks/d07990f13ea8bb98.js
Brian Beck 3ba1ce9afd extensive work on lighting, shadows, and fog
- use MeshLambertMaterial for interiors, terrain, and shapes
- use smooth vertex normal blending to avoid facted-looking contrasty lighting
  between adjacent surfaces
- update io_dif Blender addon to extract lightmaps
- re-export .dif files to glTF with lightmaps and without LOD
- enable sun, ensure correct direction
- adjust fog (more work to do)
- cleanup and optimization
2025-12-07 14:01:26 -08:00

1 line
578 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18566,(e,t,r)=>{t.exports=e.r(76562)},38360,(e,t,r)=>{var n={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",:"A",:"A",:"A",:"A",:"A",Æ:"AE",:"A",:"A",Ȃ:"A",:"A",:"A",:"A",:"A",:"A",Ç:"C",:"C",È:"E",É:"E",Ê:"E",Ë:"E",:"E",:"E",:"E",:"E",:"E",Ȇ:"E",:"E",:"E",:"E",:"E",:"E",:"E",Ì:"I",Í:"I",Î:"I",Ï:"I",:"I",Ȋ:"I",:"I",:"I",Ð:"D",Ñ:"N",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",:"O",:"O",:"O",Ȏ:"O",:"O",:"O",:"O",:"O",:"O",:"O",:"O",:"O",:"O",:"O",Ù:"U",Ú:"U",Û:"U",Ü:"U",:"U",:"U",:"U",:"U",:"U",Ý:"Y",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",:"a",:"a",:"a",:"a",:"a",æ:"ae",:"a",:"a",ȃ:"a",:"a",:"a",:"a",:"a",:"a",ç:"c",:"c",è:"e",é:"e",ê:"e",ë:"e",ế:"e",:"e",:"e",:"e",:"e",ȇ:"e",:"e",:"e",:"e",:"e",:"e",:"e",ì:"i",í:"i",î:"i",ï:"i",:"i",ȋ:"i",:"i",:"i",ð:"d",ñ:"n",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",:"o",:"o",:"o",ȏ:"o",:"o",:"o",:"o",:"o",:"o",:"o",:"o",:"o",:"o",:"o",ù:"u",ú:"u",û:"u",ü:"u",:"u",:"u",:"u",:"u",:"u",ý:"y",ÿ:"y",Ā:"A",ā:"a",Ă:"A",ă:"a",Ą:"A",ą:"a",Ć:"C",ć:"c",Ĉ:"C",ĉ:"c",Ċ:"C",ċ:"c",Č:"C",č:"c",C̆:"C",c̆:"c",Ď:"D",ď:"d",Đ:"D",đ:"d",Ē:"E",ē:"e",Ĕ:"E",ĕ:"e",Ė:"E",ė:"e",Ę:"E",ę:"e",Ě:"E",ě:"e",Ĝ:"G",Ǵ:"G",ĝ:"g",ǵ:"g",Ğ:"G",ğ:"g",Ġ:"G",ġ:"g",Ģ:"G",ģ:"g",Ĥ:"H",ĥ:"h",Ħ:"H",ħ:"h",:"H",:"h",Ĩ:"I",ĩ:"i",Ī:"I",ī:"i",Ĭ:"I",ĭ:"i",Į:"I",į:"i",İ:"I",ı:"i",IJ:"IJ",ij:"ij",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",:"K",:"k",K̆:"K",k̆:"k",Ĺ:"L",ĺ:"l",Ļ:"L",ļ:"l",Ľ:"L",ľ:"l",Ŀ:"L",ŀ:"l",Ł:"l",ł:"l",:"M",ḿ:"m",M̆:"M",m̆:"m",Ń:"N",ń:"n",Ņ:"N",ņ:"n",Ň:"N",ň:"n",ʼn:"n",N̆:"N",n̆:"n",Ō:"O",ō:"o",Ŏ:"O",ŏ:"o",Ő:"O",ő:"o",Œ:"OE",œ:"oe",P̆:"P",p̆:"p",Ŕ:"R",ŕ:"r",Ŗ:"R",ŗ:"r",Ř:"R",ř:"r",R̆:"R",r̆:"r",Ȓ:"R",ȓ:"r",Ś:"S",ś:"s",Ŝ:"S",ŝ:"s",Ş:"S",Ș:"S",ș:"s",ş:"s",Š:"S",š:"s",Ţ:"T",ţ:"t",ț:"t",Ț:"T",Ť:"T",ť:"t",Ŧ:"T",ŧ:"t",T̆:"T",t̆:"t",Ũ:"U",ũ:"u",Ū:"U",ū:"u",Ŭ:"U",ŭ:"u",Ů:"U",ů:"u",Ű:"U",ű:"u",Ų:"U",ų:"u",Ȗ:"U",ȗ:"u",V̆:"V",v̆:"v",Ŵ:"W",ŵ:"w",:"W",:"w",X̆:"X",x̆:"x",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Y̆:"Y",y̆:"y",Ź:"Z",ź:"z",Ż:"Z",ż:"z",Ž:"Z",ž:"z",ſ:"s",ƒ:"f",Ơ:"O",ơ:"o",Ư:"U",ư:"u",Ǎ:"A",ǎ:"a",Ǐ:"I",ǐ:"i",Ǒ:"O",ǒ:"o",Ǔ:"U",ǔ:"u",Ǖ:"U",ǖ:"u",Ǘ:"U",ǘ:"u",Ǚ:"U",ǚ:"u",Ǜ:"U",ǜ:"u",:"U",:"u",:"U",:"u",Ǻ:"A",ǻ:"a",Ǽ:"AE",ǽ:"ae",Ǿ:"O",ǿ:"o",Þ:"TH",þ:"th",:"P",:"p",:"S",:"s",X́:"X",x́:"x",Ѓ:"Г",ѓ:"г",Ќ:"К",ќ:"к",A̋:"A",a̋:"a",E̋:"E",e̋:"e",I̋:"I",i̋:"i",Ǹ:"N",ǹ:"n",:"O",:"o",:"O",:"o",:"U",:"u",:"W",:"w",:"Y",:"y",Ȁ:"A",ȁ:"a",Ȅ:"E",ȅ:"e",Ȉ:"I",ȉ:"i",Ȍ:"O",ȍ:"o",Ȑ:"R",ȑ:"r",Ȕ:"U",ȕ:"u",B̌:"B",b̌:"b",Č̣:"C",č̣:"c",Ê̌:"E",ê̌:"e",F̌:"F",f̌:"f",Ǧ:"G",ǧ:"g",Ȟ:"H",ȟ:"h",J̌:"J",ǰ:"j",Ǩ:"K",ǩ:"k",M̌:"M",m̌:"m",P̌:"P",p̌:"p",Q̌:"Q",q̌:"q",Ř̩:"R",ř̩:"r",:"S",:"s",V̌:"V",v̌:"v",W̌:"W",w̌:"w",X̌:"X",x̌:"x",Y̌:"Y",y̌:"y",A̧:"A",a̧:"a",B̧:"B",b̧:"b",:"D",:"d",Ȩ:"E",ȩ:"e",Ɛ̧:"E",ɛ̧:"e",:"H",:"h",I̧:"I",i̧:"i",Ɨ̧:"I",ɨ̧:"i",M̧:"M",m̧:"m",O̧:"O",o̧:"o",Q̧:"Q",q̧:"q",U̧:"U",u̧:"u",X̧:"X",x̧:"x",Z̧:"Z",z̧:"z",й:"и",Й:"И",ё:"е",Ё:"Е"},i=Object.keys(n).join("|"),a=RegExp(i,"g"),s=RegExp(i,"");function o(e){return n[e]}var l=function(e){return e.replace(a,o)};t.exports=l,t.exports.has=function(e){return!!e.match(s)},t.exports.remove=l},29402,(e,t,r)=>{var n,i,a="__lodash_hash_undefined__",s=1/0,o="[object Arguments]",l="[object Array]",u="[object Boolean]",c="[object Date]",d="[object Error]",f="[object Function]",h="[object Map]",p="[object Number]",m="[object Object]",g="[object Promise]",A="[object RegExp]",y="[object Set]",x="[object String]",B="[object Symbol]",C="[object WeakMap]",S="[object ArrayBuffer]",E="[object DataView]",T=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,b=/^\w*$/,D=/^\./,M=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,w=/\\(\\)?/g,F=/^\[object .+?Constructor\]$/,R=/^(?:0|[1-9]\d*)$/,I={};I["[object Float32Array]"]=I["[object Float64Array]"]=I["[object Int8Array]"]=I["[object Int16Array]"]=I["[object Int32Array]"]=I["[object Uint8Array]"]=I["[object Uint8ClampedArray]"]=I["[object Uint16Array]"]=I["[object Uint32Array]"]=!0,I[o]=I[l]=I[S]=I[u]=I[E]=I[c]=I[d]=I[f]=I[h]=I[p]=I[m]=I[A]=I[y]=I[x]=I[C]=!1;var P=e.g&&e.g.Object===Object&&e.g,L="object"==typeof self&&self&&self.Object===Object&&self,U=P||L||Function("return this")(),G=r&&!r.nodeType&&r,O=G&&t&&!t.nodeType&&t,H=O&&O.exports===G&&P.process,N=function(){try{return H&&H.binding("util")}catch(e){}}(),k=N&&N.isTypedArray;function z(e,t){for(var r=-1,n=e?e.length:0,i=Array(n);++r<n;)i[r]=t(e[r],r,e);return i}function j(e){return function(t){return e(t)}}function K(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}function J(e){var t=-1,r=Array(e.size);return e.forEach(function(e,n){r[++t]=[n,e]}),r}function V(e){var t=-1,r=Array(e.size);return e.forEach(function(e){r[++t]=e}),r}var Q=Array.prototype,W=Function.prototype,X=Object.prototype,Z=U["__core-js_shared__"],Y=function(){var e=/[^.]+$/.exec(Z&&Z.keys&&Z.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),_=W.toString,q=X.hasOwnProperty,$=X.toString,ee=RegExp("^"+_.call(q).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),et=U.Symbol,er=U.Uint8Array,en=X.propertyIsEnumerable,ei=Q.splice,ea=(n=Object.keys,i=Object,function(e){return n(i(e))}),es=eL(U,"DataView"),eo=eL(U,"Map"),el=eL(U,"Promise"),eu=eL(U,"Set"),ec=eL(U,"WeakMap"),ed=eL(Object,"create"),ef=ez(es),eh=ez(eo),ep=ez(el),em=ez(eu),ev=ez(ec),eg=et?et.prototype:void 0,eA=eg?eg.valueOf:void 0,ey=eg?eg.toString:void 0;function ex(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function eB(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function eC(e){var t=-1,r=e?e.length:0;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function eS(e){var t=-1,r=e?e.length:0;for(this.__data__=new eC;++t<r;)this.add(e[t])}function eE(e){this.__data__=new eB(e)}function eT(e,t){for(var r=e.length;r--;)if(eK(e[r][0],t))return r;return -1}ex.prototype.clear=function(){this.__data__=ed?ed(null):{}},ex.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},ex.prototype.get=function(e){var t=this.__data__;if(ed){var r=t[e];return r===a?void 0:r}return q.call(t,e)?t[e]:void 0},ex.prototype.has=function(e){var t=this.__data__;return ed?void 0!==t[e]:q.call(t,e)},ex.prototype.set=function(e,t){return this.__data__[e]=ed&&void 0===t?a:t,this},eB.prototype.clear=function(){this.__data__=[]},eB.prototype.delete=function(e){var t=this.__data__,r=eT(t,e);return!(r<0)&&(r==t.length-1?t.pop():ei.call(t,r,1),!0)},eB.prototype.get=function(e){var t=this.__data__,r=eT(t,e);return r<0?void 0:t[r][1]},eB.prototype.has=function(e){return eT(this.__data__,e)>-1},eB.prototype.set=function(e,t){var r=this.__data__,n=eT(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},eC.prototype.clear=function(){this.__data__={hash:new ex,map:new(eo||eB),string:new ex}},eC.prototype.delete=function(e){return eP(this,e).delete(e)},eC.prototype.get=function(e){return eP(this,e).get(e)},eC.prototype.has=function(e){return eP(this,e).has(e)},eC.prototype.set=function(e,t){return eP(this,e).set(e,t),this},eS.prototype.add=eS.prototype.push=function(e){return this.__data__.set(e,a),this},eS.prototype.has=function(e){return this.__data__.has(e)},eE.prototype.clear=function(){this.__data__=new eB},eE.prototype.delete=function(e){return this.__data__.delete(e)},eE.prototype.get=function(e){return this.__data__.get(e)},eE.prototype.has=function(e){return this.__data__.has(e)},eE.prototype.set=function(e,t){var r=this.__data__;if(r instanceof eB){var n=r.__data__;if(!eo||n.length<199)return n.push([e,t]),this;r=this.__data__=new eC(n)}return r.set(e,t),this};var eb=function(e,t){return function(r,n){if(null==r)return r;if(!eQ(r))return e(r,n);for(var i=r.length,a=-1,s=Object(r);(t?a--:++a<i)&&!1!==n(s[a],a,s););return r}}(function(e,t){return e&&eD(e,t,e$)}),eD=function(e,t,r){for(var n=-1,i=Object(e),a=r(e),s=a.length;s--;){var o=a[++n];if(!1===t(i[o],o,i))break}return e};function eM(e,t){var r;t=eO(t,e)?[t]:eV(r=t)?r:eN(r);for(var n=0,i=t.length;null!=e&&n<i;)e=e[ek(t[n++])];return n&&n==i?e:void 0}function ew(e,t){return null!=e&&t in Object(e)}function eF(e,t,r,n,i){return e===t||(null!=e&&null!=t&&(eZ(e)||eY(t))?function(e,t,r,n,i,a){var s=eV(e),f=eV(t),g=l,C=l;s||(g=(g=eU(e))==o?m:g),f||(C=(C=eU(t))==o?m:C);var T=g==m&&!K(e),b=C==m&&!K(t),D=g==C;if(D&&!T)return a||(a=new eE),s||eq(e)?eI(e,t,r,n,i,a):function(e,t,r,n,i,a,s){switch(r){case E:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)break;e=e.buffer,t=t.buffer;case S:if(e.byteLength!=t.byteLength||!n(new er(e),new er(t)))break;return!0;case u:case c:case p:return eK(+e,+t);case d:return e.name==t.name&&e.message==t.message;case A:case x:return e==t+"";case h:var o=J;case y:var l=2&a;if(o||(o=V),e.size!=t.size&&!l)break;var f=s.get(e);if(f)return f==t;a|=1,s.set(e,t);var m=eI(o(e),o(t),n,i,a,s);return s.delete(e),m;case B:if(eA)return eA.call(e)==eA.call(t)}return!1}(e,t,g,r,n,i,a);if(!(2&i)){var M=T&&q.call(e,"__wrapped__"),w=b&&q.call(t,"__wrapped__");if(M||w){var F=M?e.value():e,R=w?t.value():t;return a||(a=new eE),r(F,R,n,i,a)}}return!!D&&(a||(a=new eE),function(e,t,r,n,i,a){var s=2&i,o=e$(e),l=o.length;if(l!=e$(t).length&&!s)return!1;for(var u=l;u--;){var c=o[u];if(!(s?c in t:q.call(t,c)))return!1}var d=a.get(e);if(d&&a.get(t))return d==t;var f=!0;a.set(e,t),a.set(t,e);for(var h=s;++u<l;){var p=e[c=o[u]],m=t[c];if(n)var g=s?n(m,p,c,t,e,a):n(p,m,c,e,t,a);if(!(void 0===g?p===m||r(p,m,n,i,a):g)){f=!1;break}h||(h="constructor"==c)}if(f&&!h){var A=e.constructor,y=t.constructor;A!=y&&"constructor"in e&&"constructor"in t&&!("function"==typeof A&&A instanceof A&&"function"==typeof y&&y instanceof y)&&(f=!1)}return a.delete(e),a.delete(t),f}(e,t,r,n,i,a))}(e,t,eF,r,n,i):e!=e&&t!=t)}function eR(e){var t,r,n,i;return"function"==typeof e?e:null==e?e0:"object"==typeof e?eV(e)?(t=e[0],r=e[1],eO(t)&&function(e){return e==e&&!eZ(e)}(r)?eH(ek(t),r):function(e){var n,i,a,s,o,l=(n=e,i=t,void 0===(a=null==n?void 0:eM(n,i))?void 0:a);return void 0===l&&l===r?(s=e,o=t,null!=s&&function(e,t,r){t=eO(t,e)?[t]:eV(n=t)?n:eN(n);for(var n,i,a=-1,s=t.length;++a<s;){var o=ek(t[a]);if(!(i=null!=e&&r(e,o)))break;e=e[o]}if(i)return i;var s=e?e.length:0;return!!s&&eX(s)&&eG(o,s)&&(eV(e)||eJ(e))}(s,o,ew)):eF(r,l,void 0,3)}):1==(i=function(e){for(var t=e$(e),r=t.length;r--;){var n=t[r],i=e[n];t[r]=[n,i,function(e){return e==e&&!eZ(e)}(i)]}return t}(n=e)).length&&i[0][2]?eH(i[0][0],i[0][1]):function(e){return e===n||function(e,t,r,n){var i=r.length,a=i;if(null==e)return!a;for(e=Object(e);i--;){var s=r[i];if((0,s[2])?s[1]!==e[s[0]]:!(s[0]in e))return!1}for(;++i<a;){var o=(s=r[i])[0],l=e[o],u=s[1];if(0,s[2]){if(void 0===l&&!(o in e))return!1}else{var c,d=new eE;!1;if(!(void 0===c?eF(u,l,n,3,d):c))return!1}}return!0}(e,n,i)}:function(e){var t;return eO(e)?(t=ek(e),function(e){return null==e?void 0:e[t]}):function(t){return eM(t,e)}}(e)}function eI(e,t,r,n,i,a){var s=2&i,o=e.length,l=t.length;if(o!=l&&!(s&&l>o))return!1;var u=a.get(e);if(u&&a.get(t))return u==t;var c=-1,d=!0,f=1&i?new eS:void 0;for(a.set(e,t),a.set(t,e);++c<o;){var h=e[c],p=t[c];if(n)var m=s?n(p,h,c,t,e,a):n(h,p,c,e,t,a);if(void 0!==m){if(m)continue;d=!1;break}if(f){if(!function(e,t){for(var r=-1,n=e?e.length:0;++r<n;)if(t(e[r],r,e))return!0;return!1}(t,function(e,t){if(!f.has(t)&&(h===e||r(h,e,n,i,a)))return f.add(t)})){d=!1;break}}else if(!(h===p||r(h,p,n,i,a))){d=!1;break}}return a.delete(e),a.delete(t),d}function eP(e,t){var r,n,i=e.__data__;return("string"==(n=typeof(r=t))||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==r:null===r)?i["string"==typeof t?"string":"hash"]:i.map}function eL(e,t){var r,n=null==e?void 0:e[t];return!(!eZ(n)||(r=n,Y&&Y in r))&&(eW(n)||K(n)?ee:F).test(ez(n))?n:void 0}var eU=function(e){return $.call(e)};function eG(e,t){return!!(t=null==t?0x1fffffffffffff:t)&&("number"==typeof e||R.test(e))&&e>-1&&e%1==0&&e<t}function eO(e,t){if(eV(e))return!1;var r=typeof e;return!!("number"==r||"symbol"==r||"boolean"==r||null==e||e_(e))||b.test(e)||!T.test(e)||null!=t&&e in Object(t)}function eH(e,t){return function(r){return null!=r&&r[e]===t&&(void 0!==t||e in Object(r))}}(es&&eU(new es(new ArrayBuffer(1)))!=E||eo&&eU(new eo)!=h||el&&eU(el.resolve())!=g||eu&&eU(new eu)!=y||ec&&eU(new ec)!=C)&&(eU=function(e){var t=$.call(e),r=t==m?e.constructor:void 0,n=r?ez(r):void 0;if(n)switch(n){case ef:return E;case eh:return h;case ep:return g;case em:return y;case ev:return C}return t});var eN=ej(function(e){e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if(e_(e))return ey?ey.call(e):"";var t=e+"";return"0"==t&&1/e==-s?"-0":t}(t);var t,r=[];return D.test(e)&&r.push(""),e.replace(M,function(e,t,n,i){r.push(n?i.replace(w,"$1"):t||e)}),r});function ek(e){if("string"==typeof e||e_(e))return e;var t=e+"";return"0"==t&&1/e==-s?"-0":t}function ez(e){if(null!=e){try{return _.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function ej(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw TypeError("Expected a function");var r=function(){var n=arguments,i=t?t.apply(this,n):n[0],a=r.cache;if(a.has(i))return a.get(i);var s=e.apply(this,n);return r.cache=a.set(i,s),s};return r.cache=new(ej.Cache||eC),r}function eK(e,t){return e===t||e!=e&&t!=t}function eJ(e){var t;return eY(t=e)&&eQ(t)&&q.call(e,"callee")&&(!en.call(e,"callee")||$.call(e)==o)}ej.Cache=eC;var eV=Array.isArray;function eQ(e){return null!=e&&eX(e.length)&&!eW(e)}function eW(e){var t=eZ(e)?$.call(e):"";return t==f||"[object GeneratorFunction]"==t}function eX(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=0x1fffffffffffff}function eZ(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function eY(e){return!!e&&"object"==typeof e}function e_(e){return"symbol"==typeof e||eY(e)&&$.call(e)==B}var eq=k?j(k):function(e){return eY(e)&&eX(e.length)&&!!I[$.call(e)]};function e$(e){return eQ(e)?function(e,t){var r=eV(e)||eJ(e)?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],n=r.length,i=!!n;for(var a in e)q.call(e,a)&&!(i&&("length"==a||eG(a,n)))&&r.push(a);return r}(e):function(e){if(r=(t=e)&&t.constructor,t!==("function"==typeof r&&r.prototype||X))return ea(e);var t,r,n=[];for(var i in Object(e))q.call(e,i)&&"constructor"!=i&&n.push(i);return n}(e)}function e0(e){return e}t.exports=function(e,t,r,n){return null==e?[]:(eV(t)||(t=null==t?[]:[t]),eV(r=n?void 0:r)||(r=null==r?[]:[r]),function(e,t,r){var n,i,a,s=-1;t=z(t.length?t:[e0],j(eR));var o=(n=function(e,r,n){return{criteria:z(t,function(t){return t(e)}),index:++s,value:e}},i=-1,a=eQ(e)?Array(e.length):[],eb(e,function(e,t,r){a[++i]=n(e,t,r)}),a),l=o.length;for(o.sort(function(e,t){return function(e,t,r){for(var n=-1,i=e.criteria,a=t.criteria,s=i.length,o=r.length;++n<s;){var l=function(e,t){if(e!==t){var r=void 0!==e,n=null===e,i=e==e,a=e_(e),s=void 0!==t,o=null===t,l=t==t,u=e_(t);if(!o&&!u&&!a&&e>t||a&&s&&l&&!o&&!u||n&&s&&l||!r&&l||!i)return 1;if(!n&&!a&&!u&&e<t||u&&r&&i&&!n&&!a||o&&r&&i||!s&&i||!l)return -1}return 0}(i[n],a[n]);if(l){if(n>=o)return l;return l*("desc"==r[n]?-1:1)}}return e.index-t.index}(e,t,r)});l--;)o[l]=o[l].value;return o}(e,t,r))}},81405,(e,t,r)=>{e.e,t.exports=function(){var e=function(){function t(e){return i.appendChild(e.dom),e}function r(e){for(var t=0;t<i.children.length;t++)i.children[t].style.display=t===e?"block":"none";n=e}var n=0,i=document.createElement("div");i.style.cssText="position:fixed;top:0;left:0;cursor:pointer;opacity:0.9;z-index:10000",i.addEventListener("click",function(e){e.preventDefault(),r(++n%i.children.length)},!1);var a=(performance||Date).now(),s=a,o=0,l=t(new e.Panel("FPS","#0ff","#002")),u=t(new e.Panel("MS","#0f0","#020"));if(self.performance&&self.performance.memory)var c=t(new e.Panel("MB","#f08","#201"));return r(0),{REVISION:16,dom:i,addPanel:t,showPanel:r,begin:function(){a=(performance||Date).now()},end:function(){o++;var e=(performance||Date).now();if(u.update(e-a,200),e>s+1e3&&(l.update(1e3*o/(e-s),100),s=e,o=0,c)){var t=performance.memory;c.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){a=this.end()},domElement:i,setMode:r}};return e.Panel=function(e,t,r){var n=1/0,i=0,a=Math.round,s=a(window.devicePixelRatio||1),o=80*s,l=48*s,u=3*s,c=2*s,d=3*s,f=15*s,h=74*s,p=30*s,m=document.createElement("canvas");m.width=o,m.height=l,m.style.cssText="width:80px;height:48px";var g=m.getContext("2d");return g.font="bold "+9*s+"px Helvetica,Arial,sans-serif",g.textBaseline="top",g.fillStyle=r,g.fillRect(0,0,o,l),g.fillStyle=t,g.fillText(e,u,c),g.fillRect(d,f,h,p),g.fillStyle=r,g.globalAlpha=.9,g.fillRect(d,f,h,p),{dom:m,update:function(l,A){n=Math.min(n,l),i=Math.max(i,l),g.fillStyle=r,g.globalAlpha=1,g.fillRect(0,0,o,f),g.fillStyle=t,g.fillText(a(l)+" "+e+" ("+a(n)+"-"+a(i)+")",u,c),g.drawImage(m,d+s,f,h-s,p,d,f,h-s,p),g.fillRect(d+h-s,f,s,p),g.fillStyle=r,g.globalAlpha=.9,g.fillRect(d+h-s,f,s,a((1-l/A)*p))}}},e}()},31713,e=>{"use strict";let t;e.s(["default",()=>du],31713);var r,n,i,a,s,o,l,u,c,d,f,h,p,m,g,A,y,x,B,C,S,E,T,b,D,M,w,F,R,I,P,L,U,G,O,H,N,k,z,j,K,J,V,Q,W,X,Z,Y,_,q,$,ee,et,er,en,ei,ea,es,eo,el,eu,ec,ed,ef,eh,ep,em,ev,eg,eA,ey,ex,eB,eC,eS,eE,eT,eb,eD,eM,ew,eF,eR,eI=e.i(43476),eP=e.i(71645),eL=e.i(18566),eU=e.i(46712);e.s(["ACESFilmicToneMapping",()=>eO.ACESFilmicToneMapping,"AddEquation",()=>eO.AddEquation,"AddOperation",()=>eO.AddOperation,"AdditiveAnimationBlendMode",()=>eO.AdditiveAnimationBlendMode,"AdditiveBlending",()=>eO.AdditiveBlending,"AgXToneMapping",()=>eO.AgXToneMapping,"AlphaFormat",()=>eO.AlphaFormat,"AlwaysCompare",()=>eO.AlwaysCompare,"AlwaysDepth",()=>eO.AlwaysDepth,"AlwaysStencilFunc",()=>eO.AlwaysStencilFunc,"AmbientLight",()=>eO.AmbientLight,"AnimationAction",()=>eO.AnimationAction,"AnimationClip",()=>eO.AnimationClip,"AnimationLoader",()=>eO.AnimationLoader,"AnimationMixer",()=>eO.AnimationMixer,"AnimationObjectGroup",()=>eO.AnimationObjectGroup,"AnimationUtils",()=>eO.AnimationUtils,"ArcCurve",()=>eO.ArcCurve,"ArrayCamera",()=>eO.ArrayCamera,"ArrowHelper",()=>eO.ArrowHelper,"AttachedBindMode",()=>eO.AttachedBindMode,"Audio",()=>eO.Audio,"AudioAnalyser",()=>eO.AudioAnalyser,"AudioContext",()=>eO.AudioContext,"AudioListener",()=>eO.AudioListener,"AudioLoader",()=>eO.AudioLoader,"AxesHelper",()=>eO.AxesHelper,"BackSide",()=>eO.BackSide,"BasicDepthPacking",()=>eO.BasicDepthPacking,"BasicShadowMap",()=>eO.BasicShadowMap,"BatchedMesh",()=>eO.BatchedMesh,"Bone",()=>eO.Bone,"BooleanKeyframeTrack",()=>eO.BooleanKeyframeTrack,"Box2",()=>eO.Box2,"Box3",()=>eO.Box3,"Box3Helper",()=>eO.Box3Helper,"BoxGeometry",()=>eO.BoxGeometry,"BoxHelper",()=>eO.BoxHelper,"BufferAttribute",()=>eO.BufferAttribute,"BufferGeometry",()=>eO.BufferGeometry,"BufferGeometryLoader",()=>eO.BufferGeometryLoader,"ByteType",()=>eO.ByteType,"Cache",()=>eO.Cache,"Camera",()=>eO.Camera,"CameraHelper",()=>eO.CameraHelper,"CanvasTexture",()=>eO.CanvasTexture,"CapsuleGeometry",()=>eO.CapsuleGeometry,"CatmullRomCurve3",()=>eO.CatmullRomCurve3,"CineonToneMapping",()=>eO.CineonToneMapping,"CircleGeometry",()=>eO.CircleGeometry,"ClampToEdgeWrapping",()=>eO.ClampToEdgeWrapping,"Clock",()=>eO.Clock,"Color",()=>eO.Color,"ColorKeyframeTrack",()=>eO.ColorKeyframeTrack,"ColorManagement",()=>eO.ColorManagement,"CompressedArrayTexture",()=>eO.CompressedArrayTexture,"CompressedCubeTexture",()=>eO.CompressedCubeTexture,"CompressedTexture",()=>eO.CompressedTexture,"CompressedTextureLoader",()=>eO.CompressedTextureLoader,"ConeGeometry",()=>eO.ConeGeometry,"ConstantAlphaFactor",()=>eO.ConstantAlphaFactor,"ConstantColorFactor",()=>eO.ConstantColorFactor,"Controls",()=>eO.Controls,"CubeCamera",()=>eO.CubeCamera,"CubeReflectionMapping",()=>eO.CubeReflectionMapping,"CubeRefractionMapping",()=>eO.CubeRefractionMapping,"CubeTexture",()=>eO.CubeTexture,"CubeTextureLoader",()=>eO.CubeTextureLoader,"CubeUVReflectionMapping",()=>eO.CubeUVReflectionMapping,"CubicBezierCurve",()=>eO.CubicBezierCurve,"CubicBezierCurve3",()=>eO.CubicBezierCurve3,"CubicInterpolant",()=>eO.CubicInterpolant,"CullFaceBack",()=>eO.CullFaceBack,"CullFaceFront",()=>eO.CullFaceFront,"CullFaceFrontBack",()=>eO.CullFaceFrontBack,"CullFaceNone",()=>eO.CullFaceNone,"Curve",()=>eO.Curve,"CurvePath",()=>eO.CurvePath,"CustomBlending",()=>eO.CustomBlending,"CustomToneMapping",()=>eO.CustomToneMapping,"CylinderGeometry",()=>eO.CylinderGeometry,"Cylindrical",()=>eO.Cylindrical,"Data3DTexture",()=>eO.Data3DTexture,"DataArrayTexture",()=>eO.DataArrayTexture,"DataTexture",()=>eO.DataTexture,"DataTextureLoader",()=>eO.DataTextureLoader,"DataUtils",()=>eO.DataUtils,"DecrementStencilOp",()=>eO.DecrementStencilOp,"DecrementWrapStencilOp",()=>eO.DecrementWrapStencilOp,"DefaultLoadingManager",()=>eO.DefaultLoadingManager,"DepthFormat",()=>eO.DepthFormat,"DepthStencilFormat",()=>eO.DepthStencilFormat,"DepthTexture",()=>eO.DepthTexture,"DetachedBindMode",()=>eO.DetachedBindMode,"DirectionalLight",()=>eO.DirectionalLight,"DirectionalLightHelper",()=>eO.DirectionalLightHelper,"DiscreteInterpolant",()=>eO.DiscreteInterpolant,"DodecahedronGeometry",()=>eO.DodecahedronGeometry,"DoubleSide",()=>eO.DoubleSide,"DstAlphaFactor",()=>eO.DstAlphaFactor,"DstColorFactor",()=>eO.DstColorFactor,"DynamicCopyUsage",()=>eO.DynamicCopyUsage,"DynamicDrawUsage",()=>eO.DynamicDrawUsage,"DynamicReadUsage",()=>eO.DynamicReadUsage,"EdgesGeometry",()=>eO.EdgesGeometry,"EllipseCurve",()=>eO.EllipseCurve,"EqualCompare",()=>eO.EqualCompare,"EqualDepth",()=>eO.EqualDepth,"EqualStencilFunc",()=>eO.EqualStencilFunc,"EquirectangularReflectionMapping",()=>eO.EquirectangularReflectionMapping,"EquirectangularRefractionMapping",()=>eO.EquirectangularRefractionMapping,"Euler",()=>eO.Euler,"EventDispatcher",()=>eO.EventDispatcher,"ExternalTexture",()=>eO.ExternalTexture,"ExtrudeGeometry",()=>eO.ExtrudeGeometry,"FileLoader",()=>eO.FileLoader,"Float16BufferAttribute",()=>eO.Float16BufferAttribute,"Float32BufferAttribute",()=>eO.Float32BufferAttribute,"FloatType",()=>eO.FloatType,"Fog",()=>eO.Fog,"FogExp2",()=>eO.FogExp2,"FramebufferTexture",()=>eO.FramebufferTexture,"FrontSide",()=>eO.FrontSide,"Frustum",()=>eO.Frustum,"FrustumArray",()=>eO.FrustumArray,"GLBufferAttribute",()=>eO.GLBufferAttribute,"GLSL1",()=>eO.GLSL1,"GLSL3",()=>eO.GLSL3,"GreaterCompare",()=>eO.GreaterCompare,"GreaterDepth",()=>eO.GreaterDepth,"GreaterEqualCompare",()=>eO.GreaterEqualCompare,"GreaterEqualDepth",()=>eO.GreaterEqualDepth,"GreaterEqualStencilFunc",()=>eO.GreaterEqualStencilFunc,"GreaterStencilFunc",()=>eO.GreaterStencilFunc,"GridHelper",()=>eO.GridHelper,"Group",()=>eO.Group,"HalfFloatType",()=>eO.HalfFloatType,"HemisphereLight",()=>eO.HemisphereLight,"HemisphereLightHelper",()=>eO.HemisphereLightHelper,"IcosahedronGeometry",()=>eO.IcosahedronGeometry,"ImageBitmapLoader",()=>eO.ImageBitmapLoader,"ImageLoader",()=>eO.ImageLoader,"ImageUtils",()=>eO.ImageUtils,"IncrementStencilOp",()=>eO.IncrementStencilOp,"IncrementWrapStencilOp",()=>eO.IncrementWrapStencilOp,"InstancedBufferAttribute",()=>eO.InstancedBufferAttribute,"InstancedBufferGeometry",()=>eO.InstancedBufferGeometry,"InstancedInterleavedBuffer",()=>eO.InstancedInterleavedBuffer,"InstancedMesh",()=>eO.InstancedMesh,"Int16BufferAttribute",()=>eO.Int16BufferAttribute,"Int32BufferAttribute",()=>eO.Int32BufferAttribute,"Int8BufferAttribute",()=>eO.Int8BufferAttribute,"IntType",()=>eO.IntType,"InterleavedBuffer",()=>eO.InterleavedBuffer,"InterleavedBufferAttribute",()=>eO.InterleavedBufferAttribute,"Interpolant",()=>eO.Interpolant,"InterpolateDiscrete",()=>eO.InterpolateDiscrete,"InterpolateLinear",()=>eO.InterpolateLinear,"InterpolateSmooth",()=>eO.InterpolateSmooth,"InterpolationSamplingMode",()=>eO.InterpolationSamplingMode,"InterpolationSamplingType",()=>eO.InterpolationSamplingType,"InvertStencilOp",()=>eO.InvertStencilOp,"KeepStencilOp",()=>eO.KeepStencilOp,"KeyframeTrack",()=>eO.KeyframeTrack,"LOD",()=>eO.LOD,"LatheGeometry",()=>eO.LatheGeometry,"Layers",()=>eO.Layers,"LessCompare",()=>eO.LessCompare,"LessDepth",()=>eO.LessDepth,"LessEqualCompare",()=>eO.LessEqualCompare,"LessEqualDepth",()=>eO.LessEqualDepth,"LessEqualStencilFunc",()=>eO.LessEqualStencilFunc,"LessStencilFunc",()=>eO.LessStencilFunc,"Light",()=>eO.Light,"LightProbe",()=>eO.LightProbe,"Line",()=>eO.Line,"Line3",()=>eO.Line3,"LineBasicMaterial",()=>eO.LineBasicMaterial,"LineCurve",()=>eO.LineCurve,"LineCurve3",()=>eO.LineCurve3,"LineDashedMaterial",()=>eO.LineDashedMaterial,"LineLoop",()=>eO.LineLoop,"LineSegments",()=>eO.LineSegments,"LinearFilter",()=>eO.LinearFilter,"LinearInterpolant",()=>eO.LinearInterpolant,"LinearMipMapLinearFilter",()=>eO.LinearMipMapLinearFilter,"LinearMipMapNearestFilter",()=>eO.LinearMipMapNearestFilter,"LinearMipmapLinearFilter",()=>eO.LinearMipmapLinearFilter,"LinearMipmapNearestFilter",()=>eO.LinearMipmapNearestFilter,"LinearSRGBColorSpace",()=>eO.LinearSRGBColorSpace,"LinearToneMapping",()=>eO.LinearToneMapping,"LinearTransfer",()=>eO.LinearTransfer,"Loader",()=>eO.Loader,"LoaderUtils",()=>eO.LoaderUtils,"LoadingManager",()=>eO.LoadingManager,"LoopOnce",()=>eO.LoopOnce,"LoopPingPong",()=>eO.LoopPingPong,"LoopRepeat",()=>eO.LoopRepeat,"MOUSE",()=>eO.MOUSE,"Material",()=>eO.Material,"MaterialLoader",()=>eO.MaterialLoader,"MathUtils",()=>eO.MathUtils,"Matrix2",()=>eO.Matrix2,"Matrix3",()=>eO.Matrix3,"Matrix4",()=>eO.Matrix4,"MaxEquation",()=>eO.MaxEquation,"Mesh",()=>eO.Mesh,"MeshBasicMaterial",()=>eO.MeshBasicMaterial,"MeshDepthMaterial",()=>eO.MeshDepthMaterial,"MeshDistanceMaterial",()=>eO.MeshDistanceMaterial,"MeshLambertMaterial",()=>eO.MeshLambertMaterial,"MeshMatcapMaterial",()=>eO.MeshMatcapMaterial,"MeshNormalMaterial",()=>eO.MeshNormalMaterial,"MeshPhongMaterial",()=>eO.MeshPhongMaterial,"MeshPhysicalMaterial",()=>eO.MeshPhysicalMaterial,"MeshStandardMaterial",()=>eO.MeshStandardMaterial,"MeshToonMaterial",()=>eO.MeshToonMaterial,"MinEquation",()=>eO.MinEquation,"MirroredRepeatWrapping",()=>eO.MirroredRepeatWrapping,"MixOperation",()=>eO.MixOperation,"MultiplyBlending",()=>eO.MultiplyBlending,"MultiplyOperation",()=>eO.MultiplyOperation,"NearestFilter",()=>eO.NearestFilter,"NearestMipMapLinearFilter",()=>eO.NearestMipMapLinearFilter,"NearestMipMapNearestFilter",()=>eO.NearestMipMapNearestFilter,"NearestMipmapLinearFilter",()=>eO.NearestMipmapLinearFilter,"NearestMipmapNearestFilter",()=>eO.NearestMipmapNearestFilter,"NeutralToneMapping",()=>eO.NeutralToneMapping,"NeverCompare",()=>eO.NeverCompare,"NeverDepth",()=>eO.NeverDepth,"NeverStencilFunc",()=>eO.NeverStencilFunc,"NoBlending",()=>eO.NoBlending,"NoColorSpace",()=>eO.NoColorSpace,"NoToneMapping",()=>eO.NoToneMapping,"NormalAnimationBlendMode",()=>eO.NormalAnimationBlendMode,"NormalBlending",()=>eO.NormalBlending,"NotEqualCompare",()=>eO.NotEqualCompare,"NotEqualDepth",()=>eO.NotEqualDepth,"NotEqualStencilFunc",()=>eO.NotEqualStencilFunc,"NumberKeyframeTrack",()=>eO.NumberKeyframeTrack,"Object3D",()=>eO.Object3D,"ObjectLoader",()=>eO.ObjectLoader,"ObjectSpaceNormalMap",()=>eO.ObjectSpaceNormalMap,"OctahedronGeometry",()=>eO.OctahedronGeometry,"OneFactor",()=>eO.OneFactor,"OneMinusConstantAlphaFactor",()=>eO.OneMinusConstantAlphaFactor,"OneMinusConstantColorFactor",()=>eO.OneMinusConstantColorFactor,"OneMinusDstAlphaFactor",()=>eO.OneMinusDstAlphaFactor,"OneMinusDstColorFactor",()=>eO.OneMinusDstColorFactor,"OneMinusSrcAlphaFactor",()=>eO.OneMinusSrcAlphaFactor,"OneMinusSrcColorFactor",()=>eO.OneMinusSrcColorFactor,"OrthographicCamera",()=>eO.OrthographicCamera,"PCFShadowMap",()=>eO.PCFShadowMap,"PCFSoftShadowMap",()=>eO.PCFSoftShadowMap,"PMREMGenerator",()=>eG.PMREMGenerator,"Path",()=>eO.Path,"PerspectiveCamera",()=>eO.PerspectiveCamera,"Plane",()=>eO.Plane,"PlaneGeometry",()=>eO.PlaneGeometry,"PlaneHelper",()=>eO.PlaneHelper,"PointLight",()=>eO.PointLight,"PointLightHelper",()=>eO.PointLightHelper,"Points",()=>eO.Points,"PointsMaterial",()=>eO.PointsMaterial,"PolarGridHelper",()=>eO.PolarGridHelper,"PolyhedronGeometry",()=>eO.PolyhedronGeometry,"PositionalAudio",()=>eO.PositionalAudio,"PropertyBinding",()=>eO.PropertyBinding,"PropertyMixer",()=>eO.PropertyMixer,"QuadraticBezierCurve",()=>eO.QuadraticBezierCurve,"QuadraticBezierCurve3",()=>eO.QuadraticBezierCurve3,"Quaternion",()=>eO.Quaternion,"QuaternionKeyframeTrack",()=>eO.QuaternionKeyframeTrack,"QuaternionLinearInterpolant",()=>eO.QuaternionLinearInterpolant,"RED_GREEN_RGTC2_Format",()=>eO.RED_GREEN_RGTC2_Format,"RED_RGTC1_Format",()=>eO.RED_RGTC1_Format,"REVISION",()=>eO.REVISION,"RGBADepthPacking",()=>eO.RGBADepthPacking,"RGBAFormat",()=>eO.RGBAFormat,"RGBAIntegerFormat",()=>eO.RGBAIntegerFormat,"RGBA_ASTC_10x10_Format",()=>eO.RGBA_ASTC_10x10_Format,"RGBA_ASTC_10x5_Format",()=>eO.RGBA_ASTC_10x5_Format,"RGBA_ASTC_10x6_Format",()=>eO.RGBA_ASTC_10x6_Format,"RGBA_ASTC_10x8_Format",()=>eO.RGBA_ASTC_10x8_Format,"RGBA_ASTC_12x10_Format",()=>eO.RGBA_ASTC_12x10_Format,"RGBA_ASTC_12x12_Format",()=>eO.RGBA_ASTC_12x12_Format,"RGBA_ASTC_4x4_Format",()=>eO.RGBA_ASTC_4x4_Format,"RGBA_ASTC_5x4_Format",()=>eO.RGBA_ASTC_5x4_Format,"RGBA_ASTC_5x5_Format",()=>eO.RGBA_ASTC_5x5_Format,"RGBA_ASTC_6x5_Format",()=>eO.RGBA_ASTC_6x5_Format,"RGBA_ASTC_6x6_Format",()=>eO.RGBA_ASTC_6x6_Format,"RGBA_ASTC_8x5_Format",()=>eO.RGBA_ASTC_8x5_Format,"RGBA_ASTC_8x6_Format",()=>eO.RGBA_ASTC_8x6_Format,"RGBA_ASTC_8x8_Format",()=>eO.RGBA_ASTC_8x8_Format,"RGBA_BPTC_Format",()=>eO.RGBA_BPTC_Format,"RGBA_ETC2_EAC_Format",()=>eO.RGBA_ETC2_EAC_Format,"RGBA_PVRTC_2BPPV1_Format",()=>eO.RGBA_PVRTC_2BPPV1_Format,"RGBA_PVRTC_4BPPV1_Format",()=>eO.RGBA_PVRTC_4BPPV1_Format,"RGBA_S3TC_DXT1_Format",()=>eO.RGBA_S3TC_DXT1_Format,"RGBA_S3TC_DXT3_Format",()=>eO.RGBA_S3TC_DXT3_Format,"RGBA_S3TC_DXT5_Format",()=>eO.RGBA_S3TC_DXT5_Format,"RGBDepthPacking",()=>eO.RGBDepthPacking,"RGBFormat",()=>eO.RGBFormat,"RGBIntegerFormat",()=>eO.RGBIntegerFormat,"RGB_BPTC_SIGNED_Format",()=>eO.RGB_BPTC_SIGNED_Format,"RGB_BPTC_UNSIGNED_Format",()=>eO.RGB_BPTC_UNSIGNED_Format,"RGB_ETC1_Format",()=>eO.RGB_ETC1_Format,"RGB_ETC2_Format",()=>eO.RGB_ETC2_Format,"RGB_PVRTC_2BPPV1_Format",()=>eO.RGB_PVRTC_2BPPV1_Format,"RGB_PVRTC_4BPPV1_Format",()=>eO.RGB_PVRTC_4BPPV1_Format,"RGB_S3TC_DXT1_Format",()=>eO.RGB_S3TC_DXT1_Format,"RGDepthPacking",()=>eO.RGDepthPacking,"RGFormat",()=>eO.RGFormat,"RGIntegerFormat",()=>eO.RGIntegerFormat,"RawShaderMaterial",()=>eO.RawShaderMaterial,"Ray",()=>eO.Ray,"Raycaster",()=>eO.Raycaster,"RectAreaLight",()=>eO.RectAreaLight,"RedFormat",()=>eO.RedFormat,"RedIntegerFormat",()=>eO.RedIntegerFormat,"ReinhardToneMapping",()=>eO.ReinhardToneMapping,"RenderTarget",()=>eO.RenderTarget,"RenderTarget3D",()=>eO.RenderTarget3D,"RepeatWrapping",()=>eO.RepeatWrapping,"ReplaceStencilOp",()=>eO.ReplaceStencilOp,"ReverseSubtractEquation",()=>eO.ReverseSubtractEquation,"RingGeometry",()=>eO.RingGeometry,"SIGNED_RED_GREEN_RGTC2_Format",()=>eO.SIGNED_RED_GREEN_RGTC2_Format,"SIGNED_RED_RGTC1_Format",()=>eO.SIGNED_RED_RGTC1_Format,"SRGBColorSpace",()=>eO.SRGBColorSpace,"SRGBTransfer",()=>eO.SRGBTransfer,"Scene",()=>eO.Scene,"ShaderChunk",()=>eG.ShaderChunk,"ShaderLib",()=>eG.ShaderLib,"ShaderMaterial",()=>eO.ShaderMaterial,"ShadowMaterial",()=>eO.ShadowMaterial,"Shape",()=>eO.Shape,"ShapeGeometry",()=>eO.ShapeGeometry,"ShapePath",()=>eO.ShapePath,"ShapeUtils",()=>eO.ShapeUtils,"ShortType",()=>eO.ShortType,"Skeleton",()=>eO.Skeleton,"SkeletonHelper",()=>eO.SkeletonHelper,"SkinnedMesh",()=>eO.SkinnedMesh,"Source",()=>eO.Source,"Sphere",()=>eO.Sphere,"SphereGeometry",()=>eO.SphereGeometry,"Spherical",()=>eO.Spherical,"SphericalHarmonics3",()=>eO.SphericalHarmonics3,"SplineCurve",()=>eO.SplineCurve,"SpotLight",()=>eO.SpotLight,"SpotLightHelper",()=>eO.SpotLightHelper,"Sprite",()=>eO.Sprite,"SpriteMaterial",()=>eO.SpriteMaterial,"SrcAlphaFactor",()=>eO.SrcAlphaFactor,"SrcAlphaSaturateFactor",()=>eO.SrcAlphaSaturateFactor,"SrcColorFactor",()=>eO.SrcColorFactor,"StaticCopyUsage",()=>eO.StaticCopyUsage,"StaticDrawUsage",()=>eO.StaticDrawUsage,"StaticReadUsage",()=>eO.StaticReadUsage,"StereoCamera",()=>eO.StereoCamera,"StreamCopyUsage",()=>eO.StreamCopyUsage,"StreamDrawUsage",()=>eO.StreamDrawUsage,"StreamReadUsage",()=>eO.StreamReadUsage,"StringKeyframeTrack",()=>eO.StringKeyframeTrack,"SubtractEquation",()=>eO.SubtractEquation,"SubtractiveBlending",()=>eO.SubtractiveBlending,"TOUCH",()=>eO.TOUCH,"TangentSpaceNormalMap",()=>eO.TangentSpaceNormalMap,"TetrahedronGeometry",()=>eO.TetrahedronGeometry,"Texture",()=>eO.Texture,"TextureLoader",()=>eO.TextureLoader,"TextureUtils",()=>eO.TextureUtils,"Timer",()=>eO.Timer,"TimestampQuery",()=>eO.TimestampQuery,"TorusGeometry",()=>eO.TorusGeometry,"TorusKnotGeometry",()=>eO.TorusKnotGeometry,"Triangle",()=>eO.Triangle,"TriangleFanDrawMode",()=>eO.TriangleFanDrawMode,"TriangleStripDrawMode",()=>eO.TriangleStripDrawMode,"TrianglesDrawMode",()=>eO.TrianglesDrawMode,"TubeGeometry",()=>eO.TubeGeometry,"UVMapping",()=>eO.UVMapping,"Uint16BufferAttribute",()=>eO.Uint16BufferAttribute,"Uint32BufferAttribute",()=>eO.Uint32BufferAttribute,"Uint8BufferAttribute",()=>eO.Uint8BufferAttribute,"Uint8ClampedBufferAttribute",()=>eO.Uint8ClampedBufferAttribute,"Uniform",()=>eO.Uniform,"UniformsGroup",()=>eO.UniformsGroup,"UniformsLib",()=>eG.UniformsLib,"UniformsUtils",()=>eO.UniformsUtils,"UnsignedByteType",()=>eO.UnsignedByteType,"UnsignedInt101111Type",()=>eO.UnsignedInt101111Type,"UnsignedInt248Type",()=>eO.UnsignedInt248Type,"UnsignedInt5999Type",()=>eO.UnsignedInt5999Type,"UnsignedIntType",()=>eO.UnsignedIntType,"UnsignedShort4444Type",()=>eO.UnsignedShort4444Type,"UnsignedShort5551Type",()=>eO.UnsignedShort5551Type,"UnsignedShortType",()=>eO.UnsignedShortType,"VSMShadowMap",()=>eO.VSMShadowMap,"Vector2",()=>eO.Vector2,"Vector3",()=>eO.Vector3,"Vector4",()=>eO.Vector4,"VectorKeyframeTrack",()=>eO.VectorKeyframeTrack,"VideoFrameTexture",()=>eO.VideoFrameTexture,"VideoTexture",()=>eO.VideoTexture,"WebGL3DRenderTarget",()=>eO.WebGL3DRenderTarget,"WebGLArrayRenderTarget",()=>eO.WebGLArrayRenderTarget,"WebGLCoordinateSystem",()=>eO.WebGLCoordinateSystem,"WebGLCubeRenderTarget",()=>eO.WebGLCubeRenderTarget,"WebGLRenderTarget",()=>eO.WebGLRenderTarget,"WebGLRenderer",()=>eG.WebGLRenderer,"WebGLUtils",()=>eG.WebGLUtils,"WebGPUCoordinateSystem",()=>eO.WebGPUCoordinateSystem,"WebXRController",()=>eO.WebXRController,"WireframeGeometry",()=>eO.WireframeGeometry,"WrapAroundEnding",()=>eO.WrapAroundEnding,"ZeroCurvatureEnding",()=>eO.ZeroCurvatureEnding,"ZeroFactor",()=>eO.ZeroFactor,"ZeroSlopeEnding",()=>eO.ZeroSlopeEnding,"ZeroStencilOp",()=>eO.ZeroStencilOp,"createCanvasElement",()=>eO.createCanvasElement],32009);var eG=e.i(8560),eO=e.i(90072),eH=e.i(32009);function eN(e,t){let r;return function(){for(var n=arguments.length,i=Array(n),a=0;a<n;a++)i[a]=arguments[a];window.clearTimeout(r),r=window.setTimeout(()=>e(...i),t)}}let ek=["x","y","top","bottom","left","right","width","height"];var ez=e.i(46791);function ej(e){let{ref:t,children:r,fallback:n,resize:i,style:a,gl:s,events:o=eU.f,eventSource:l,eventPrefix:u,shadows:c,linear:d,flat:f,legacy:h,orthographic:p,frameloop:m,dpr:g,performance:A,raycaster:y,camera:x,scene:B,onPointerMissed:C,onCreated:S,...E}=e;eP.useMemo(()=>(0,eU.e)(eH),[]);let T=(0,eU.u)(),[b,D]=function(){var e,t,r;let{debounce:n,scroll:i,polyfill:a,offsetSize:s}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{debounce:0,scroll:!1,offsetSize:!1},o=a||("undefined"==typeof window?class{}:window.ResizeObserver);if(!o)throw Error("This browser does not support ResizeObserver out of the box. See: https://github.com/react-spring/react-use-measure/#resize-observer-polyfills");let[l,u]=(0,eP.useState)({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),c=(0,eP.useRef)({element:null,scrollContainers:null,resizeObserver:null,lastBounds:l,orientationHandler:null}),d=n?"number"==typeof n?n:n.scroll:null,f=n?"number"==typeof n?n:n.resize:null,h=(0,eP.useRef)(!1);(0,eP.useEffect)(()=>(h.current=!0,()=>void(h.current=!1)));let[p,m,g]=(0,eP.useMemo)(()=>{let e=()=>{let e,t;if(!c.current.element)return;let{left:r,top:n,width:i,height:a,bottom:o,right:l,x:d,y:f}=c.current.element.getBoundingClientRect(),p={left:r,top:n,width:i,height:a,bottom:o,right:l,x:d,y:f};c.current.element instanceof HTMLElement&&s&&(p.height=c.current.element.offsetHeight,p.width=c.current.element.offsetWidth),Object.freeze(p),h.current&&(e=c.current.lastBounds,t=p,!ek.every(r=>e[r]===t[r]))&&u(c.current.lastBounds=p)};return[e,f?eN(e,f):e,d?eN(e,d):e]},[u,s,d,f]);function A(){c.current.scrollContainers&&(c.current.scrollContainers.forEach(e=>e.removeEventListener("scroll",g,!0)),c.current.scrollContainers=null),c.current.resizeObserver&&(c.current.resizeObserver.disconnect(),c.current.resizeObserver=null),c.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",c.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",c.current.orientationHandler))}function y(){c.current.element&&(c.current.resizeObserver=new o(g),c.current.resizeObserver.observe(c.current.element),i&&c.current.scrollContainers&&c.current.scrollContainers.forEach(e=>e.addEventListener("scroll",g,{capture:!0,passive:!0})),c.current.orientationHandler=()=>{g()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",c.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",c.current.orientationHandler))}return e=g,t=!!i,(0,eP.useEffect)(()=>{if(t)return window.addEventListener("scroll",e,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",e,!0)},[e,t]),r=m,(0,eP.useEffect)(()=>(window.addEventListener("resize",r),()=>void window.removeEventListener("resize",r)),[r]),(0,eP.useEffect)(()=>{A(),y()},[i,g,m]),(0,eP.useEffect)(()=>A,[]),[e=>{e&&e!==c.current.element&&(A(),c.current.element=e,c.current.scrollContainers=function e(t){let r=[];if(!t||t===document.body)return r;let{overflow:n,overflowX:i,overflowY:a}=window.getComputedStyle(t);return[n,i,a].some(e=>"auto"===e||"scroll"===e)&&r.push(t),[...r,...e(t.parentElement)]}(e),y())},l,p]}({scroll:!0,debounce:{scroll:50,resize:0},...i}),M=eP.useRef(null),w=eP.useRef(null);eP.useImperativeHandle(t,()=>M.current);let F=(0,eU.a)(C),[R,I]=eP.useState(!1),[P,L]=eP.useState(!1);if(R)throw R;if(P)throw P;let U=eP.useRef(null);(0,eU.b)(()=>{let e=M.current;D.width>0&&D.height>0&&e&&(U.current||(U.current=(0,eU.c)(e)),async function(){await U.current.configure({gl:s,scene:B,events:o,shadows:c,linear:d,flat:f,legacy:h,orthographic:p,frameloop:m,dpr:g,performance:A,raycaster:y,camera:x,size:D,onPointerMissed:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return null==F.current?void 0:F.current(...t)},onCreated:e=>{null==e.events.connect||e.events.connect(l?(0,eU.i)(l)?l.current:l:w.current),u&&e.setEvents({compute:(e,t)=>{let r=e[u+"X"],n=e[u+"Y"];t.pointer.set(r/t.size.width*2-1,-(2*(n/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)}}),null==S||S(e)}}),U.current.render((0,eI.jsx)(T,{children:(0,eI.jsx)(eU.E,{set:L,children:(0,eI.jsx)(eP.Suspense,{fallback:(0,eI.jsx)(eU.B,{set:I}),children:null!=r?r:null})})}))}())}),eP.useEffect(()=>{let e=M.current;if(e)return()=>(0,eU.d)(e)},[]);let G=l?"none":"auto";return(0,eI.jsx)("div",{ref:w,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:G,...a},...E,children:(0,eI.jsx)("div",{ref:b,style:{width:"100%",height:"100%"},children:(0,eI.jsx)("canvas",{ref:M,style:{display:"block"},children:n})})})}function eK(e){return(0,eI.jsx)(ez.FiberProvider,{children:(0,eI.jsx)(ej,{...e})})}e.i(39695),e.i(98133),e.i(95087);var eJ=e.i(16096),eV=e.i(5230),eQ=e.i(80520),eW=eO,eX=class{get autoReset(){return this._autoReset}set autoReset(e){"undefined"!=typeof document&&void 0!==document.hidden&&(e?document.addEventListener("visibilitychange",this):document.removeEventListener("visibilitychange",this),this._autoReset=e)}get delta(){return .001*this._delta}get fixedDelta(){return .001*this._fixedDelta}set fixedDelta(e){this._fixedDelta=1e3*e}get elapsed(){return .001*this._elapsed}update(e){this.useFixedDelta?this._delta=this.fixedDelta:(this.previousTime=this.currentTime,this.currentTime=(void 0!==e?e:performance.now())-this.startTime,this._delta=this.currentTime-this.previousTime),this._delta*=this.timescale,this._elapsed+=this._delta}reset(){this._delta=0,this._elapsed=0,this.currentTime=performance.now()-this.startTime}getDelta(){return this.delta}getElapsed(){return this.elapsed}handleEvent(e){document.hidden||(this.currentTime=performance.now()-this.startTime)}dispose(){this.autoReset=!1}constructor(){this.startTime=performance.now(),this.previousTime=0,this.currentTime=0,this._delta=0,this._elapsed=0,this._fixedDelta=1e3/60,this.timescale=1,this.useFixedDelta=!1,this._autoReset=!1}},eZ=(()=>{let e=new Float32Array([-1,-1,0,3,-1,0,-1,3,0]),t=new Float32Array([0,0,2,0,0,2]),r=new eW.BufferGeometry;return r.setAttribute("position",new eW.BufferAttribute(e,3)),r.setAttribute("uv",new eW.BufferAttribute(t,2)),r})(),eY=class e{static get fullscreenGeometry(){return eZ}get renderToScreen(){return!this.rtt}set renderToScreen(e){if(this.rtt===e){let t=this.fullscreenMaterial;null!==t&&(t.needsUpdate=!0),this.rtt=!e}}set mainScene(e){}set mainCamera(e){}setRenderer(e){this.renderer=e}isEnabled(){return this.enabled}setEnabled(e){this.enabled=e}get fullscreenMaterial(){return null!==this.screen?this.screen.material:null}set fullscreenMaterial(t){let r=this.screen;null!==r?r.material=t:((r=new eW.Mesh(e.fullscreenGeometry,t)).frustumCulled=!1,null===this.scene&&(this.scene=new eW.Scene),this.scene.add(r),this.screen=r)}getFullscreenMaterial(){return this.fullscreenMaterial}setFullscreenMaterial(e){this.fullscreenMaterial=e}getDepthTexture(){return null}setDepthTexture(e){arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.BasicDepthPacking}render(e,t,r,n,i){throw Error("Render method not implemented!")}setSize(e,t){}initialize(e,t,r){}dispose(){for(let t of Object.keys(this)){let r=this[t];(r instanceof eW.WebGLRenderTarget||r instanceof eW.Material||r instanceof eW.Texture||r instanceof e)&&this[t].dispose()}null!==this.fullscreenMaterial&&this.fullscreenMaterial.dispose()}constructor(e="Pass",t=new eW.Scene,r=new eW.OrthographicCamera){this.name=e,this.renderer=null,this.scene=t,this.camera=r,this.screen=null,this.rtt=!0,this.needsSwap=!0,this.needsDepthTexture=!1,this.enabled=!0}},e_=class extends eY{render(e,t,r,n,i){let a=e.state.buffers.stencil;a.setLocked(!1),a.setTest(!1)}constructor(){super("ClearMaskPass",null,null),this.needsSwap=!1}},eq="varying vec2 vUv;void main(){vUv=position.xy*0.5+0.5;gl_Position=vec4(position.xy,1.0,1.0);}",e$=class extends eW.ShaderMaterial{get inputBuffer(){return this.uniforms.inputBuffer.value}set inputBuffer(e){let t=null!==e;this.colorWrite!==t&&(t?this.defines.COLOR_WRITE=!0:delete this.defines.COLOR_WRITE,this.colorWrite=t,this.needsUpdate=!0),this.uniforms.inputBuffer.value=e}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){let t=null!==e;this.depthWrite!==t&&(t?this.defines.DEPTH_WRITE=!0:delete this.defines.DEPTH_WRITE,this.depthTest=t,this.depthWrite=t,this.needsUpdate=!0),this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get channelWeights(){return this.uniforms.channelWeights.value}set channelWeights(e){null!==e?(this.defines.USE_WEIGHTS="1",this.uniforms.channelWeights.value=e):delete this.defines.USE_WEIGHTS,this.needsUpdate=!0}setInputBuffer(e){this.uniforms.inputBuffer.value=e}getOpacity(e){return this.uniforms.opacity.value}setOpacity(e){this.uniforms.opacity.value=e}constructor(){super({name:"CopyMaterial",defines:{DEPTH_PACKING:"0",COLOR_WRITE:"1"},uniforms:{inputBuffer:new eW.Uniform(null),depthBuffer:new eW.Uniform(null),channelWeights:new eW.Uniform(null),opacity:new eW.Uniform(1)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#ifdef COLOR_WRITE\n#include <common>\n#include <dithering_pars_fragment>\n#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\n#endif\n#ifdef DEPTH_WRITE\n#include <packing>\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\nfloat readDepth(const in vec2 uv){\n#if DEPTH_PACKING == 3201\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nreturn texture2D(depthBuffer,uv).r;\n#endif\n}\n#endif\n#ifdef USE_WEIGHTS\nuniform vec4 channelWeights;\n#endif\nuniform float opacity;varying vec2 vUv;void main(){\n#ifdef COLOR_WRITE\nvec4 texel=texture2D(inputBuffer,vUv);\n#ifdef USE_WEIGHTS\ntexel*=channelWeights;\n#endif\ngl_FragColor=opacity*texel;\n#ifdef COLOR_SPACE_CONVERSION\n#include <colorspace_fragment>\n#endif\n#include <dithering_fragment>\n#else\ngl_FragColor=vec4(0.0);\n#endif\n#ifdef DEPTH_WRITE\ngl_FragDepth=readDepth(vUv);\n#endif\n}",vertexShader:eq}),this.depthFunc=eW.AlwaysDepth}},e0=class extends eY{get resize(){return this.autoResize}set resize(e){this.autoResize=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}setAutoResizeEnabled(e){this.autoResize=e}render(e,t,r,n,i){this.fullscreenMaterial.inputBuffer=t.texture,e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){this.autoResize&&this.renderTarget.setSize(e,t)}initialize(e,t,r){void 0!==r&&(this.renderTarget.texture.type=r,r!==eW.UnsignedByteType?this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1":null!==e&&e.outputColorSpace===eW.SRGBColorSpace&&(this.renderTarget.texture.colorSpace=eW.SRGBColorSpace))}constructor(e,t=!0){super("CopyPass"),this.fullscreenMaterial=new e$,this.needsSwap=!1,this.renderTarget=e,void 0===e&&(this.renderTarget=new eW.WebGLRenderTarget(1,1,{minFilter:eW.LinearFilter,magFilter:eW.LinearFilter,stencilBuffer:!1,depthBuffer:!1}),this.renderTarget.texture.name="CopyPass.Target"),this.autoResize=t}},e1=new eW.Color,e2=class extends eY{setClearFlags(e,t,r){this.color=e,this.depth=t,this.stencil=r}getOverrideClearColor(){return this.overrideClearColor}setOverrideClearColor(e){this.overrideClearColor=e}getOverrideClearAlpha(){return this.overrideClearAlpha}setOverrideClearAlpha(e){this.overrideClearAlpha=e}render(e,t,r,n,i){let a=this.overrideClearColor,s=this.overrideClearAlpha,o=e.getClearAlpha(),l=null!==a,u=s>=0;l?(e.getClearColor(e1),e.setClearColor(a,u?s:o)):u&&e.setClearAlpha(s),e.setRenderTarget(this.renderToScreen?null:t),e.clear(this.color,this.depth,this.stencil),l?e.setClearColor(e1,o):u&&e.setClearAlpha(o)}constructor(e=!0,t=!0,r=!1){super("ClearPass",null,null),this.needsSwap=!1,this.color=e,this.depth=t,this.stencil=r,this.overrideClearColor=null,this.overrideClearAlpha=-1}},e9=class extends eY{set mainScene(e){this.scene=e}set mainCamera(e){this.camera=e}get inverted(){return this.inverse}set inverted(e){this.inverse=e}get clear(){return this.clearPass.enabled}set clear(e){this.clearPass.enabled=e}getClearPass(){return this.clearPass}isInverted(){return this.inverted}setInverted(e){this.inverted=e}render(e,t,r,n,i){let a=e.getContext(),s=e.state.buffers,o=this.scene,l=this.camera,u=this.clearPass,c=+!this.inverted;s.color.setMask(!1),s.depth.setMask(!1),s.color.setLocked(!0),s.depth.setLocked(!0),s.stencil.setTest(!0),s.stencil.setOp(a.REPLACE,a.REPLACE,a.REPLACE),s.stencil.setFunc(a.ALWAYS,c,0xffffffff),s.stencil.setClear(1-c),s.stencil.setLocked(!0),this.clearPass.enabled&&(this.renderToScreen?u.render(e,null):(u.render(e,t),u.render(e,r))),this.renderToScreen?e.setRenderTarget(null):(e.setRenderTarget(t),e.render(o,l),e.setRenderTarget(r)),e.render(o,l),s.color.setLocked(!1),s.depth.setLocked(!1),s.stencil.setLocked(!1),s.stencil.setFunc(a.EQUAL,1,0xffffffff),s.stencil.setOp(a.KEEP,a.KEEP,a.KEEP),s.stencil.setLocked(!0)}constructor(e,t){super("MaskPass",e,t),this.needsSwap=!1,this.clearPass=new e2(!1,!1,!0),this.inverse=!1}},e3=class{get multisampling(){return this.inputBuffer.samples||0}set multisampling(e){let t=this.inputBuffer,r=this.multisampling;r>0&&e>0?(this.inputBuffer.samples=e,this.outputBuffer.samples=e,this.inputBuffer.dispose(),this.outputBuffer.dispose()):r!==e&&(this.inputBuffer.dispose(),this.outputBuffer.dispose(),this.inputBuffer=this.createBuffer(t.depthBuffer,t.stencilBuffer,t.texture.type,e),this.inputBuffer.depthTexture=this.depthTexture,this.outputBuffer=this.inputBuffer.clone())}getTimer(){return this.timer}getRenderer(){return this.renderer}setRenderer(e){if(this.renderer=e,null!==e){let t=e.getSize(new eW.Vector2),r=e.getContext().getContextAttributes().alpha,n=this.inputBuffer.texture.type;for(let i of(n===eW.UnsignedByteType&&e.outputColorSpace===eW.SRGBColorSpace&&(this.inputBuffer.texture.colorSpace=eW.SRGBColorSpace,this.outputBuffer.texture.colorSpace=eW.SRGBColorSpace,this.inputBuffer.dispose(),this.outputBuffer.dispose()),e.autoClear=!1,this.setSize(t.width,t.height),this.passes))i.initialize(e,r,n)}}replaceRenderer(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],r=this.renderer,n=r.domElement.parentNode;return this.setRenderer(e),t&&null!==n&&(n.removeChild(r.domElement),n.appendChild(e.domElement)),r}createDepthTexture(){let e=this.depthTexture=new eW.DepthTexture;return this.inputBuffer.depthTexture=e,this.inputBuffer.dispose(),this.inputBuffer.stencilBuffer?(e.format=eW.DepthStencilFormat,e.type=eW.UnsignedInt248Type):e.type=eW.UnsignedIntType,e}deleteDepthTexture(){if(null!==this.depthTexture)for(let e of(this.depthTexture.dispose(),this.depthTexture=null,this.inputBuffer.depthTexture=null,this.inputBuffer.dispose(),this.passes))e.setDepthTexture(null)}createBuffer(e,t,r,n){let i=this.renderer,a=null===i?new eW.Vector2:i.getDrawingBufferSize(new eW.Vector2),s={minFilter:eW.LinearFilter,magFilter:eW.LinearFilter,stencilBuffer:t,depthBuffer:e,type:r},o=new eW.WebGLRenderTarget(a.width,a.height,s);return n>0&&(o.samples=n),r===eW.UnsignedByteType&&null!==i&&i.outputColorSpace===eW.SRGBColorSpace&&(o.texture.colorSpace=eW.SRGBColorSpace),o.texture.name="EffectComposer.Buffer",o.texture.generateMipmaps=!1,o}setMainScene(e){for(let t of this.passes)t.mainScene=e}setMainCamera(e){for(let t of this.passes)t.mainCamera=e}addPass(e,t){let r=this.passes,n=this.renderer,i=n.getDrawingBufferSize(new eW.Vector2),a=n.getContext().getContextAttributes().alpha,s=this.inputBuffer.texture.type;if(e.setRenderer(n),e.setSize(i.width,i.height),e.initialize(n,a,s),this.autoRenderToScreen&&(r.length>0&&(r[r.length-1].renderToScreen=!1),e.renderToScreen&&(this.autoRenderToScreen=!1)),void 0!==t?r.splice(t,0,e):r.push(e),this.autoRenderToScreen&&(r[r.length-1].renderToScreen=!0),e.needsDepthTexture||null!==this.depthTexture)if(null===this.depthTexture){let t=this.createDepthTexture();for(e of r)e.setDepthTexture(t)}else e.setDepthTexture(this.depthTexture)}removePass(e){let t=this.passes,r=t.indexOf(e);-1!==r&&t.splice(r,1).length>0&&(null!==this.depthTexture&&(t.reduce((e,t)=>e||t.needsDepthTexture,!1)||(e.getDepthTexture()===this.depthTexture&&e.setDepthTexture(null),this.deleteDepthTexture())),this.autoRenderToScreen&&r===t.length&&(e.renderToScreen=!1,t.length>0&&(t[t.length-1].renderToScreen=!0)))}removeAllPasses(){let e=this.passes;this.deleteDepthTexture(),e.length>0&&(this.autoRenderToScreen&&(e[e.length-1].renderToScreen=!1),this.passes=[])}render(e){let t,r,n,i=this.renderer,a=this.copyPass,s=this.inputBuffer,o=this.outputBuffer,l=!1;for(let u of(void 0===e&&(this.timer.update(),e=this.timer.getDelta()),this.passes))u.enabled&&(u.render(i,s,o,e,l),u.needsSwap&&(l&&(a.renderToScreen=u.renderToScreen,t=i.getContext(),(r=i.state.buffers.stencil).setFunc(t.NOTEQUAL,1,0xffffffff),a.render(i,s,o,e,l),r.setFunc(t.EQUAL,1,0xffffffff)),n=s,s=o,o=n),u instanceof e9?l=!0:u instanceof e_&&(l=!1))}setSize(e,t,r){let n=this.renderer,i=n.getSize(new eW.Vector2);(void 0===e||void 0===t)&&(e=i.width,t=i.height),(i.width!==e||i.height!==t)&&n.setSize(e,t,r);let a=n.getDrawingBufferSize(new eW.Vector2);for(let e of(this.inputBuffer.setSize(a.width,a.height),this.outputBuffer.setSize(a.width,a.height),this.passes))e.setSize(a.width,a.height)}reset(){this.dispose(),this.autoRenderToScreen=!0}dispose(){for(let e of this.passes)e.dispose();this.passes=[],null!==this.inputBuffer&&this.inputBuffer.dispose(),null!==this.outputBuffer&&this.outputBuffer.dispose(),this.deleteDepthTexture(),this.copyPass.dispose(),this.timer.dispose(),eY.fullscreenGeometry.dispose()}constructor(e=null,{depthBuffer:t=!0,stencilBuffer:r=!1,multisampling:n=0,frameBufferType:i}={}){this.renderer=null,this.inputBuffer=this.createBuffer(t,r,i,n),this.outputBuffer=this.inputBuffer.clone(),this.copyPass=new e0,this.depthTexture=null,this.passes=[],this.timer=new eX,this.autoRenderToScreen=!0,this.setRenderer(e)}},e4={NONE:0,DEPTH:1,CONVOLUTION:2},e8={FRAGMENT_HEAD:"FRAGMENT_HEAD",FRAGMENT_MAIN_UV:"FRAGMENT_MAIN_UV",FRAGMENT_MAIN_IMAGE:"FRAGMENT_MAIN_IMAGE",VERTEX_HEAD:"VERTEX_HEAD",VERTEX_MAIN_SUPPORT:"VERTEX_MAIN_SUPPORT"},e5=class{constructor(){this.shaderParts=new Map([[e8.FRAGMENT_HEAD,null],[e8.FRAGMENT_MAIN_UV,null],[e8.FRAGMENT_MAIN_IMAGE,null],[e8.VERTEX_HEAD,null],[e8.VERTEX_MAIN_SUPPORT,null]]),this.defines=new Map,this.uniforms=new Map,this.blendModes=new Map,this.extensions=new Set,this.attributes=e4.NONE,this.varyings=new Set,this.uvTransformation=!1,this.readDepth=!1,this.colorSpace=eW.LinearSRGBColorSpace}},e6=!1,e7=class{cloneMaterial(e){if(!(e instanceof eW.ShaderMaterial))return e.clone();let t=e.uniforms,r=new Map;for(let e in t){let n=t[e].value;n.isRenderTargetTexture&&(t[e].value=null,r.set(e,n))}let n=e.clone();for(let e of r)t[e[0]].value=e[1],n.uniforms[e[0]].value=e[1];return n}setMaterial(e){if(this.disposeMaterials(),this.material=e,null!==e){let t=this.materials=[this.cloneMaterial(e),this.cloneMaterial(e),this.cloneMaterial(e)];for(let r of t)r.uniforms=Object.assign({},e.uniforms),r.side=eW.FrontSide;t[2].skinning=!0,this.materialsBackSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.side=eW.BackSide,r}),this.materialsDoubleSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.side=eW.DoubleSide,r}),this.materialsFlatShaded=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.flatShading=!0,r}),this.materialsFlatShadedBackSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.flatShading=!0,r.side=eW.BackSide,r}),this.materialsFlatShadedDoubleSide=t.map(t=>{let r=this.cloneMaterial(t);return r.uniforms=Object.assign({},e.uniforms),r.flatShading=!0,r.side=eW.DoubleSide,r})}}render(e,t,r){let n=e.shadowMap.enabled;if(e.shadowMap.enabled=!1,e6){let n=this.originalMaterials;for(let i of(this.meshCount=0,t.traverse(this.replaceMaterial),e.render(t,r),n))i[0].material=i[1];this.meshCount!==n.size&&n.clear()}else{let n=t.overrideMaterial;t.overrideMaterial=this.material,e.render(t,r),t.overrideMaterial=n}e.shadowMap.enabled=n}disposeMaterials(){if(null!==this.material)for(let e of this.materials.concat(this.materialsBackSide).concat(this.materialsDoubleSide).concat(this.materialsFlatShaded).concat(this.materialsFlatShadedBackSide).concat(this.materialsFlatShadedDoubleSide))e.dispose()}dispose(){this.originalMaterials.clear(),this.disposeMaterials()}static get workaroundEnabled(){return e6}static set workaroundEnabled(e){e6=e}constructor(e=null){this.originalMaterials=new Map,this.material=null,this.materials=null,this.materialsBackSide=null,this.materialsDoubleSide=null,this.materialsFlatShaded=null,this.materialsFlatShadedBackSide=null,this.materialsFlatShadedDoubleSide=null,this.setMaterial(e),this.meshCount=0,this.replaceMaterial=e=>{if(e.isMesh){let t;if(e.material.flatShading)switch(e.material.side){case eW.DoubleSide:t=this.materialsFlatShadedDoubleSide;break;case eW.BackSide:t=this.materialsFlatShadedBackSide;break;default:t=this.materialsFlatShaded}else switch(e.material.side){case eW.DoubleSide:t=this.materialsDoubleSide;break;case eW.BackSide:t=this.materialsBackSide;break;default:t=this.materials}this.originalMaterials.set(e,e.material),e.isSkinnedMesh?e.material=t[2]:e.isInstancedMesh?e.material=t[1]:e.material=t[0],++this.meshCount}}}},te=class extends eW.EventDispatcher{updateEffectiveSize(){let e=this.baseSize,t=this.preferredSize,r=this.effectiveSize,n=this.scale;-1!==t.width?r.width=t.width:-1!==t.height?r.width=Math.round(t.height*(e.width/Math.max(e.height,1))):r.width=Math.round(e.width*n),-1!==t.height?r.height=t.height:-1!==t.width?r.height=Math.round(t.width/Math.max(e.width/Math.max(e.height,1),1)):r.height=Math.round(e.height*n)}get width(){return this.effectiveSize.width}set width(e){this.preferredWidth=e}get height(){return this.effectiveSize.height}set height(e){this.preferredHeight=e}getWidth(){return this.width}getHeight(){return this.height}get scale(){return this.s}set scale(e){this.s!==e&&(this.s=e,this.preferredSize.setScalar(-1),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getScale(){return this.scale}setScale(e){this.scale=e}get baseWidth(){return this.baseSize.width}set baseWidth(e){this.baseSize.width!==e&&(this.baseSize.width=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseWidth(){return this.baseWidth}setBaseWidth(e){this.baseWidth=e}get baseHeight(){return this.baseSize.height}set baseHeight(e){this.baseSize.height!==e&&(this.baseSize.height=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getBaseHeight(){return this.baseHeight}setBaseHeight(e){this.baseHeight=e}setBaseSize(e,t){(this.baseSize.width!==e||this.baseSize.height!==t)&&(this.baseSize.set(e,t),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}get preferredWidth(){return this.preferredSize.width}set preferredWidth(e){this.preferredSize.width!==e&&(this.preferredSize.width=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredWidth(){return this.preferredWidth}setPreferredWidth(e){this.preferredWidth=e}get preferredHeight(){return this.preferredSize.height}set preferredHeight(e){this.preferredSize.height!==e&&(this.preferredSize.height=e,this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}getPreferredHeight(){return this.preferredHeight}setPreferredHeight(e){this.preferredHeight=e}setPreferredSize(e,t){(this.preferredSize.width!==e||this.preferredSize.height!==t)&&(this.preferredSize.set(e,t),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height))}copy(e){this.s=e.scale,this.baseSize.set(e.baseWidth,e.baseHeight),this.preferredSize.set(e.preferredWidth,e.preferredHeight),this.dispatchEvent({type:"change"}),this.resizable.setSize(this.baseSize.width,this.baseSize.height)}static get AUTO_SIZE(){return -1}constructor(e,t=-1,r=-1,n=1){super(),this.resizable=e,this.baseSize=new eW.Vector2(1,1),this.preferredSize=new eW.Vector2(t,r),this.target=this.preferredSize,this.s=n,this.effectiveSize=new eW.Vector2,this.addEventListener("change",()=>this.updateEffectiveSize()),this.updateEffectiveSize()}},tt=new class{getNextId(){return this.nextId++}reset(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return this.nextId=e,this}constructor(e=0){this.nextId=e}}(2),tr=class extends Set{get layer(){return this._layer}set layer(e){let t=this._layer;for(let r of this)r.layers.disable(t),r.layers.enable(e);this._layer=e}getLayer(){return this.layer}setLayer(e){this.layer=e}isExclusive(){return this.exclusive}setExclusive(e){this.exclusive=e}clear(){let e=this.layer;for(let t of this)t.layers.disable(e);return super.clear()}set(e){for(let t of(this.clear(),e))this.add(t);return this}indexOf(e){return this.has(e)?0:-1}add(e){return this.exclusive?e.layers.set(this.layer):e.layers.enable(this.layer),super.add(e)}delete(e){return this.has(e)&&e.layers.disable(this.layer),super.delete(e)}toggle(e){let t;return this.has(e)?(this.delete(e),t=!1):(this.add(e),t=!0),t}setVisible(e){for(let t of this)e?t.layers.enable(0):t.layers.disable(0);return this}constructor(e,t=tt.getNextId()){super(),this.exclusive=!1,this._layer=t,(this._layer<1||this._layer>31)&&(console.warn("Layer out of range, resetting to 2"),tt.reset(2),this._layer=tt.getNextId()),void 0!==e&&this.set(e)}},tn={ADD:0,ALPHA:23,AVERAGE:2,COLOR:3,COLOR_BURN:4,COLOR_DODGE:5,DARKEN:6,DIFFERENCE:7,DIVIDE:8,DST:9,EXCLUSION:10,HARD_LIGHT:11,HARD_MIX:12,HUE:13,INVERT:14,INVERT_RGB:15,LIGHTEN:16,LINEAR_BURN:17,LINEAR_DODGE:18,LINEAR_LIGHT:19,LUMINOSITY:20,MULTIPLY:21,NEGATION:22,NORMAL:23,OVERLAY:24,PIN_LIGHT:25,REFLECT:26,SATURATION:27,SCREEN:28,SOFT_LIGHT:29,SRC:30,SUBTRACT:31,VIVID_LIGHT:32},ti=new Map([[tn.ADD,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(x.rgb+y.rgb,y.a),y.a*opacity);}"],[tn.AVERAGE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4((x.rgb+y.rgb)*0.5,y.a),y.a*opacity);}"],[tn.COLOR,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(yHSL.xy,xHSL.z));return mix(x,vec4(z,y.a),y.a*opacity);}"],[tn.COLOR_BURN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 a=x.rgb,b=y.rgb;vec3 z=mix(step(0.0,b)*(1.0-min(vec3(1.0),(1.0-a)/b)),vec3(1.0),step(1.0,a));return mix(x,vec4(z,y.a),y.a*opacity);}"],[tn.COLOR_DODGE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 a=x.rgb,b=y.rgb;vec3 z=step(0.0,a)*mix(min(vec3(1.0),a/max(1.0-b,1e-9)),vec3(1.0),step(1.0,b));return mix(x,vec4(z,y.a),y.a*opacity);}"],[tn.DARKEN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(min(x.rgb,y.rgb),y.a),y.a*opacity);}"],[tn.DIFFERENCE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(abs(x.rgb-y.rgb),y.a),y.a*opacity);}"],[tn.DIVIDE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(x.rgb/max(y.rgb,1e-12),y.a),y.a*opacity);}"],[tn.DST,null],[tn.EXCLUSION,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4((x.rgb+y.rgb-2.0*x.rgb*y.rgb),y.a),y.a*opacity);}"],[tn.HARD_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 a=min(x.rgb,1.0);vec3 b=min(y.rgb,1.0);vec3 z=mix(2.0*a*b,1.0-2.0*(1.0-a)*(1.0-b),step(0.5,b));return mix(x,vec4(z,y.a),y.a*opacity);}"],[tn.HARD_MIX,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(step(1.0,x.rgb+y.rgb),y.a),y.a*opacity);}"],[tn.HUE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(yHSL.x,xHSL.yz));return mix(x,vec4(z,y.a),y.a*opacity);}"],[tn.INVERT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(1.0-y.rgb,y.a),y.a*opacity);}"],[tn.INVERT_RGB,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(y.rgb*(1.0-x.rgb),y.a),y.a*opacity);}"],[tn.LIGHTEN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(max(x.rgb,y.rgb),y.a),y.a*opacity);}"],[tn.LINEAR_BURN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(clamp(y.rgb+x.rgb-1.0,0.0,1.0),y.a),y.a*opacity);}"],[tn.LINEAR_DODGE,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(min(x.rgb+y.rgb,1.0),y.a),y.a*opacity);}"],[tn.LINEAR_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(clamp(2.0*y.rgb+x.rgb-1.0,0.0,1.0),y.a),y.a*opacity);}"],[tn.LUMINOSITY,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(xHSL.xy,yHSL.z));return mix(x,vec4(z,y.a),y.a*opacity);}"],[tn.MULTIPLY,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(x.rgb*y.rgb,y.a),y.a*opacity);}"],[tn.NEGATION,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(1.0-abs(1.0-x.rgb-y.rgb),y.a),y.a*opacity);}"],[tn.NORMAL,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,y,y.a*opacity);}"],[tn.OVERLAY,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 z=mix(2.0*y.rgb*x.rgb,1.0-2.0*(1.0-y.rgb)*(1.0-x.rgb),step(0.5,x.rgb));return mix(x,vec4(z,y.a),y.a*opacity);}"],[tn.PIN_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 y2=2.0*y.rgb;vec3 z=mix(mix(y2,x.rgb,step(0.5*x.rgb,y.rgb)),max(y2-1.0,vec3(0.0)),step(x.rgb,y2-1.0));return mix(x,vec4(z,y.a),y.a*opacity);}"],[tn.REFLECT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 z=mix(min(x.rgb*x.rgb/max(1.0-y.rgb,1e-12),1.0),y.rgb,step(1.0,y.rgb));return mix(x,vec4(z,y.a),y.a*opacity);}"],[tn.SATURATION,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 xHSL=RGBToHSL(x.rgb);vec3 yHSL=RGBToHSL(y.rgb);vec3 z=HSLToRGB(vec3(xHSL.x,yHSL.y,xHSL.z));return mix(x,vec4(z,y.a),y.a*opacity);}"],[tn.SCREEN,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(x.rgb+y.rgb-min(x.rgb*y.rgb,1.0),y.a),y.a*opacity);}"],[tn.SOFT_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 a=x.rgb;vec3 b=y.rgb;vec3 y2=2.0*b;vec3 w=step(0.5,b);vec3 c=a-(1.0-y2)*a*(1.0-a);vec3 d=mix(a+(y2-1.0)*(sqrt(a)-a),a+(y2-1.0)*a*((16.0*a-12.0)*a+3.0),w*(1.0-step(0.25,a)));vec3 z=mix(c,d,w);return mix(x,vec4(z,y.a),y.a*opacity);}"],[tn.SRC,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return y;}"],[tn.SUBTRACT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){return mix(x,vec4(max(x.rgb+y.rgb-1.0,0.0),y.a),y.a*opacity);}"],[tn.VIVID_LIGHT,"vec4 blend(const in vec4 x,const in vec4 y,const in float opacity){vec3 z=mix(max(1.0-min((1.0-x.rgb)/(2.0*y.rgb),1.0),0.0),min(x.rgb/(2.0*(1.0-y.rgb)),1.0),step(0.5,y.rgb));return mix(x,vec4(z,y.a),y.a*opacity);}"]]),ta=class extends eW.EventDispatcher{getOpacity(){return this.opacity.value}setOpacity(e){this.opacity.value=e}get blendFunction(){return this._blendFunction}set blendFunction(e){this._blendFunction=e,this.dispatchEvent({type:"change"})}getBlendFunction(){return this.blendFunction}setBlendFunction(e){this.blendFunction=e}getShaderCode(){return ti.get(this.blendFunction)}constructor(e,t=1){super(),this._blendFunction=e,this.opacity=new eW.Uniform(t)}};eW.CanvasTexture;var ts=class extends eW.EventDispatcher{get inputColorSpace(){return this._inputColorSpace}set inputColorSpace(e){this._inputColorSpace=e,this.setChanged()}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e,this.setChanged()}set mainScene(e){}set mainCamera(e){}getName(){return this.name}setRenderer(e){this.renderer=e}getDefines(){return this.defines}getUniforms(){return this.uniforms}getExtensions(){return this.extensions}getBlendMode(){return this.blendMode}getAttributes(){return this.attributes}setAttributes(e){this.attributes=e,this.setChanged()}getFragmentShader(){return this.fragmentShader}setFragmentShader(e){this.fragmentShader=e,this.setChanged()}getVertexShader(){return this.vertexShader}setVertexShader(e){this.vertexShader=e,this.setChanged()}setChanged(){this.dispatchEvent({type:"change"})}setDepthTexture(e){arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.BasicDepthPacking}update(e,t,r){}setSize(e,t){}initialize(e,t,r){}dispose(){for(let e of Object.keys(this)){let t=this[e];(t instanceof eW.WebGLRenderTarget||t instanceof eW.Material||t instanceof eW.Texture||t instanceof eY)&&this[e].dispose()}}constructor(e,t,{attributes:r=e4.NONE,blendFunction:n=tn.NORMAL,defines:i=new Map,uniforms:a=new Map,extensions:s=null,vertexShader:o=null}={}){super(),this.name=e,this.renderer=null,this.attributes=r,this.fragmentShader=t,this.vertexShader=o,this.defines=i,this.uniforms=a,this.extensions=s,this.blendMode=new ta(n),this.blendMode.addEventListener("change",e=>this.setChanged()),this._inputColorSpace=eW.LinearSRGBColorSpace,this._outputColorSpace=eW.NoColorSpace}},to={VERY_SMALL:0,SMALL:1,MEDIUM:2,LARGE:3},tl=[new Float32Array([0,0]),new Float32Array([0,1,1]),new Float32Array([0,1,1,2]),new Float32Array([0,1,2,2,3]),new Float32Array([0,1,2,3,4,4,5]),new Float32Array([0,1,2,3,4,5,7,8,9,10])],tu=class extends eW.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.inputBuffer=e}get kernelSequence(){return tl[this.kernelSize]}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}getScale(){return this.uniforms.scale.value}setScale(e){this.uniforms.scale.value=e}getKernel(){return null}get kernel(){return this.uniforms.kernel.value}set kernel(e){this.uniforms.kernel.value=e}setKernel(e){this.kernel=e}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t,.5*e,.5*t)}setSize(e,t){let r=1/e,n=1/t;this.uniforms.texelSize.value.set(r,n,.5*r,.5*n)}constructor(e=new eW.Vector4){super({name:"KawaseBlurMaterial",uniforms:{inputBuffer:new eW.Uniform(null),texelSize:new eW.Uniform(new eW.Vector4),scale:new eW.Uniform(1),kernel:new eW.Uniform(0)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\nvarying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec4 sum=texture2D(inputBuffer,vUv0);sum+=texture2D(inputBuffer,vUv1);sum+=texture2D(inputBuffer,vUv2);sum+=texture2D(inputBuffer,vUv3);gl_FragColor=sum*0.25;\n#include <colorspace_fragment>\n}",vertexShader:"uniform vec4 texelSize;uniform float kernel;uniform float scale;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vec2 dUv=(texelSize.xy*vec2(kernel)+texelSize.zw)*scale;vUv0=vec2(uv.x-dUv.x,uv.y+dUv.y);vUv1=vec2(uv.x+dUv.x,uv.y+dUv.y);vUv2=vec2(uv.x+dUv.x,uv.y-dUv.y);vUv3=vec2(uv.x-dUv.x,uv.y-dUv.y);gl_Position=vec4(position.xy,1.0,1.0);}"}),this.setTexelSize(e.x,e.y),this.kernelSize=to.MEDIUM}},tc=class extends eY{getResolution(){return this.resolution}get blurMaterial(){return this._blurMaterial}set blurMaterial(e){this._blurMaterial=e}get dithering(){return this.copyMaterial.dithering}set dithering(e){this.copyMaterial.dithering=e}get kernelSize(){return this.blurMaterial.kernelSize}set kernelSize(e){this.blurMaterial.kernelSize=e}get width(){return this.resolution.width}set width(e){this.resolution.preferredWidth=e}get height(){return this.resolution.height}set height(e){this.resolution.preferredHeight=e}get scale(){return this.blurMaterial.scale}set scale(e){this.blurMaterial.scale=e}getScale(){return this.blurMaterial.scale}setScale(e){this.blurMaterial.scale=e}getKernelSize(){return this.kernelSize}setKernelSize(e){this.kernelSize=e}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,r,n,i){let a=this.scene,s=this.camera,o=this.renderTargetA,l=this.renderTargetB,u=this.blurMaterial,c=u.kernelSequence,d=t;this.fullscreenMaterial=u;for(let t=0,r=c.length;t<r;++t){let r=(1&t)==0?o:l;u.kernel=c[t],u.inputBuffer=d.texture,e.setRenderTarget(r),e.render(a,s),d=r}this.fullscreenMaterial=this.copyMaterial,this.copyMaterial.inputBuffer=d.texture,e.setRenderTarget(this.renderToScreen?null:r),e.render(a,s)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t);let n=r.width,i=r.height;this.renderTargetA.setSize(n,i),this.renderTargetB.setSize(n,i),this.blurMaterial.setSize(e,t)}initialize(e,t,r){void 0!==r&&(this.renderTargetA.texture.type=r,this.renderTargetB.texture.type=r,r!==eW.UnsignedByteType?(this.blurMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1",this.copyMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1"):null!==e&&e.outputColorSpace===eW.SRGBColorSpace&&(this.renderTargetA.texture.colorSpace=eW.SRGBColorSpace,this.renderTargetB.texture.colorSpace=eW.SRGBColorSpace))}static get AUTO_SIZE(){return te.AUTO_SIZE}constructor({kernelSize:e=to.MEDIUM,resolutionScale:t=.5,width:r=te.AUTO_SIZE,height:n=te.AUTO_SIZE,resolutionX:i=r,resolutionY:a=n}={}){super("KawaseBlurPass"),this.renderTargetA=new eW.WebGLRenderTarget(1,1,{depthBuffer:!1}),this.renderTargetA.texture.name="Blur.Target.A",this.renderTargetB=this.renderTargetA.clone(),this.renderTargetB.texture.name="Blur.Target.B";let s=this.resolution=new te(this,i,a,t);s.addEventListener("change",e=>this.setSize(s.baseWidth,s.baseHeight)),this._blurMaterial=new tu,this._blurMaterial.kernelSize=e,this.copyMaterial=new e$}},td=class extends eW.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get threshold(){return this.uniforms.threshold.value}set threshold(e){this.smoothing>0||e>0?this.defines.THRESHOLD="1":delete this.defines.THRESHOLD,this.uniforms.threshold.value=e}getThreshold(){return this.threshold}setThreshold(e){this.threshold=e}get smoothing(){return this.uniforms.smoothing.value}set smoothing(e){this.threshold>0||e>0?this.defines.THRESHOLD="1":delete this.defines.THRESHOLD,this.uniforms.smoothing.value=e}getSmoothingFactor(){return this.smoothing}setSmoothingFactor(e){this.smoothing=e}get useThreshold(){return this.threshold>0||this.smoothing>0}set useThreshold(e){}get colorOutput(){return void 0!==this.defines.COLOR}set colorOutput(e){e?this.defines.COLOR="1":delete this.defines.COLOR,this.needsUpdate=!0}isColorOutputEnabled(e){return this.colorOutput}setColorOutputEnabled(e){this.colorOutput=e}get useRange(){return null!==this.luminanceRange}set useRange(e){this.luminanceRange=null}get luminanceRange(){return this.uniforms.range.value}set luminanceRange(e){null!==e?this.defines.RANGE="1":delete this.defines.RANGE,this.uniforms.range.value=e,this.needsUpdate=!0}getLuminanceRange(){return this.luminanceRange}setLuminanceRange(e){this.luminanceRange=e}constructor(e=!1,t=null){super({name:"LuminanceMaterial",defines:{THREE_REVISION:eW.REVISION.replace(/\D+/g,"")},uniforms:{inputBuffer:new eW.Uniform(null),threshold:new eW.Uniform(0),smoothing:new eW.Uniform(1),range:new eW.Uniform(null)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <common>\n#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\n#ifdef RANGE\nuniform vec2 range;\n#elif defined(THRESHOLD)\nuniform float threshold;uniform float smoothing;\n#endif\nvarying vec2 vUv;void main(){vec4 texel=texture2D(inputBuffer,vUv);float l=luminance(texel.rgb);float mask=1.0;\n#ifdef RANGE\nfloat low=step(range.x,l);float high=step(l,range.y);mask=low*high;\n#elif defined(THRESHOLD)\nmask=smoothstep(threshold,threshold+smoothing,l);\n#endif\n#ifdef COLOR\ngl_FragColor=texel*mask;\n#else\ngl_FragColor=vec4(l*mask);\n#endif\n}",vertexShader:eq}),this.colorOutput=e,this.luminanceRange=t}},tf=class extends eW.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}constructor(){super({name:"DownsamplingMaterial",uniforms:{inputBuffer:new eW.Uniform(null),texelSize:new eW.Uniform(new eW.Vector2)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\n#define WEIGHT_INNER 0.125\n#define WEIGHT_OUTER 0.0555555\nvarying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;float clampToBorder(const in vec2 uv){return float(uv.s>=0.0&&uv.s<=1.0&&uv.t>=0.0&&uv.t<=1.0);}void main(){vec4 c=vec4(0.0);vec4 w=WEIGHT_INNER*vec4(clampToBorder(vUv00),clampToBorder(vUv01),clampToBorder(vUv02),clampToBorder(vUv03));c+=w.x*texture2D(inputBuffer,vUv00);c+=w.y*texture2D(inputBuffer,vUv01);c+=w.z*texture2D(inputBuffer,vUv02);c+=w.w*texture2D(inputBuffer,vUv03);w=WEIGHT_OUTER*vec4(clampToBorder(vUv04),clampToBorder(vUv05),clampToBorder(vUv06),clampToBorder(vUv07));c+=w.x*texture2D(inputBuffer,vUv04);c+=w.y*texture2D(inputBuffer,vUv05);c+=w.z*texture2D(inputBuffer,vUv06);c+=w.w*texture2D(inputBuffer,vUv07);w=WEIGHT_OUTER*vec4(clampToBorder(vUv08),clampToBorder(vUv09),clampToBorder(vUv10),clampToBorder(vUv11));c+=w.x*texture2D(inputBuffer,vUv08);c+=w.y*texture2D(inputBuffer,vUv09);c+=w.z*texture2D(inputBuffer,vUv10);c+=w.w*texture2D(inputBuffer,vUv11);c+=WEIGHT_OUTER*texture2D(inputBuffer,vUv);gl_FragColor=c;\n#include <colorspace_fragment>\n}",vertexShader:"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv00;varying vec2 vUv01;varying vec2 vUv02;varying vec2 vUv03;varying vec2 vUv04;varying vec2 vUv05;varying vec2 vUv06;varying vec2 vUv07;varying vec2 vUv08;varying vec2 vUv09;varying vec2 vUv10;varying vec2 vUv11;void main(){vUv=position.xy*0.5+0.5;vUv00=vUv+texelSize*vec2(-1.0,1.0);vUv01=vUv+texelSize*vec2(1.0,1.0);vUv02=vUv+texelSize*vec2(-1.0,-1.0);vUv03=vUv+texelSize*vec2(1.0,-1.0);vUv04=vUv+texelSize*vec2(-2.0,2.0);vUv05=vUv+texelSize*vec2(0.0,2.0);vUv06=vUv+texelSize*vec2(2.0,2.0);vUv07=vUv+texelSize*vec2(-2.0,0.0);vUv08=vUv+texelSize*vec2(2.0,0.0);vUv09=vUv+texelSize*vec2(-2.0,-2.0);vUv10=vUv+texelSize*vec2(0.0,-2.0);vUv11=vUv+texelSize*vec2(2.0,-2.0);gl_Position=vec4(position.xy,1.0,1.0);}"})}},th=class extends eW.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}set supportBuffer(e){this.uniforms.supportBuffer.value=e}get radius(){return this.uniforms.radius.value}set radius(e){this.uniforms.radius.value=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}constructor(){super({name:"UpsamplingMaterial",uniforms:{inputBuffer:new eW.Uniform(null),supportBuffer:new eW.Uniform(null),texelSize:new eW.Uniform(new eW.Vector2),radius:new eW.Uniform(.85)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;uniform mediump sampler2D supportBuffer;\n#else\nuniform lowp sampler2D inputBuffer;uniform lowp sampler2D supportBuffer;\n#endif\nuniform float radius;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vec4 c=vec4(0.0);c+=texture2D(inputBuffer,vUv0)*0.0625;c+=texture2D(inputBuffer,vUv1)*0.125;c+=texture2D(inputBuffer,vUv2)*0.0625;c+=texture2D(inputBuffer,vUv3)*0.125;c+=texture2D(inputBuffer,vUv)*0.25;c+=texture2D(inputBuffer,vUv4)*0.125;c+=texture2D(inputBuffer,vUv5)*0.0625;c+=texture2D(inputBuffer,vUv6)*0.125;c+=texture2D(inputBuffer,vUv7)*0.0625;vec4 baseColor=texture2D(supportBuffer,vUv);gl_FragColor=mix(baseColor,c,radius);\n#include <colorspace_fragment>\n}",vertexShader:"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;varying vec2 vUv6;varying vec2 vUv7;void main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,1.0);vUv1=vUv+texelSize*vec2(0.0,1.0);vUv2=vUv+texelSize*vec2(1.0,1.0);vUv3=vUv+texelSize*vec2(-1.0,0.0);vUv4=vUv+texelSize*vec2(1.0,0.0);vUv5=vUv+texelSize*vec2(-1.0,-1.0);vUv6=vUv+texelSize*vec2(0.0,-1.0);vUv7=vUv+texelSize*vec2(1.0,-1.0);gl_Position=vec4(position.xy,1.0,1.0);}"})}},tp={RED:0,GREEN:1,BLUE:2,ALPHA:3},tm={DISCARD:0,MULTIPLY_RGB_SET_ALPHA:2,MULTIPLY_RGB:3},tv=class extends eW.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}set cocBuffer(e){this.uniforms.cocBuffer.value=e}setCoCBuffer(e){this.uniforms.cocBuffer.value=e}get scale(){return this.uniforms.scale.value}set scale(e){this.uniforms.scale.value=e}getScale(e){return this.scale}setScale(e){this.scale=e}generateKernel(){let e=new Float64Array(128),t=new Float64Array(32),r=0,n=0;for(let i=0,a=Math.sqrt(80);i<80;++i){let s=2.39996323*i,o=Math.sqrt(i)/a,l=o*Math.cos(s),u=o*Math.sin(s);i%5==0?(t[n++]=l,t[n++]=u):(e[r++]=l,e[r++]=u)}this.uniforms.kernel64.value=e,this.uniforms.kernel16.value=t}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}constructor(e=!1,t=!1){super({name:"BokehMaterial",defines:{PASS:e?"2":"1"},uniforms:{inputBuffer:new eW.Uniform(null),cocBuffer:new eW.Uniform(null),texelSize:new eW.Uniform(new eW.Vector2),kernel64:new eW.Uniform(null),kernel16:new eW.Uniform(null),scale:new eW.Uniform(1)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\n#if PASS == 1\nuniform vec4 kernel64[32];\n#else\nuniform vec4 kernel16[8];\n#endif\nuniform lowp sampler2D cocBuffer;uniform vec2 texelSize;uniform float scale;varying vec2 vUv;void main(){\n#ifdef FOREGROUND\nvec2 cocNearFar=texture2D(cocBuffer,vUv).rg*scale;float coc=cocNearFar.x;\n#else\nfloat coc=texture2D(cocBuffer,vUv).g*scale;\n#endif\nif(coc==0.0){gl_FragColor=texture2D(inputBuffer,vUv);}else{\n#ifdef FOREGROUND\nvec2 step=texelSize*max(cocNearFar.x,cocNearFar.y);\n#else\nvec2 step=texelSize*coc;\n#endif\n#if PASS == 1\nvec4 acc=vec4(0.0);for(int i=0;i<32;++i){vec4 kernel=kernel64[i];vec2 uv=step*kernel.xy+vUv;acc+=texture2D(inputBuffer,uv);uv=step*kernel.zw+vUv;acc+=texture2D(inputBuffer,uv);}gl_FragColor=acc/64.0;\n#else\nvec4 maxValue=texture2D(inputBuffer,vUv);for(int i=0;i<8;++i){vec4 kernel=kernel16[i];vec2 uv=step*kernel.xy+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);uv=step*kernel.zw+vUv;maxValue=max(texture2D(inputBuffer,uv),maxValue);}gl_FragColor=maxValue;\n#endif\n}}",vertexShader:eq}),t&&(this.defines.FOREGROUND="1"),this.generateKernel()}},tg=class extends eW.ShaderMaterial{set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.BasicDepthPacking;this.depthBuffer=e,this.depthPacking=t}get focusDistance(){return this.uniforms.focusDistance.value}set focusDistance(e){this.uniforms.focusDistance.value=e}get worldFocusDistance(){return this.focusDistance}set worldFocusDistance(e){this.focusDistance=e}getFocusDistance(e){this.uniforms.focusDistance.value=e}setFocusDistance(e){this.uniforms.focusDistance.value=e}get focalLength(){return this.focusRange}set focalLength(e){this.focusRange=e}get focusRange(){return this.uniforms.focusRange.value}set focusRange(e){this.uniforms.focusRange.value=e}get worldFocusRange(){return this.focusRange}set worldFocusRange(e){this.focusRange=e}getFocalLength(e){return this.focusRange}setFocalLength(e){this.focusRange=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){this.uniforms.projectionMatrix.value=e.projectionMatrix,this.uniforms.projectionMatrixInverse.value=e.projectionMatrixInverse,this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far;let t=void 0!==this.defines.PERSPECTIVE_CAMERA;e instanceof eW.PerspectiveCamera?t||(this.defines.PERSPECTIVE_CAMERA=!0,this.needsUpdate=!0):t&&(delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}constructor(e=null){super({name:"CircleOfConfusionMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new eW.Uniform(null),projectionMatrix:new eW.Uniform(null),projectionMatrixInverse:new eW.Uniform(null),cameraNear:new eW.Uniform(.3),cameraFar:new eW.Uniform(1e3),focusDistance:new eW.Uniform(0),focusRange:new eW.Uniform(0)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <common>\n#include <packing>\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\nuniform mat4 projectionMatrix;uniform mat4 projectionMatrixInverse;uniform float cameraNear;uniform float cameraFar;uniform float focusDistance;uniform float focusRange;varying vec2 vUv;float readDepth(const in vec2 uv){\n#if DEPTH_PACKING == 3201\nfloat depth=unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nfloat depth=texture2D(depthBuffer,uv).r;\n#endif\n#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH)\nfloat d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d;\n#elif defined(USE_REVERSED_DEPTH_BUFFER)\ndepth=1.0-depth;\n#endif\nreturn depth;}\n#ifdef PERSPECTIVE_CAMERA\n#define getViewZ(depth) perspectiveDepthToViewZ(depth, cameraNear, cameraFar)\n#else\n#define getViewZ(depth) orthographicDepthToViewZ(depth, cameraNear, cameraFar)\n#endif\nvec3 getViewPosition(const in vec2 screenPosition,const in float depth,const in float viewZ){vec4 clipPosition=vec4(vec3(screenPosition,depth)*2.0-1.0,1.0);float clipW=projectionMatrix[2][3]*viewZ+projectionMatrix[3][3];clipPosition*=clipW;return(projectionMatrixInverse*clipPosition).xyz;}vec3 getViewPosition(const in vec2 screenPosition,const in float depth){return getViewPosition(screenPosition,depth,getViewZ(depth));}\n#define getDistance(viewPosition) length(viewPosition)\nvoid main(){float depth=readDepth(vUv);vec3 viewPosition=getViewPosition(vUv,depth);float distance=getDistance(viewPosition);float signedDistance=distance-focusDistance;float magnitude=smoothstep(0.0,focusRange,abs(signedDistance));gl_FragColor.rg=magnitude*vec2(step(signedDistance,0.0),step(0.0,signedDistance));}",vertexShader:eq}),this.uniforms.focalLength=this.uniforms.focusRange,null!==e&&this.copyCameraSettings(e)}},tA=class extends eW.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}set maskTexture(e){this.uniforms.maskTexture.value=e,delete this.defines.MASK_PRECISION_HIGH,e.type!==eW.UnsignedByteType&&(this.defines.MASK_PRECISION_HIGH="1"),this.needsUpdate=!0}setMaskTexture(e){this.maskTexture=e}set colorChannel(e){this.defines.COLOR_CHANNEL=e.toFixed(0),this.needsUpdate=!0}setColorChannel(e){this.colorChannel=e}set maskFunction(e){this.defines.MASK_FUNCTION=e.toFixed(0),this.needsUpdate=!0}setMaskFunction(e){this.maskFunction=e}get inverted(){return void 0!==this.defines.INVERTED}set inverted(e){this.inverted&&!e?delete this.defines.INVERTED:e&&(this.defines.INVERTED="1"),this.needsUpdate=!0}isInverted(){return this.inverted}setInverted(e){this.inverted=e}get strength(){return this.uniforms.strength.value}set strength(e){this.uniforms.strength.value=e}getStrength(){return this.strength}setStrength(e){this.strength=e}constructor(e=null){super({name:"MaskMaterial",uniforms:{maskTexture:new eW.Uniform(e),inputBuffer:new eW.Uniform(null),strength:new eW.Uniform(1)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\n#ifdef MASK_PRECISION_HIGH\nuniform mediump sampler2D maskTexture;\n#else\nuniform lowp sampler2D maskTexture;\n#endif\n#if MASK_FUNCTION != 0\nuniform float strength;\n#endif\nvarying vec2 vUv;void main(){\n#if COLOR_CHANNEL == 0\nfloat mask=texture2D(maskTexture,vUv).r;\n#elif COLOR_CHANNEL == 1\nfloat mask=texture2D(maskTexture,vUv).g;\n#elif COLOR_CHANNEL == 2\nfloat mask=texture2D(maskTexture,vUv).b;\n#else\nfloat mask=texture2D(maskTexture,vUv).a;\n#endif\n#if MASK_FUNCTION == 0\n#ifdef INVERTED\nmask=(mask>0.0)?0.0:1.0;\n#else\nmask=(mask>0.0)?1.0:0.0;\n#endif\n#else\nmask=clamp(mask*strength,0.0,1.0);\n#ifdef INVERTED\nmask=1.0-mask;\n#endif\n#endif\n#if MASK_FUNCTION == 3\nvec4 texel=texture2D(inputBuffer,vUv);gl_FragColor=vec4(mask*texel.rgb,texel.a);\n#elif MASK_FUNCTION == 2\ngl_FragColor=vec4(mask*texture2D(inputBuffer,vUv).rgb,mask);\n#else\ngl_FragColor=mask*texture2D(inputBuffer,vUv);\n#endif\n}",vertexShader:eq}),this.colorChannel=tp.RED,this.maskFunction=tm.DISCARD}},ty=class extends eY{setInput(e){this.input=e}render(e,t,r,n,i){let a=this.fullscreenMaterial.uniforms;null!==t&&void 0!==a&&void 0!==a[this.input]&&(a[this.input].value=t.texture),e.setRenderTarget(this.renderToScreen?null:r),e.render(this.scene,this.camera)}initialize(e,t,r){void 0!==r&&r!==eW.UnsignedByteType&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}constructor(e,t="inputBuffer"){super("ShaderPass"),this.fullscreenMaterial=e,this.input=t}},tx=new eW.Vector3,tB=class extends ts{set mainCamera(e){this.camera=e,this.cocMaterial.copyCameraSettings(e)}get cocTexture(){return this.renderTargetCoC.texture}get maskFunction(){return this.maskPass.fullscreenMaterial.maskFunction}set maskFunction(e){this.maskFunction!==e&&(this.defines.set("MASK_FUNCTION",e.toFixed(0)),this.maskPass.fullscreenMaterial.maskFunction=e,this.setChanged())}get cocMaterial(){return this.cocPass.fullscreenMaterial}get circleOfConfusionMaterial(){return this.cocMaterial}getCircleOfConfusionMaterial(){return this.cocMaterial}getBlurPass(){return this.blurPass}getResolution(){return this.resolution}get bokehScale(){return this.uniforms.get("scale").value}set bokehScale(e){this.bokehNearBasePass.fullscreenMaterial.scale=e,this.bokehNearFillPass.fullscreenMaterial.scale=e,this.bokehFarBasePass.fullscreenMaterial.scale=e,this.bokehFarFillPass.fullscreenMaterial.scale=e,this.maskPass.fullscreenMaterial.strength=e,this.uniforms.get("scale").value=e}getBokehScale(){return this.bokehScale}setBokehScale(e){this.bokehScale=e}getTarget(){return this.target}setTarget(e){this.target=e}calculateFocusDistance(e){return this.camera.getWorldPosition(tx).distanceTo(e)}setDepthTexture(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.BasicDepthPacking;this.cocMaterial.depthBuffer=e,this.cocMaterial.depthPacking=t}update(e,t,r){let n=this.renderTarget,i=this.renderTargetCoC,a=this.renderTargetCoCBlurred,s=this.renderTargetMasked;if(null!==this.target){let e=this.calculateFocusDistance(this.target);this.cocMaterial.focusDistance=e}this.cocPass.render(e,null,i),this.blurPass.render(e,i,a),this.maskPass.render(e,t,s),this.bokehFarBasePass.render(e,s,n),this.bokehFarFillPass.render(e,n,this.renderTargetFar),this.bokehNearBasePass.render(e,t,n),this.bokehNearFillPass.render(e,n,this.renderTargetNear)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t);let n=r.width,i=r.height;this.cocPass.setSize(e,t),this.blurPass.setSize(e,t),this.maskPass.setSize(e,t),this.renderTargetFar.setSize(e,t),this.renderTargetCoC.setSize(e,t),this.renderTargetMasked.setSize(e,t),this.renderTarget.setSize(n,i),this.renderTargetNear.setSize(n,i),this.renderTargetCoCBlurred.setSize(n,i),this.bokehNearBasePass.fullscreenMaterial.setSize(e,t),this.bokehNearFillPass.fullscreenMaterial.setSize(e,t),this.bokehFarBasePass.fullscreenMaterial.setSize(e,t),this.bokehFarFillPass.fullscreenMaterial.setSize(e,t)}initialize(e,t,r){this.cocPass.initialize(e,t,r),this.maskPass.initialize(e,t,r),this.bokehNearBasePass.initialize(e,t,r),this.bokehNearFillPass.initialize(e,t,r),this.bokehFarBasePass.initialize(e,t,r),this.bokehFarFillPass.initialize(e,t,r),this.blurPass.initialize(e,t,eW.UnsignedByteType),e.capabilities.logarithmicDepthBuffer&&(this.cocPass.fullscreenMaterial.defines.LOG_DEPTH="1"),void 0!==r&&(this.renderTarget.texture.type=r,this.renderTargetNear.texture.type=r,this.renderTargetFar.texture.type=r,this.renderTargetMasked.texture.type=r,null!==e&&e.outputColorSpace===eW.SRGBColorSpace&&(this.renderTarget.texture.colorSpace=eW.SRGBColorSpace,this.renderTargetNear.texture.colorSpace=eW.SRGBColorSpace,this.renderTargetFar.texture.colorSpace=eW.SRGBColorSpace,this.renderTargetMasked.texture.colorSpace=eW.SRGBColorSpace))}constructor(e,{blendFunction:t,worldFocusDistance:r,worldFocusRange:n,focalLength:i,focusDistance:a=r||3,focusRange:s=n||i||2,bokehScale:o=1,resolutionScale:l=.5,width:u,height:c,resolutionX:d=u||te.AUTO_SIZE,resolutionY:f=c||te.AUTO_SIZE}={}){super("DepthOfFieldEffect","#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D nearColorBuffer;uniform mediump sampler2D farColorBuffer;\n#else\nuniform lowp sampler2D nearColorBuffer;uniform lowp sampler2D farColorBuffer;\n#endif\n#if MASK_FUNCTION != 1 && MASK_FUNCTION != 2\nuniform lowp sampler2D farCoCBuffer;\n#endif\nuniform lowp sampler2D nearCoCBuffer;uniform float scale;void mainImage(const in vec4 inputColor,const in vec2 uv,out vec4 outputColor){vec4 colorNear=texture2D(nearColorBuffer,uv);vec4 colorFar=texture2D(farColorBuffer,uv);\n#if MASK_FUNCTION == 1 || MASK_FUNCTION == 2\nvec2 cocNearFar=vec2(texture2D(nearCoCBuffer,uv).r,colorFar.a);cocNearFar.x=min(cocNearFar.x*scale,1.0);\n#else\nvec2 cocNearFar=vec2(texture2D(nearCoCBuffer,uv).r,texture2D(farCoCBuffer,uv).g);cocNearFar=min(cocNearFar*scale,1.0);colorFar.a*=cocNearFar.y;\n#endif\nvec4 result=inputColor*(1.0-cocNearFar.y)+colorFar;result=mix(result,colorNear,cocNearFar.x);outputColor=result;}",{blendFunction:t,attributes:e4.DEPTH,uniforms:new Map([["nearColorBuffer",new eW.Uniform(null)],["farColorBuffer",new eW.Uniform(null)],["nearCoCBuffer",new eW.Uniform(null)],["farCoCBuffer",new eW.Uniform(null)],["scale",new eW.Uniform(1)]])}),this.camera=e,this.renderTarget=new eW.WebGLRenderTarget(1,1,{depthBuffer:!1}),this.renderTarget.texture.name="DoF.Intermediate",this.renderTargetMasked=this.renderTarget.clone(),this.renderTargetMasked.texture.name="DoF.Masked.Far",this.renderTargetNear=this.renderTarget.clone(),this.renderTargetNear.texture.name="DoF.Bokeh.Near",this.uniforms.get("nearColorBuffer").value=this.renderTargetNear.texture,this.renderTargetFar=this.renderTarget.clone(),this.renderTargetFar.texture.name="DoF.Bokeh.Far",this.uniforms.get("farColorBuffer").value=this.renderTargetFar.texture,this.renderTargetCoC=this.renderTarget.clone(),this.renderTargetCoC.texture.name="DoF.CoC",this.uniforms.get("farCoCBuffer").value=this.renderTargetCoC.texture,this.renderTargetCoCBlurred=this.renderTargetCoC.clone(),this.renderTargetCoCBlurred.texture.name="DoF.CoC.Blurred",this.uniforms.get("nearCoCBuffer").value=this.renderTargetCoCBlurred.texture,this.cocPass=new ty(new tg(e));let h=this.cocMaterial;h.focusDistance=a,h.focusRange=s,this.blurPass=new tc({resolutionScale:l,resolutionX:d,resolutionY:f,kernelSize:to.MEDIUM}),this.maskPass=new ty(new tA(this.renderTargetCoC.texture)),this.maskPass.fullscreenMaterial.colorChannel=tp.GREEN,this.maskFunction=tm.MULTIPLY_RGB,this.bokehNearBasePass=new ty(new tv(!1,!0)),this.bokehNearBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehNearFillPass=new ty(new tv(!0,!0)),this.bokehNearFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoCBlurred.texture,this.bokehFarBasePass=new ty(new tv(!1,!1)),this.bokehFarBasePass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.bokehFarFillPass=new ty(new tv(!0,!1)),this.bokehFarFillPass.fullscreenMaterial.cocBuffer=this.renderTargetCoC.texture,this.target=null;let p=this.resolution=new te(this,d,f,l);p.addEventListener("change",e=>this.setSize(p.baseWidth,p.baseHeight)),this.bokehScale=o}},tC=class extends eW.DataTexture{constructor(e,t,r=eW.RedFormat,n=eW.UnsignedByteType){super(function(e,t,r){let n,i=new Map([[eW.RedFormat,1],[eW.RGFormat,2],[eW.RGBAFormat,4]]);if(i.has(t)||console.error("Invalid noise texture format"),r===eW.UnsignedByteType){n=new Uint8Array(e*i.get(t));for(let e=0,t=n.length;e<t;++e)n[e]=255*Math.random()+.5}else{n=new Float32Array(e*i.get(t));for(let e=0,t=n.length;e<t;++e)n[e]=Math.random()}return n}(e*t,r,n),e,t,r,n),this.needsUpdate=!0}},tS=class extends eW.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get lightPosition(){return this.uniforms.lightPosition.value}getLightPosition(){return this.uniforms.lightPosition.value}setLightPosition(e){this.uniforms.lightPosition.value=e}get density(){return this.uniforms.density.value}set density(e){this.uniforms.density.value=e}getDensity(){return this.uniforms.density.value}setDensity(e){this.uniforms.density.value=e}get decay(){return this.uniforms.decay.value}set decay(e){this.uniforms.decay.value=e}getDecay(){return this.uniforms.decay.value}setDecay(e){this.uniforms.decay.value=e}get weight(){return this.uniforms.weight.value}set weight(e){this.uniforms.weight.value=e}getWeight(){return this.uniforms.weight.value}setWeight(e){this.uniforms.weight.value=e}get exposure(){return this.uniforms.exposure.value}set exposure(e){this.uniforms.exposure.value=e}getExposure(){return this.uniforms.exposure.value}setExposure(e){this.uniforms.exposure.value=e}get maxIntensity(){return this.uniforms.clampMax.value}set maxIntensity(e){this.uniforms.clampMax.value=e}getMaxIntensity(){return this.uniforms.clampMax.value}setMaxIntensity(e){this.uniforms.clampMax.value=e}get samples(){return Number(this.defines.SAMPLES_INT)}set samples(e){let t=Math.floor(e);this.defines.SAMPLES_INT=t.toFixed(0),this.defines.SAMPLES_FLOAT=t.toFixed(1),this.needsUpdate=!0}getSamples(){return this.samples}setSamples(e){this.samples=e}constructor(e){super({name:"GodRaysMaterial",defines:{SAMPLES_INT:"60",SAMPLES_FLOAT:"60.0"},uniforms:{inputBuffer:new eW.Uniform(null),lightPosition:new eW.Uniform(e),density:new eW.Uniform(1),decay:new eW.Uniform(1),weight:new eW.Uniform(1),exposure:new eW.Uniform(1),clampMax:new eW.Uniform(1)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <common>\n#include <dithering_pars_fragment>\n#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\nuniform vec2 lightPosition;uniform float exposure;uniform float decay;uniform float density;uniform float weight;uniform float clampMax;varying vec2 vUv;void main(){vec2 coord=vUv;vec2 delta=lightPosition-coord;delta*=1.0/SAMPLES_FLOAT*density;float illuminationDecay=1.0;vec4 color=vec4(0.0);for(int i=0;i<SAMPLES_INT;++i){coord+=delta;vec4 texel=texture2D(inputBuffer,coord);texel*=illuminationDecay*weight;color+=texel;illuminationDecay*=decay;}gl_FragColor=clamp(color*exposure,0.0,clampMax);\n#include <dithering_fragment>\n}",vertexShader:eq})}},tE=class extends eY{set mainScene(e){this.scene=e}set mainCamera(e){this.camera=e}get renderToScreen(){return super.renderToScreen}set renderToScreen(e){super.renderToScreen=e,this.clearPass.renderToScreen=e}get overrideMaterial(){let e=this.overrideMaterialManager;return null!==e?e.material:null}set overrideMaterial(e){let t=this.overrideMaterialManager;null!==e?null!==t?t.setMaterial(e):this.overrideMaterialManager=new e7(e):null!==t&&(t.dispose(),this.overrideMaterialManager=null)}getOverrideMaterial(){return this.overrideMaterial}setOverrideMaterial(e){this.overrideMaterial=e}get clear(){return this.clearPass.enabled}set clear(e){this.clearPass.enabled=e}getSelection(){return this.selection}setSelection(e){this.selection=e}isBackgroundDisabled(){return this.ignoreBackground}setBackgroundDisabled(e){this.ignoreBackground=e}isShadowMapDisabled(){return this.skipShadowMapUpdate}setShadowMapDisabled(e){this.skipShadowMapUpdate=e}getClearPass(){return this.clearPass}render(e,t,r,n,i){let a=this.scene,s=this.camera,o=this.selection,l=s.layers.mask,u=a.background,c=e.shadowMap.autoUpdate,d=this.renderToScreen?null:t;null!==o&&s.layers.set(o.getLayer()),this.skipShadowMapUpdate&&(e.shadowMap.autoUpdate=!1),(this.ignoreBackground||null!==this.clearPass.overrideClearColor)&&(a.background=null),this.clearPass.enabled&&this.clearPass.render(e,t),e.setRenderTarget(d),null!==this.overrideMaterialManager?this.overrideMaterialManager.render(e,a,s):e.render(a,s),s.layers.mask=l,a.background=u,e.shadowMap.autoUpdate=c}constructor(e,t,r=null){super("RenderPass",e,t),this.needsSwap=!1,this.clearPass=new e2,this.overrideMaterialManager=null===r?null:new e7(r),this.ignoreBackground=!1,this.skipShadowMapUpdate=!1,this.selection=null}},tT=new eW.Vector3,tb=new eW.Matrix4,tD={SCALE_UP:"lut.scaleup"};function tM(e,t,r){let n=document.createElement("canvas"),i=n.getContext("2d");if(n.width=e,n.height=t,r instanceof Image)i.drawImage(r,0,0);else{let n=i.createImageData(e,t);n.data.set(r),i.putImageData(n,0,0)}return n}var tw=class e{toCanvas(){return"undefined"==typeof document?null:tM(this.width,this.height,this.data)}static from(t){let r,{width:n,height:i}=t;if(t instanceof Image){let e=tM(n,i,t);null!==e&&(r=e.getContext("2d").getImageData(0,0,n,i).data)}else r=t.data;return new e(n,i,r)}constructor(e=0,t=0,r=null){this.width=e,this.height=t,this.data=r}},tF=new eW.Color,tR=class e extends eW.Data3DTexture{get isLookupTexture3D(){return!0}scaleUp(t){let r=!(arguments.length>1)||void 0===arguments[1]||arguments[1],n=this.image;return t<=n.width?Promise.reject(Error("The target size must be greater than the current size")):new Promise((i,a)=>{let s=URL.createObjectURL(new Blob(['"use strict";(()=>{var O={SCALE_UP:"lut.scaleup"};var _=[new Float32Array(3),new Float32Array(3)],n=[new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3)],Z=[[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1])],[new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1])]];function d(a,t,r,m){let i=r[0]-t[0],e=r[1]-t[1],y=r[2]-t[2],h=a[0]-t[0],A=a[1]-t[1],w=a[2]-t[2],c=e*w-y*A,l=y*h-i*w,x=i*A-e*h,u=Math.sqrt(c*c+l*l+x*x),b=u*.5,s=c/u,F=l/u,f=x/u,p=-(a[0]*s+a[1]*F+a[2]*f),M=m[0]*s+m[1]*F+m[2]*f;return Math.abs(M+p)*b/3}function V(a,t,r,m,i,e){let y=(r+m*t+i*t*t)*4;e[0]=a[y+0],e[1]=a[y+1],e[2]=a[y+2]}function k(a,t,r,m,i,e){let y=r*(t-1),h=m*(t-1),A=i*(t-1),w=Math.floor(y),c=Math.floor(h),l=Math.floor(A),x=Math.ceil(y),u=Math.ceil(h),b=Math.ceil(A),s=y-w,F=h-c,f=A-l;if(w===y&&c===h&&l===A)V(a,t,y,h,A,e);else{let p;s>=F&&F>=f?p=Z[0]:s>=f&&f>=F?p=Z[1]:f>=s&&s>=F?p=Z[2]:F>=s&&s>=f?p=Z[3]:F>=f&&f>=s?p=Z[4]:f>=F&&F>=s&&(p=Z[5]);let[M,g,X,Y]=p,P=_[0];P[0]=s,P[1]=F,P[2]=f;let o=_[1],L=x-w,S=u-c,U=b-l;o[0]=L*M[0]+w,o[1]=S*M[1]+c,o[2]=U*M[2]+l,V(a,t,o[0],o[1],o[2],n[0]),o[0]=L*g[0]+w,o[1]=S*g[1]+c,o[2]=U*g[2]+l,V(a,t,o[0],o[1],o[2],n[1]),o[0]=L*X[0]+w,o[1]=S*X[1]+c,o[2]=U*X[2]+l,V(a,t,o[0],o[1],o[2],n[2]),o[0]=L*Y[0]+w,o[1]=S*Y[1]+c,o[2]=U*Y[2]+l,V(a,t,o[0],o[1],o[2],n[3]);let T=d(g,X,Y,P)*6,q=d(M,X,Y,P)*6,C=d(M,g,Y,P)*6,E=d(M,g,X,P)*6;n[0][0]*=T,n[0][1]*=T,n[0][2]*=T,n[1][0]*=q,n[1][1]*=q,n[1][2]*=q,n[2][0]*=C,n[2][1]*=C,n[2][2]*=C,n[3][0]*=E,n[3][1]*=E,n[3][2]*=E,e[0]=n[0][0]+n[1][0]+n[2][0]+n[3][0],e[1]=n[0][1]+n[1][1]+n[2][1]+n[3][1],e[2]=n[0][2]+n[1][2]+n[2][2]+n[3][2]}}var v=class{static expand(t,r){let m=Math.cbrt(t.length/4),i=new Float32Array(3),e=new t.constructor(r**3*4),y=t instanceof Uint8Array?255:1,h=r**2,A=1/(r-1);for(let w=0;w<r;++w)for(let c=0;c<r;++c)for(let l=0;l<r;++l){let x=l*A,u=c*A,b=w*A,s=Math.round(l+c*r+w*h)*4;k(t,m,x,u,b,i),e[s+0]=i[0],e[s+1]=i[1],e[s+2]=i[2],e[s+3]=y}return e}};self.addEventListener("message",a=>{let t=a.data,r=t.data;switch(t.operation){case O.SCALE_UP:r=v.expand(r,t.size);break}postMessage(r,[r.buffer]),close()});})();\n'],{type:"text/javascript"})),o=new Worker(s);o.addEventListener("error",e=>a(e.error)),o.addEventListener("message",r=>{let n=new e(r.data,t);this.colorSpace=n.colorSpace,n.type=this.type,n.name=this.name,URL.revokeObjectURL(s),i(n)});let l=r?[n.data.buffer]:[];o.postMessage({operation:tD.SCALE_UP,data:n.data,size:t},l)})}applyLUT(e){let t=this.image,r=e.image,n=Math.min(t.width,t.height,t.depth);if(n!==Math.min(r.width,r.height,r.depth))console.error("Size mismatch");else if(e.type!==eW.FloatType||this.type!==eW.FloatType)console.error("Both LUTs must be FloatType textures");else if(e.format!==eW.RGBAFormat||this.format!==eW.RGBAFormat)console.error("Both LUTs must be RGBA textures");else{let e=t.data,i=r.data,a=n**2,s=n-1;for(let t=0,r=n**3;t<r;++t){let r=4*t,o=e[r+0]*s,l=4*Math.round(o+e[r+1]*s*n+e[r+2]*s*a);e[r+0]=i[l+0],e[r+1]=i[l+1],e[r+2]=i[l+2]}this.needsUpdate=!0}return this}convertToUint8(){if(this.type===eW.FloatType){let e=this.image.data,t=new Uint8Array(e.length);for(let r=0,n=e.length;r<n;++r)t[r]=255*e[r]+.5;this.image.data=t,this.type=eW.UnsignedByteType,this.needsUpdate=!0}return this}convertToFloat(){if(this.type===eW.UnsignedByteType){let e=this.image.data,t=new Float32Array(e.length);for(let r=0,n=e.length;r<n;++r)t[r]=e[r]/255;this.image.data=t,this.type=eW.FloatType,this.needsUpdate=!0}return this}convertToRGBA(){return console.warn("LookupTexture","convertToRGBA() is deprecated, LUTs are now RGBA by default"),this}convertLinearToSRGB(){let e=this.image.data;if(this.type===eW.FloatType){for(let t=0,r=e.length;t<r;t+=4)tF.fromArray(e,t).convertLinearToSRGB().toArray(e,t);this.colorSpace=eW.SRGBColorSpace,this.needsUpdate=!0}else console.error("Color space conversion requires FloatType data");return this}convertSRGBToLinear(){let e=this.image.data;if(this.type===eW.FloatType){for(let t=0,r=e.length;t<r;t+=4)tF.fromArray(e,t).convertSRGBToLinear().toArray(e,t);this.colorSpace=eW.LinearSRGBColorSpace,this.needsUpdate=!0}else console.error("Color space conversion requires FloatType data");return this}toDataTexture(){let e=this.image.width,t=this.image.height*this.image.depth,r=new eW.DataTexture(this.image.data,e,t);return r.name=this.name,r.type=this.type,r.format=this.format,r.minFilter=eW.LinearFilter,r.magFilter=eW.LinearFilter,r.wrapS=this.wrapS,r.wrapT=this.wrapT,r.generateMipmaps=!1,r.needsUpdate=!0,this.colorSpace=r.colorSpace,r}static from(t){let r,n=t.image,{width:i,height:a}=n,s=Math.min(i,a);if(n instanceof Image){let e=tw.from(n).data;if(i>a){r=new Uint8Array(e.length);for(let t=0;t<s;++t)for(let n=0;n<s;++n)for(let i=0;i<s;++i){let a=(i+t*s+n*s*s)*4,o=(i+n*s+t*s*s)*4;r[o+0]=e[a+0],r[o+1]=e[a+1],r[o+2]=e[a+2],r[o+3]=e[a+3]}}else r=new Uint8Array(e.buffer)}else r=n.data.slice();let o=new e(r,s);return o.type=t.type,o.name=t.name,t.colorSpace=o.colorSpace,o}static createNeutral(t){let r=new Float32Array(t**3*4),n=t**2,i=1/(t-1);for(let e=0;e<t;++e)for(let a=0;a<t;++a)for(let s=0;s<t;++s){let o=(e+a*t+s*n)*4;r[o+0]=e*i,r[o+1]=a*i,r[o+2]=s*i,r[o+3]=1}let a=new e(r,t);return a.name="neutral",a}constructor(e,t){super(e,t,t,t),this.type=eW.FloatType,this.format=eW.RGBAFormat,this.minFilter=eW.LinearFilter,this.magFilter=eW.LinearFilter,this.wrapS=eW.ClampToEdgeWrapping,this.wrapT=eW.ClampToEdgeWrapping,this.wrapR=eW.ClampToEdgeWrapping,this.unpackAlignment=1,this.needsUpdate=!0,this.colorSpace=eW.LinearSRGBColorSpace,this.domainMin=new eW.Vector3(0,0,0),this.domainMax=new eW.Vector3(1,1,1)}},tI={FULL:0,SINGLE:1},tP={KEEP_MAX_DEPTH:1,DISCARD_MAX_DEPTH:2},tL={COLOR:2},tU=class extends eW.ShaderMaterial{set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.RGBADepthPacking;this.depthBuffer=e,this.depthPacking=t}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far,e instanceof eW.PerspectiveCamera?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}constructor(e=null,t){super({name:"DepthComparisonMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new eW.Uniform(null),cameraNear:new eW.Uniform(.3),cameraFar:new eW.Uniform(1e3)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <packing>\n#include <clipping_planes_pars_fragment>\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\nuniform float cameraNear;uniform float cameraFar;centroid varying float vViewZ;centroid varying vec4 vProjTexCoord;void main(){\n#include <clipping_planes_fragment>\nvec2 projTexCoord=(vProjTexCoord.xy/vProjTexCoord.w)*0.5+0.5;\n#if DEPTH_PACKING == 3201\nfloat depth=unpackRGBAToDepth(texture2D(depthBuffer,projTexCoord));\n#else\nfloat depth=texture2D(depthBuffer,projTexCoord).r;\n#endif\n#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH)\nfloat d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d;\n#elif defined(USE_REVERSED_DEPTH_BUFFER)\ndepth=1.0-depth;\n#endif\n#ifdef PERSPECTIVE_CAMERA\nfloat viewZ=perspectiveDepthToViewZ(depth,cameraNear,cameraFar);\n#else\nfloat viewZ=orthographicDepthToViewZ(depth,cameraNear,cameraFar);\n#endif\nfloat depthTest=(-vViewZ>-viewZ)?1.0:0.0;gl_FragColor.rg=vec2(0.0,depthTest);}",vertexShader:"#include <common>\n#include <morphtarget_pars_vertex>\n#include <skinning_pars_vertex>\n#include <clipping_planes_pars_vertex>\nvarying float vViewZ;varying vec4 vProjTexCoord;void main(){\n#include <skinbase_vertex>\n#include <begin_vertex>\n#include <morphtarget_vertex>\n#include <skinning_vertex>\n#include <project_vertex>\nvViewZ=mvPosition.z;vProjTexCoord=gl_Position;\n#include <clipping_planes_vertex>\n}"}),this.depthBuffer=e,this.depthPacking=eW.RGBADepthPacking,this.copyCameraSettings(t)}},tG=class extends eW.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}constructor(e=new eW.Vector2){super({name:"OutlineMaterial",uniforms:{inputBuffer:new eW.Uniform(null),texelSize:new eW.Uniform(new eW.Vector2)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"uniform lowp sampler2D inputBuffer;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 c0=texture2D(inputBuffer,vUv0).rg;vec2 c1=texture2D(inputBuffer,vUv1).rg;vec2 c2=texture2D(inputBuffer,vUv2).rg;vec2 c3=texture2D(inputBuffer,vUv3).rg;float d0=(c0.x-c1.x)*0.5;float d1=(c2.x-c3.x)*0.5;float d=length(vec2(d0,d1));float a0=min(c0.y,c1.y);float a1=min(c2.y,c3.y);float visibilityFactor=min(a0,a1);gl_FragColor.rg=(1.0-visibilityFactor>0.001)?vec2(d,0.0):vec2(0.0,d);}",vertexShader:"uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=vec2(uv.x+texelSize.x,uv.y);vUv1=vec2(uv.x-texelSize.x,uv.y);vUv2=vec2(uv.x,uv.y+texelSize.y);vUv3=vec2(uv.x,uv.y-texelSize.y);gl_Position=vec4(position.xy,1.0,1.0);}"}),this.uniforms.texelSize.value.set(e.x,e.y),this.uniforms.maskTexture=this.uniforms.inputBuffer}},tO=new eW.Vector3,tH=new eW.Vector3,tN=class extends eW.ShaderMaterial{set depthBuffer0(e){this.uniforms.depthBuffer0.value=e}set depthPacking0(e){this.defines.DEPTH_PACKING_0=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer0(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.BasicDepthPacking;this.depthBuffer0=e,this.depthPacking0=t}set depthBuffer1(e){this.uniforms.depthBuffer1.value=e}set depthPacking1(e){this.defines.DEPTH_PACKING_1=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer1(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.BasicDepthPacking;this.depthBuffer1=e,this.depthPacking1=t}get maxDepthStrategy(){return Number(this.defines.DEPTH_TEST_STRATEGY)}set maxDepthStrategy(e){this.defines.DEPTH_TEST_STRATEGY=e.toFixed(0),this.needsUpdate=!0}get keepFar(){return this.maxDepthStrategy}set keepFar(e){this.maxDepthStrategy=e?tP.KEEP_MAX_DEPTH:tP.DISCARD_MAX_DEPTH}getMaxDepthStrategy(){return this.maxDepthStrategy}setMaxDepthStrategy(e){this.maxDepthStrategy=e}get epsilon(){return Number(this.defines.DEPTH_EPSILON)}set epsilon(e){this.defines.DEPTH_EPSILON=e.toFixed(16),this.needsUpdate=!0}getEpsilon(){return this.epsilon}setEpsilon(e){this.epsilon=e}get depthMode(){return Number(this.defines.DEPTH_MODE)}set depthMode(e){let t;switch(e){case eW.NeverDepth:t="false";break;case eW.AlwaysDepth:t="true";break;case eW.EqualDepth:t="abs(d1 - d0) <= DEPTH_EPSILON";break;case eW.NotEqualDepth:t="abs(d1 - d0) > DEPTH_EPSILON";break;case eW.LessDepth:t="d0 > d1";break;case eW.LessEqualDepth:t="d0 >= d1";break;case eW.GreaterEqualDepth:t="d0 <= d1";break;case eW.GreaterDepth:default:t="d0 < d1"}this.defines.DEPTH_MODE=e.toFixed(0),this.defines["depthTest(d0, d1)"]=t,this.needsUpdate=!0}getDepthMode(){return this.depthMode}setDepthMode(e){this.depthMode=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNearFar.value.set(e.near,e.far),e instanceof eW.PerspectiveCamera?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}constructor(){super({name:"DepthMaskMaterial",defines:{DEPTH_EPSILON:"0.0001",DEPTH_PACKING_0:"0",DEPTH_PACKING_1:"0",DEPTH_TEST_STRATEGY:tP.KEEP_MAX_DEPTH},uniforms:{inputBuffer:new eW.Uniform(null),depthBuffer0:new eW.Uniform(null),depthBuffer1:new eW.Uniform(null),cameraNearFar:new eW.Uniform(new eW.Vector2(1,1))},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <common>\n#include <packing>\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D depthBuffer0;uniform highp sampler2D depthBuffer1;\n#else\nuniform mediump sampler2D depthBuffer0;uniform mediump sampler2D depthBuffer1;\n#endif\nuniform sampler2D inputBuffer;uniform vec2 cameraNearFar;float getViewZ(const in float depth){\n#ifdef PERSPECTIVE_CAMERA\nreturn perspectiveDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y);\n#else\nreturn orthographicDepthToViewZ(depth,cameraNearFar.x,cameraNearFar.y);\n#endif\n}varying vec2 vUv;void main(){vec2 depth;\n#if DEPTH_PACKING_0 == 3201\ndepth.x=unpackRGBAToDepth(texture2D(depthBuffer0,vUv));\n#else\ndepth.x=texture2D(depthBuffer0,vUv).r;\n#endif\n#if DEPTH_PACKING_1 == 3201\ndepth.y=unpackRGBAToDepth(texture2D(depthBuffer1,vUv));\n#else\ndepth.y=texture2D(depthBuffer1,vUv).r;\n#endif\n#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH)\nfloat a=cameraNearFar.y/(cameraNearFar.y-cameraNearFar.x);float b=cameraNearFar.y*cameraNearFar.x/(cameraNearFar.x-cameraNearFar.y);float c=log2(cameraNearFar.y+1.0);float d=pow(2.0,depth.x*c)-1.0;depth.x=a+b/d;d=pow(2.0,depth.y*c)-1.0;depth.y=a+b/d;\n#elif defined(USE_REVERSED_DEPTH_BUFFER)\ndepth.x=1.0-depth.x;depth.y=1.0-depth.y;\n#endif\nbool isMaxDepth=(depth.x==1.0);\n#ifdef PERSPECTIVE_CAMERA\ndepth.x=viewZToOrthographicDepth(getViewZ(depth.x),cameraNearFar.x,cameraNearFar.y);depth.y=viewZToOrthographicDepth(getViewZ(depth.y),cameraNearFar.x,cameraNearFar.y);\n#endif\n#if DEPTH_TEST_STRATEGY == 0\nbool keep=depthTest(depth.x,depth.y);\n#elif DEPTH_TEST_STRATEGY == 1\nbool keep=isMaxDepth||depthTest(depth.x,depth.y);\n#else\nbool keep=!isMaxDepth&&depthTest(depth.x,depth.y);\n#endif\nif(keep){gl_FragColor=texture2D(inputBuffer,vUv);}else{discard;}}",vertexShader:eq}),this.depthMode=eW.LessDepth}},tk=class extends eW.ShaderMaterial{set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.BasicDepthPacking;this.depthBuffer=e,this.depthPacking=t}get edgeDetectionMode(){return Number(this.defines.EDGE_DETECTION_MODE)}set edgeDetectionMode(e){this.defines.EDGE_DETECTION_MODE=e.toFixed(0),this.needsUpdate=!0}getEdgeDetectionMode(){return this.edgeDetectionMode}setEdgeDetectionMode(e){this.edgeDetectionMode=e}get localContrastAdaptationFactor(){return Number(this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR)}set localContrastAdaptationFactor(e){this.defines.LOCAL_CONTRAST_ADAPTATION_FACTOR=e.toFixed("6"),this.needsUpdate=!0}getLocalContrastAdaptationFactor(){return this.localContrastAdaptationFactor}setLocalContrastAdaptationFactor(e){this.localContrastAdaptationFactor=e}get edgeDetectionThreshold(){return Number(this.defines.EDGE_THRESHOLD)}set edgeDetectionThreshold(e){this.defines.EDGE_THRESHOLD=e.toFixed("6"),this.defines.DEPTH_THRESHOLD=(.1*e).toFixed("6"),this.needsUpdate=!0}getEdgeDetectionThreshold(){return this.edgeDetectionThreshold}setEdgeDetectionThreshold(e){this.edgeDetectionThreshold=e}get predicationMode(){return Number(this.defines.PREDICATION_MODE)}set predicationMode(e){this.defines.PREDICATION_MODE=e.toFixed(0),this.needsUpdate=!0}getPredicationMode(){return this.predicationMode}setPredicationMode(e){this.predicationMode=e}set predicationBuffer(e){this.uniforms.predicationBuffer.value=e}setPredicationBuffer(e){this.uniforms.predicationBuffer.value=e}get predicationThreshold(){return Number(this.defines.PREDICATION_THRESHOLD)}set predicationThreshold(e){this.defines.PREDICATION_THRESHOLD=e.toFixed("6"),this.needsUpdate=!0}getPredicationThreshold(){return this.predicationThreshold}setPredicationThreshold(e){this.predicationThreshold=e}get predicationScale(){return Number(this.defines.PREDICATION_SCALE)}set predicationScale(e){this.defines.PREDICATION_SCALE=e.toFixed("6"),this.needsUpdate=!0}getPredicationScale(){return this.predicationScale}setPredicationScale(e){this.predicationScale=e}get predicationStrength(){return Number(this.defines.PREDICATION_STRENGTH)}set predicationStrength(e){this.defines.PREDICATION_STRENGTH=e.toFixed("6"),this.needsUpdate=!0}getPredicationStrength(){return this.predicationStrength}setPredicationStrength(e){this.predicationStrength=e}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}constructor(e=new eW.Vector2,t=tL.COLOR){super({name:"EdgeDetectionMaterial",defines:{THREE_REVISION:eW.REVISION.replace(/\D+/g,""),LOCAL_CONTRAST_ADAPTATION_FACTOR:"2.0",EDGE_THRESHOLD:"0.1",DEPTH_THRESHOLD:"0.01",PREDICATION_MODE:"0",PREDICATION_THRESHOLD:"0.01",PREDICATION_SCALE:"2.0",PREDICATION_STRENGTH:"1.0",DEPTH_PACKING:"0"},uniforms:{inputBuffer:new eW.Uniform(null),depthBuffer:new eW.Uniform(null),predicationBuffer:new eW.Uniform(null),texelSize:new eW.Uniform(e)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;\n#if EDGE_DETECTION_MODE != 0\nvarying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;\n#endif\n#if EDGE_DETECTION_MODE == 1\n#include <common>\n#endif\n#if EDGE_DETECTION_MODE == 0 || PREDICATION_MODE == 1\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\nfloat readDepth(const in vec2 uv){\n#if DEPTH_PACKING == 3201\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nreturn texture2D(depthBuffer,uv).r;\n#endif\n}vec3 gatherNeighbors(){float p=readDepth(vUv);float pLeft=readDepth(vUv0);float pTop=readDepth(vUv1);return vec3(p,pLeft,pTop);}\n#elif PREDICATION_MODE == 2\nuniform sampler2D predicationBuffer;vec3 gatherNeighbors(){float p=texture2D(predicationBuffer,vUv).r;float pLeft=texture2D(predicationBuffer,vUv0).r;float pTop=texture2D(predicationBuffer,vUv1).r;return vec3(p,pLeft,pTop);}\n#endif\n#if PREDICATION_MODE != 0\nvec2 calculatePredicatedThreshold(){vec3 neighbours=gatherNeighbors();vec2 delta=abs(neighbours.xx-neighbours.yz);vec2 edges=step(PREDICATION_THRESHOLD,delta);return PREDICATION_SCALE*EDGE_THRESHOLD*(1.0-PREDICATION_STRENGTH*edges);}\n#endif\n#if EDGE_DETECTION_MODE != 0\nuniform sampler2D inputBuffer;\n#endif\nvoid main(){\n#if EDGE_DETECTION_MODE == 0\nconst vec2 threshold=vec2(DEPTH_THRESHOLD);\n#elif PREDICATION_MODE != 0\nvec2 threshold=calculatePredicatedThreshold();\n#else\nconst vec2 threshold=vec2(EDGE_THRESHOLD);\n#endif\n#if EDGE_DETECTION_MODE == 0\nvec3 neighbors=gatherNeighbors();vec2 delta=abs(neighbors.xx-vec2(neighbors.y,neighbors.z));vec2 edges=step(threshold,delta);if(dot(edges,vec2(1.0))==0.0){discard;}gl_FragColor=vec4(edges,0.0,1.0);\n#elif EDGE_DETECTION_MODE == 1\nfloat l=luminance(texture2D(inputBuffer,vUv).rgb);float lLeft=luminance(texture2D(inputBuffer,vUv0).rgb);float lTop=luminance(texture2D(inputBuffer,vUv1).rgb);vec4 delta;delta.xy=abs(l-vec2(lLeft,lTop));vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}float lRight=luminance(texture2D(inputBuffer,vUv2).rgb);float lBottom=luminance(texture2D(inputBuffer,vUv3).rgb);delta.zw=abs(l-vec2(lRight,lBottom));vec2 maxDelta=max(delta.xy,delta.zw);float lLeftLeft=luminance(texture2D(inputBuffer,vUv4).rgb);float lTopTop=luminance(texture2D(inputBuffer,vUv5).rgb);delta.zw=abs(vec2(lLeft,lTop)-vec2(lLeftLeft,lTopTop));maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges.xy*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0);\n#elif EDGE_DETECTION_MODE == 2\nvec4 delta;vec3 c=texture2D(inputBuffer,vUv).rgb;vec3 cLeft=texture2D(inputBuffer,vUv0).rgb;vec3 t=abs(c-cLeft);delta.x=max(max(t.r,t.g),t.b);vec3 cTop=texture2D(inputBuffer,vUv1).rgb;t=abs(c-cTop);delta.y=max(max(t.r,t.g),t.b);vec2 edges=step(threshold,delta.xy);if(dot(edges,vec2(1.0))==0.0){discard;}vec3 cRight=texture2D(inputBuffer,vUv2).rgb;t=abs(c-cRight);delta.z=max(max(t.r,t.g),t.b);vec3 cBottom=texture2D(inputBuffer,vUv3).rgb;t=abs(c-cBottom);delta.w=max(max(t.r,t.g),t.b);vec2 maxDelta=max(delta.xy,delta.zw);vec3 cLeftLeft=texture2D(inputBuffer,vUv4).rgb;t=abs(c-cLeftLeft);delta.z=max(max(t.r,t.g),t.b);vec3 cTopTop=texture2D(inputBuffer,vUv5).rgb;t=abs(c-cTopTop);delta.w=max(max(t.r,t.g),t.b);maxDelta=max(maxDelta.xy,delta.zw);float finalDelta=max(maxDelta.x,maxDelta.y);edges*=step(finalDelta,LOCAL_CONTRAST_ADAPTATION_FACTOR*delta.xy);gl_FragColor=vec4(edges,0.0,1.0);\n#endif\n}",vertexShader:"uniform vec2 texelSize;varying vec2 vUv;varying vec2 vUv0;varying vec2 vUv1;\n#if EDGE_DETECTION_MODE != 0\nvarying vec2 vUv2;varying vec2 vUv3;varying vec2 vUv4;varying vec2 vUv5;\n#endif\nvoid main(){vUv=position.xy*0.5+0.5;vUv0=vUv+texelSize*vec2(-1.0,0.0);vUv1=vUv+texelSize*vec2(0.0,-1.0);\n#if EDGE_DETECTION_MODE != 0\nvUv2=vUv+texelSize*vec2(1.0,0.0);vUv3=vUv+texelSize*vec2(0.0,1.0);vUv4=vUv+texelSize*vec2(-2.0,0.0);vUv5=vUv+texelSize*vec2(0.0,-2.0);\n#endif\ngl_Position=vec4(position.xy,1.0,1.0);}"}),this.edgeDetectionMode=t}},tz=class extends eW.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get searchTexture(){return this.uniforms.searchTexture.value}set searchTexture(e){this.uniforms.searchTexture.value=e}get areaTexture(){return this.uniforms.areaTexture.value}set areaTexture(e){this.uniforms.areaTexture.value=e}setLookupTextures(e,t){this.searchTexture=e,this.areaTexture=t}get orthogonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_INT)}set orthogonalSearchSteps(e){let t=Math.min(Math.max(e,0),112);this.defines.MAX_SEARCH_STEPS_INT=t.toFixed("0"),this.defines.MAX_SEARCH_STEPS_FLOAT=t.toFixed("1"),this.needsUpdate=!0}setOrthogonalSearchSteps(e){this.orthogonalSearchSteps=e}get diagonalSearchSteps(){return Number(this.defines.MAX_SEARCH_STEPS_DIAG_INT)}set diagonalSearchSteps(e){let t=Math.min(Math.max(e,0),20);this.defines.MAX_SEARCH_STEPS_DIAG_INT=t.toFixed("0"),this.defines.MAX_SEARCH_STEPS_DIAG_FLOAT=t.toFixed("1"),this.needsUpdate=!0}setDiagonalSearchSteps(e){this.diagonalSearchSteps=e}get diagonalDetection(){return void 0===this.defines.DISABLE_DIAG_DETECTION}set diagonalDetection(e){e?delete this.defines.DISABLE_DIAG_DETECTION:this.defines.DISABLE_DIAG_DETECTION="1",this.needsUpdate=!0}isDiagonalDetectionEnabled(){return this.diagonalDetection}setDiagonalDetectionEnabled(e){this.diagonalDetection=e}get cornerRounding(){return Number(this.defines.CORNER_ROUNDING)}set cornerRounding(e){let t=Math.min(Math.max(e,0),100);this.defines.CORNER_ROUNDING=t.toFixed("4"),this.defines.CORNER_ROUNDING_NORM=(t/100).toFixed("4"),this.needsUpdate=!0}setCornerRounding(e){this.cornerRounding=e}get cornerDetection(){return void 0===this.defines.DISABLE_CORNER_DETECTION}set cornerDetection(e){e?delete this.defines.DISABLE_CORNER_DETECTION:this.defines.DISABLE_CORNER_DETECTION="1",this.needsUpdate=!0}isCornerRoundingEnabled(){return this.cornerDetection}setCornerRoundingEnabled(e){this.cornerDetection=e}setSize(e,t){let r=this.uniforms;r.texelSize.value.set(1/e,1/t),r.resolution.value.set(e,t)}constructor(e=new eW.Vector2,t=new eW.Vector2){super({name:"SMAAWeightsMaterial",defines:{MAX_SEARCH_STEPS_INT:"16",MAX_SEARCH_STEPS_FLOAT:"16.0",MAX_SEARCH_STEPS_DIAG_INT:"8",MAX_SEARCH_STEPS_DIAG_FLOAT:"8.0",CORNER_ROUNDING:"25",CORNER_ROUNDING_NORM:"0.25",AREATEX_MAX_DISTANCE:"16.0",AREATEX_MAX_DISTANCE_DIAG:"20.0",AREATEX_PIXEL_SIZE:"(1.0 / vec2(160.0, 560.0))",AREATEX_SUBTEX_SIZE:"(1.0 / 7.0)",SEARCHTEX_SIZE:"vec2(66.0, 33.0)",SEARCHTEX_PACKED_SIZE:"vec2(64.0, 16.0)"},uniforms:{inputBuffer:new eW.Uniform(null),searchTexture:new eW.Uniform(null),areaTexture:new eW.Uniform(null),resolution:new eW.Uniform(t),texelSize:new eW.Uniform(e)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#define sampleLevelZeroOffset(t, coord, offset) texture2D(t, coord + offset * texelSize)\n#if __VERSION__ < 300\n#define round(v) floor(v + 0.5)\n#endif\n#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\nuniform lowp sampler2D areaTexture;uniform lowp sampler2D searchTexture;uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void movec(const in bvec2 c,inout vec2 variable,const in vec2 value){if(c.x){variable.x=value.x;}if(c.y){variable.y=value.y;}}void movec(const in bvec4 c,inout vec4 variable,const in vec4 value){movec(c.xy,variable.xy,value.xy);movec(c.zw,variable.zw,value.zw);}vec2 decodeDiagBilinearAccess(in vec2 e){e.r=e.r*abs(5.0*e.r-5.0*0.75);return round(e);}vec4 decodeDiagBilinearAccess(in vec4 e){e.rb=e.rb*abs(5.0*e.rb-5.0*0.75);return round(e);}vec2 searchDiag1(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);vec3 t=vec3(texelSize,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(coord.z<float(MAX_SEARCH_STEPS_DIAG_INT-1)&&coord.w>0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 searchDiag2(const in vec2 texCoord,const in vec2 dir,out vec2 e){vec4 coord=vec4(texCoord,-1.0,1.0);coord.x+=0.25*texelSize.x;vec3 t=vec3(texelSize,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(coord.z<float(MAX_SEARCH_STEPS_DIAG_INT-1)&&coord.w>0.9)){break;}coord.xyz=t*vec3(dir,1.0)+coord.xyz;e=texture2D(inputBuffer,coord.xy).rg;e=decodeDiagBilinearAccess(e);coord.w=dot(e,vec2(0.5));}return coord.zw;}vec2 areaDiag(const in vec2 dist,const in vec2 e,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE_DIAG,AREATEX_MAX_DISTANCE_DIAG)*e+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.x+=0.5;texCoord.y+=AREATEX_SUBTEX_SIZE*offset;return texture2D(areaTexture,texCoord).rg;}vec2 calculateDiagWeights(const in vec2 texCoord,const in vec2 e,const in vec4 subsampleIndices){vec2 weights=vec2(0.0);vec4 d;vec2 end;if(e.r>0.0){d.xz=searchDiag1(texCoord,vec2(-1.0,1.0),end);d.x+=float(end.y>0.9);}else{d.xz=vec2(0.0);}d.yw=searchDiag1(texCoord,vec2(1.0,-1.0),end);if(d.x+d.y>2.0){vec4 coords=vec4(-d.x+0.25,d.x,d.y,-d.y-0.25)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.xy=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).rg;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).rg;c.yxwz=decodeDiagBilinearAccess(c.xyzw);vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.z);}d.xz=searchDiag2(texCoord,vec2(-1.0,-1.0),end);if(sampleLevelZeroOffset(inputBuffer,texCoord,vec2(1,0)).r>0.0){d.yw=searchDiag2(texCoord,vec2(1.0),end);d.y+=float(end.y>0.9);}else{d.yw=vec2(0.0);}if(d.x+d.y>2.0){vec4 coords=vec4(-d.x,-d.x,d.y,d.y)*texelSize.xyxy+texCoord.xyxy;vec4 c;c.x=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(-1,0)).g;c.y=sampleLevelZeroOffset(inputBuffer,coords.xy,vec2(0,-1)).r;c.zw=sampleLevelZeroOffset(inputBuffer,coords.zw,vec2(1,0)).gr;vec2 cc=vec2(2.0)*c.xz+c.yw;movec(bvec2(step(0.9,d.zw)),cc,vec2(0.0));weights+=areaDiag(d.xy,cc,subsampleIndices.w).gr;}return weights;}float searchLength(const in vec2 e,const in float offset){vec2 scale=SEARCHTEX_SIZE*vec2(0.5,-1.0);vec2 bias=SEARCHTEX_SIZE*vec2(offset,1.0);scale+=vec2(-1.0,1.0);bias+=vec2(0.5,-0.5);scale*=1.0/SEARCHTEX_PACKED_SIZE;bias*=1.0/SEARCHTEX_PACKED_SIZE;return texture2D(searchTexture,scale*e+bias).r;}float searchXLeft(in vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.x>end&&e.g>0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(-2.0,0.0)*texelSize+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.0)+3.25;return texelSize.x*offset+texCoord.x;}float searchXRight(vec2 texCoord,const in float end){vec2 e=vec2(0.0,1.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.x<end&&e.g>0.8281&&e.r==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(2.0,0.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e,0.5)+3.25;return-texelSize.x*offset+texCoord.x;}float searchYUp(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;++i){if(!(texCoord.y>end&&e.r>0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=-vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.0)+3.25;return texelSize.y*offset+texCoord.y;}float searchYDown(vec2 texCoord,const in float end){vec2 e=vec2(1.0,0.0);for(int i=0;i<MAX_SEARCH_STEPS_INT;i++){if(!(texCoord.y<end&&e.r>0.8281&&e.g==0.0)){break;}e=texture2D(inputBuffer,texCoord).rg;texCoord=vec2(0.0,2.0)*texelSize.xy+texCoord;}float offset=-(255.0/127.0)*searchLength(e.gr,0.5)+3.25;return-texelSize.y*offset+texCoord.y;}vec2 area(const in vec2 dist,const in float e1,const in float e2,const in float offset){vec2 texCoord=vec2(AREATEX_MAX_DISTANCE)*round(4.0*vec2(e1,e2))+dist;texCoord=AREATEX_PIXEL_SIZE*texCoord+0.5*AREATEX_PIXEL_SIZE;texCoord.y=AREATEX_SUBTEX_SIZE*offset+texCoord.y;return texture2D(areaTexture,texCoord).rg;}void detectHorizontalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){\n#if !defined(DISABLE_CORNER_DETECTION)\nvec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,1)).r;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).r;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(0,-2)).r;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,-2)).r;weights*=clamp(factor,0.0,1.0);\n#endif\n}void detectVerticalCornerPattern(inout vec2 weights,const in vec4 texCoord,const in vec2 d){\n#if !defined(DISABLE_CORNER_DETECTION)\nvec2 leftRight=step(d.xy,d.yx);vec2 rounding=(1.0-CORNER_ROUNDING_NORM)*leftRight;rounding/=leftRight.x+leftRight.y;vec2 factor=vec2(1.0);factor.x-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(1,0)).g;factor.x-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(1,1)).g;factor.y-=rounding.x*sampleLevelZeroOffset(inputBuffer,texCoord.xy,vec2(-2,0)).g;factor.y-=rounding.y*sampleLevelZeroOffset(inputBuffer,texCoord.zw,vec2(-2,1)).g;weights*=clamp(factor,0.0,1.0);\n#endif\n}void main(){vec4 weights=vec4(0.0);vec4 subsampleIndices=vec4(0.0);vec2 e=texture2D(inputBuffer,vUv).rg;if(e.g>0.0){\n#if !defined(DISABLE_DIAG_DETECTION)\nweights.rg=calculateDiagWeights(vUv,e,subsampleIndices);if(weights.r==-weights.g){\n#endif\nvec2 d;vec3 coords;coords.x=searchXLeft(vOffset[0].xy,vOffset[2].x);coords.y=vOffset[1].y;d.x=coords.x;float e1=texture2D(inputBuffer,coords.xy).r;coords.z=searchXRight(vOffset[0].zw,vOffset[2].y);d.y=coords.z;d=round(resolution.xx*d+-vPixCoord.xx);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.zy,vec2(1,0)).r;weights.rg=area(sqrtD,e1,e2,subsampleIndices.y);coords.y=vUv.y;detectHorizontalCornerPattern(weights.rg,coords.xyzy,d);\n#if !defined(DISABLE_DIAG_DETECTION)\n}else{e.r=0.0;}\n#endif\n}if(e.r>0.0){vec2 d;vec3 coords;coords.y=searchYUp(vOffset[1].xy,vOffset[2].z);coords.x=vOffset[0].x;d.x=coords.y;float e1=texture2D(inputBuffer,coords.xy).g;coords.z=searchYDown(vOffset[1].zw,vOffset[2].w);d.y=coords.z;d=round(resolution.yy*d-vPixCoord.yy);vec2 sqrtD=sqrt(abs(d));float e2=sampleLevelZeroOffset(inputBuffer,coords.xz,vec2(0,1)).g;weights.ba=area(sqrtD,e1,e2,subsampleIndices.x);coords.x=vUv.x;detectVerticalCornerPattern(weights.ba,coords.xyxz,d);}gl_FragColor=weights;}",vertexShader:"uniform vec2 texelSize;uniform vec2 resolution;varying vec2 vUv;varying vec4 vOffset[3];varying vec2 vPixCoord;void main(){vUv=position.xy*0.5+0.5;vPixCoord=vUv*resolution;vOffset[0]=vUv.xyxy+texelSize.xyxy*vec4(-0.25,-0.125,1.25,-0.125);vOffset[1]=vUv.xyxy+texelSize.xyxy*vec4(-0.125,-0.25,-0.125,1.25);vOffset[2]=vec4(vOffset[0].xz,vOffset[1].yw)+vec4(-2.0,2.0,-2.0,2.0)*texelSize.xxyy*MAX_SEARCH_STEPS_FLOAT;gl_Position=vec4(position.xy,1.0,1.0);}"})}};function tj(e,t,r){return Math.min(Math.max((e+t)/(t-r),0),1)}var tK=class extends eW.ShaderMaterial{get near(){return this.uniforms.cameraNearFar.value.x}get far(){return this.uniforms.cameraNearFar.value.y}set normalDepthBuffer(e){this.uniforms.normalDepthBuffer.value=e,null!==e?this.defines.NORMAL_DEPTH="1":delete this.defines.NORMAL_DEPTH,this.needsUpdate=!0}setNormalDepthBuffer(e){this.normalDepthBuffer=e}set normalBuffer(e){this.uniforms.normalBuffer.value=e}setNormalBuffer(e){this.uniforms.normalBuffer.value=e}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.BasicDepthPacking;this.depthBuffer=e,this.depthPacking=t}set noiseTexture(e){this.uniforms.noiseTexture.value=e}setNoiseTexture(e){this.uniforms.noiseTexture.value=e}get samples(){return Number(this.defines.SAMPLES_INT)}set samples(e){this.defines.SAMPLES_INT=e.toFixed(0),this.defines.INV_SAMPLES_FLOAT=(1/e).toFixed(9),this.needsUpdate=!0}getSamples(){return this.samples}setSamples(e){this.samples=e}get rings(){return Number(this.defines.SPIRAL_TURNS)}set rings(e){this.defines.SPIRAL_TURNS=e.toFixed(1),this.needsUpdate=!0}getRings(){return this.rings}setRings(e){this.rings=e}get intensity(){return this.uniforms.intensity.value}set intensity(e){this.uniforms.intensity.value=e,void 0===this.defines.LEGACY_INTENSITY&&(this.defines.LEGACY_INTENSITY="1",this.needsUpdate=!0)}getIntensity(){return this.uniforms.intensity.value}setIntensity(e){this.uniforms.intensity.value=e}get fade(){return this.uniforms.fade.value}set fade(e){this.uniforms.fade.value=e}getFade(){return this.uniforms.fade.value}setFade(e){this.uniforms.fade.value=e}get bias(){return this.uniforms.bias.value}set bias(e){this.uniforms.bias.value=e}getBias(){return this.uniforms.bias.value}setBias(e){this.uniforms.bias.value=e}get minRadiusScale(){return this.uniforms.minRadiusScale.value}set minRadiusScale(e){this.uniforms.minRadiusScale.value=e}getMinRadiusScale(){return this.uniforms.minRadiusScale.value}setMinRadiusScale(e){this.uniforms.minRadiusScale.value=e}updateRadius(){let e=this.r*this.resolution.height;this.defines.RADIUS=e.toFixed(11),this.defines.RADIUS_SQ=(e*e).toFixed(11),this.needsUpdate=!0}get radius(){return this.r}set radius(e){this.r=Math.min(Math.max(e,1e-6),1),this.updateRadius()}getRadius(){return this.radius}setRadius(e){this.radius=e}get distanceScaling(){return!0}set distanceScaling(e){}isDistanceScalingEnabled(){return this.distanceScaling}setDistanceScalingEnabled(e){this.distanceScaling=e}get distanceThreshold(){return this.uniforms.distanceCutoff.value.x}set distanceThreshold(e){this.uniforms.distanceCutoff.value.set(Math.min(Math.max(e,0),1),Math.min(Math.max(e+this.distanceFalloff,0),1))}get worldDistanceThreshold(){var e,t;return-(e=this.distanceThreshold,e*((t=this.near)-this.far)-t)}set worldDistanceThreshold(e){this.distanceThreshold=tj(-e,this.near,this.far)}get distanceFalloff(){return this.uniforms.distanceCutoff.value.y-this.distanceThreshold}set distanceFalloff(e){this.uniforms.distanceCutoff.value.y=Math.min(Math.max(this.distanceThreshold+e,0),1)}get worldDistanceFalloff(){var e,t;return-(e=this.distanceFalloff,e*((t=this.near)-this.far)-t)}set worldDistanceFalloff(e){this.distanceFalloff=tj(-e,this.near,this.far)}setDistanceCutoff(e,t){this.uniforms.distanceCutoff.value.set(Math.min(Math.max(e,0),1),Math.min(Math.max(e+t,0),1))}get proximityThreshold(){return this.uniforms.proximityCutoff.value.x}set proximityThreshold(e){this.uniforms.proximityCutoff.value.set(Math.min(Math.max(e,0),1),Math.min(Math.max(e+this.proximityFalloff,0),1))}get worldProximityThreshold(){var e,t;return-(e=this.proximityThreshold,e*((t=this.near)-this.far)-t)}set worldProximityThreshold(e){this.proximityThreshold=tj(-e,this.near,this.far)}get proximityFalloff(){return this.uniforms.proximityCutoff.value.y-this.proximityThreshold}set proximityFalloff(e){this.uniforms.proximityCutoff.value.y=Math.min(Math.max(this.proximityThreshold+e,0),1)}get worldProximityFalloff(){var e,t;return-(e=this.proximityFalloff,e*((t=this.near)-this.far)-t)}set worldProximityFalloff(e){this.proximityFalloff=tj(-e,this.near,this.far)}setProximityCutoff(e,t){this.uniforms.proximityCutoff.value.set(Math.min(Math.max(e,0),1),Math.min(Math.max(e+t,0),1))}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNearFar.value.set(e.near,e.far),this.uniforms.projectionMatrix.value.copy(e.projectionMatrix),this.uniforms.inverseProjectionMatrix.value.copy(e.projectionMatrix).invert(),e instanceof eW.PerspectiveCamera?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}setSize(e,t){let r=this.uniforms,n=r.noiseTexture.value;null!==n&&r.noiseScale.value.set(e/n.image.width,t/n.image.height),r.texelSize.value.set(1/e,1/t),this.resolution.set(e,t),this.updateRadius()}constructor(e){super({name:"SSAOMaterial",defines:{SAMPLES_INT:"0",INV_SAMPLES_FLOAT:"0.0",SPIRAL_TURNS:"0.0",RADIUS:"1.0",RADIUS_SQ:"1.0",DISTANCE_SCALING:"1",DEPTH_PACKING:"0"},uniforms:{depthBuffer:new eW.Uniform(null),normalBuffer:new eW.Uniform(null),normalDepthBuffer:new eW.Uniform(null),noiseTexture:new eW.Uniform(null),inverseProjectionMatrix:new eW.Uniform(new eW.Matrix4),projectionMatrix:new eW.Uniform(new eW.Matrix4),texelSize:new eW.Uniform(new eW.Vector2),cameraNearFar:new eW.Uniform(new eW.Vector2),distanceCutoff:new eW.Uniform(new eW.Vector2),proximityCutoff:new eW.Uniform(new eW.Vector2),noiseScale:new eW.Uniform(new eW.Vector2),minRadiusScale:new eW.Uniform(.33),intensity:new eW.Uniform(1),fade:new eW.Uniform(.01),bias:new eW.Uniform(0)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <common>\n#include <packing>\nuniform vec2 cameraNearFar;\n#define cameraNear cameraNearFar.x\n#define cameraFar cameraNearFar.y\n#ifdef NORMAL_DEPTH\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D normalDepthBuffer;\n#else\nuniform mediump sampler2D normalDepthBuffer;\n#endif\nfloat readDepth(const in vec2 uv){float depth=texture2D(normalDepthBuffer,uv).a;\n#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH)\nfloat d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d;\n#endif\nreturn depth;}\n#else\nuniform lowp sampler2D normalBuffer;\n#if DEPTH_PACKING == 3201\nuniform lowp sampler2D depthBuffer;\n#elif defined(GL_FRAGMENT_PRECISION_HIGH)\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\nfloat readDepth(const in vec2 uv){\n#if DEPTH_PACKING == 3201\nfloat depth=unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nfloat depth=texture2D(depthBuffer,uv).r;\n#endif\n#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH)\nfloat d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d;\n#endif\nreturn depth;}\n#endif\nuniform lowp sampler2D noiseTexture;uniform mat4 inverseProjectionMatrix;uniform mat4 projectionMatrix;uniform vec2 texelSize;uniform float intensity;uniform float minRadiusScale;uniform float fade;uniform float bias;uniform vec2 distanceCutoff;uniform vec2 proximityCutoff;varying vec2 vUv;varying vec2 vUv2;float getViewZ(const in float depth){\n#ifdef PERSPECTIVE_CAMERA\nreturn perspectiveDepthToViewZ(depth,cameraNear,cameraFar);\n#else\nreturn orthographicDepthToViewZ(depth,cameraNear,cameraFar);\n#endif\n}vec3 getViewPosition(const in vec2 screenPosition,const in float depth,const in float viewZ){vec4 clipPosition=vec4(vec3(screenPosition,depth)*2.0-1.0,1.0);float clipW=projectionMatrix[2][3]*viewZ+projectionMatrix[3][3];clipPosition*=clipW;return(inverseProjectionMatrix*clipPosition).xyz;}float getAmbientOcclusion(const in vec3 p,const in vec3 n,const in float depth,const in vec2 uv){float radiusScale=1.0-smoothstep(0.0,distanceCutoff.y,depth);radiusScale=radiusScale*(1.0-minRadiusScale)+minRadiusScale;float radius=RADIUS*radiusScale;float noise=texture2D(noiseTexture,vUv2).r;float baseAngle=noise*PI2;float rings=SPIRAL_TURNS*PI2;float occlusion=0.0;int taps=0;for(int i=0;i<SAMPLES_INT;++i){float alpha=(float(i)+0.5)*INV_SAMPLES_FLOAT;float angle=alpha*rings+baseAngle;vec2 rotation=vec2(cos(angle),sin(angle));vec2 coords=alpha*radius*rotation*texelSize+uv;if(coords.s<0.0||coords.s>1.0||coords.t<0.0||coords.t>1.0){continue;}float sampleDepth=readDepth(coords);float viewZ=getViewZ(sampleDepth);\n#ifdef PERSPECTIVE_CAMERA\nfloat linearSampleDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar);\n#else\nfloat linearSampleDepth=sampleDepth;\n#endif\nfloat proximity=abs(depth-linearSampleDepth);if(proximity<proximityCutoff.y){float falloff=1.0-smoothstep(proximityCutoff.x,proximityCutoff.y,proximity);vec3 Q=getViewPosition(coords,sampleDepth,viewZ);vec3 v=Q-p;float vv=dot(v,v);float vn=dot(v,n)-bias;float f=max(RADIUS_SQ-vv,0.0)/RADIUS_SQ;occlusion+=(f*f*f*max(vn/(fade+vv),0.0))*falloff;}++taps;}return occlusion/(4.0*max(float(taps),1.0));}void main(){\n#ifdef NORMAL_DEPTH\nvec4 normalDepth=texture2D(normalDepthBuffer,vUv);\n#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH)\nfloat d=pow(2.0,normalDepth.a*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);normalDepth.a=a+b/d;\n#endif\n#else\nvec4 normalDepth=vec4(texture2D(normalBuffer,vUv).xyz,readDepth(vUv));\n#endif\nfloat ao=0.0;float depth=normalDepth.a;float viewZ=getViewZ(depth);\n#ifdef PERSPECTIVE_CAMERA\nfloat linearDepth=viewZToOrthographicDepth(viewZ,cameraNear,cameraFar);\n#else\nfloat linearDepth=depth;\n#endif\nif(linearDepth<distanceCutoff.y){vec3 viewPosition=getViewPosition(vUv,depth,viewZ);vec3 viewNormal=unpackRGBToNormal(normalDepth.rgb);ao+=getAmbientOcclusion(viewPosition,viewNormal,linearDepth,vUv);float d=smoothstep(distanceCutoff.x,distanceCutoff.y,linearDepth);ao=mix(ao,0.0,d);\n#ifdef LEGACY_INTENSITY\nao=clamp(1.0-pow(1.0-ao,abs(intensity)),0.0,1.0);\n#endif\n}gl_FragColor.r=ao;}",vertexShader:"uniform vec2 noiseScale;varying vec2 vUv;varying vec2 vUv2;void main(){vUv=position.xy*0.5+0.5;vUv2=vUv*noiseScale;gl_Position=vec4(position.xy,1.0,1.0);}"}),this.copyCameraSettings(e),this.resolution=new eW.Vector2,this.r=1}},tJ=class extends eW.ShaderMaterial{set depthBuffer(e){this.uniforms.depthBuffer.value=e}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.BasicDepthPacking;this.depthBuffer=e,this.depthPacking=t}set normalBuffer(e){this.uniforms.normalBuffer.value=e,null!==e?this.defines.DOWNSAMPLE_NORMALS="1":delete this.defines.DOWNSAMPLE_NORMALS,this.needsUpdate=!0}setNormalBuffer(e){this.normalBuffer=e}setTexelSize(e,t){this.uniforms.texelSize.value.set(e,t)}setSize(e,t){this.uniforms.texelSize.value.set(1/e,1/t)}constructor(){super({name:"DepthDownsamplingMaterial",defines:{DEPTH_PACKING:"0"},uniforms:{depthBuffer:new eW.Uniform(null),normalBuffer:new eW.Uniform(null),texelSize:new eW.Uniform(new eW.Vector2)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <packing>\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\n#ifdef DOWNSAMPLE_NORMALS\nuniform lowp sampler2D normalBuffer;\n#endif\nvarying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;float readDepth(const in vec2 uv){\n#if DEPTH_PACKING == 3201\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nreturn texture2D(depthBuffer,uv).r;\n#endif\n}int findBestDepth(const in float samples[4]){float c=(samples[0]+samples[1]+samples[2]+samples[3])*0.25;float distances[4];distances[0]=abs(c-samples[0]);distances[1]=abs(c-samples[1]);distances[2]=abs(c-samples[2]);distances[3]=abs(c-samples[3]);float maxDistance=max(max(distances[0],distances[1]),max(distances[2],distances[3]));int remaining[3];int rejected[3];int i,j,k;for(i=0,j=0,k=0;i<4;++i){if(distances[i]<maxDistance){remaining[j++]=i;}else{rejected[k++]=i;}}for(;j<3;++j){remaining[j]=rejected[--k];}vec3 s=vec3(samples[remaining[0]],samples[remaining[1]],samples[remaining[2]]);c=(s.x+s.y+s.z)/3.0;distances[0]=abs(c-s.x);distances[1]=abs(c-s.y);distances[2]=abs(c-s.z);float minDistance=min(distances[0],min(distances[1],distances[2]));for(i=0;i<3;++i){if(distances[i]==minDistance){break;}}return remaining[i];}void main(){float d[4];d[0]=readDepth(vUv0);d[1]=readDepth(vUv1);d[2]=readDepth(vUv2);d[3]=readDepth(vUv3);int index=findBestDepth(d);\n#ifdef DOWNSAMPLE_NORMALS\nvec3 n[4];n[0]=texture2D(normalBuffer,vUv0).rgb;n[1]=texture2D(normalBuffer,vUv1).rgb;n[2]=texture2D(normalBuffer,vUv2).rgb;n[3]=texture2D(normalBuffer,vUv3).rgb;\n#else\nvec3 n[4];n[0]=vec3(0.0);n[1]=vec3(0.0);n[2]=vec3(0.0);n[3]=vec3(0.0);\n#endif\ngl_FragColor=vec4(n[index],d[index]);}",vertexShader:"uniform vec2 texelSize;varying vec2 vUv0;varying vec2 vUv1;varying vec2 vUv2;varying vec2 vUv3;void main(){vec2 uv=position.xy*0.5+0.5;vUv0=uv;vUv1=vec2(uv.x,uv.y+texelSize.y);vUv2=vec2(uv.x+texelSize.x,uv.y);vUv3=uv+texelSize;gl_Position=vec4(position.xy,1.0,1.0);}"})}},tV=class extends eY{get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}setDepthTexture(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.BasicDepthPacking;this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t}render(e,t,r,n,i){e.setRenderTarget(this.renderToScreen?null:this.renderTarget),e.render(this.scene,this.camera)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t),this.renderTarget.setSize(r.width,r.height),this.fullscreenMaterial.setSize(e,t)}initialize(e,t,r){let n=e.getContext();if(!(n.getExtension("EXT_color_buffer_float")||n.getExtension("EXT_color_buffer_half_float")))throw Error("Rendering to float texture is not supported.")}constructor({normalBuffer:e=null,resolutionScale:t=.5,width:r=te.AUTO_SIZE,height:n=te.AUTO_SIZE,resolutionX:i=r,resolutionY:a=n}={}){super("DepthDownsamplingPass");let s=new tJ;s.normalBuffer=e,this.fullscreenMaterial=s,this.needsDepthTexture=!0,this.needsSwap=!1,this.renderTarget=new eW.WebGLRenderTarget(1,1,{minFilter:eW.NearestFilter,magFilter:eW.NearestFilter,depthBuffer:!1,type:eW.FloatType}),this.renderTarget.texture.name="DepthDownsamplingPass.Target",this.renderTarget.texture.generateMipmaps=!1;let o=this.resolution=new te(this,i,a,t);o.addEventListener("change",e=>this.setSize(o.baseWidth,o.baseHeight))}},tQ=class extends eW.ShaderMaterial{set luminanceBuffer0(e){this.uniforms.luminanceBuffer0.value=e}setLuminanceBuffer0(e){this.uniforms.luminanceBuffer0.value=e}set luminanceBuffer1(e){this.uniforms.luminanceBuffer1.value=e}setLuminanceBuffer1(e){this.uniforms.luminanceBuffer1.value=e}set mipLevel1x1(e){this.defines.MIP_LEVEL_1X1=e.toFixed(1),this.needsUpdate=!0}setMipLevel1x1(e){this.mipLevel1x1=e}set deltaTime(e){this.uniforms.deltaTime.value=e}setDeltaTime(e){this.uniforms.deltaTime.value=e}get minLuminance(){return this.uniforms.minLuminance.value}set minLuminance(e){this.uniforms.minLuminance.value=e}getMinLuminance(){return this.uniforms.minLuminance.value}setMinLuminance(e){this.uniforms.minLuminance.value=e}get adaptationRate(){return this.uniforms.tau.value}set adaptationRate(e){this.uniforms.tau.value=e}getAdaptationRate(){return this.uniforms.tau.value}setAdaptationRate(e){this.uniforms.tau.value=e}constructor(){super({name:"AdaptiveLuminanceMaterial",defines:{MIP_LEVEL_1X1:"0.0"},uniforms:{luminanceBuffer0:new eW.Uniform(null),luminanceBuffer1:new eW.Uniform(null),minLuminance:new eW.Uniform(.01),deltaTime:new eW.Uniform(0),tau:new eW.Uniform(1)},extensions:{shaderTextureLOD:!0},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <packing>\n#define packFloatToRGBA(v) packDepthToRGBA(v)\n#define unpackRGBAToFloat(v) unpackRGBAToDepth(v)\nuniform lowp sampler2D luminanceBuffer0;uniform lowp sampler2D luminanceBuffer1;uniform float minLuminance;uniform float deltaTime;uniform float tau;varying vec2 vUv;void main(){float l0=unpackRGBAToFloat(texture2D(luminanceBuffer0,vUv));\n#if __VERSION__ < 300\nfloat l1=texture2DLodEXT(luminanceBuffer1,vUv,MIP_LEVEL_1X1).r;\n#else\nfloat l1=textureLod(luminanceBuffer1,vUv,MIP_LEVEL_1X1).r;\n#endif\nl0=max(minLuminance,l0);l1=max(minLuminance,l1);float adaptedLum=l0+(l1-l0)*(1.0-exp(-deltaTime*tau));gl_FragColor=(adaptedLum==1.0)?vec4(1.0):packFloatToRGBA(adaptedLum);}",vertexShader:eq})}};eW.Loader,eW.Loader,eW.Loader,eW.ShaderMaterial;var tW=class extends eW.ShaderMaterial{get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){this.uniforms.depthBuffer.value=e}set inputDepthPacking(e){this.defines.INPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get outputDepthPacking(){return Number(this.defines.OUTPUT_DEPTH_PACKING)}set outputDepthPacking(e){this.defines.OUTPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.BasicDepthPacking;this.depthBuffer=e,this.inputDepthPacking=t}getInputDepthPacking(){return Number(this.defines.INPUT_DEPTH_PACKING)}setInputDepthPacking(e){this.defines.INPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}getOutputDepthPacking(){return Number(this.defines.OUTPUT_DEPTH_PACKING)}setOutputDepthPacking(e){this.defines.OUTPUT_DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}get texelPosition(){return this.uniforms.texelPosition.value}getTexelPosition(){return this.uniforms.texelPosition.value}setTexelPosition(e){this.uniforms.texelPosition.value=e}get mode(){return this.depthCopyMode}set mode(e){this.depthCopyMode=e,this.defines.DEPTH_COPY_MODE=e.toFixed(0),this.needsUpdate=!0}getMode(){return this.mode}setMode(e){this.mode=e}constructor(){super({name:"DepthCopyMaterial",defines:{INPUT_DEPTH_PACKING:"0",OUTPUT_DEPTH_PACKING:"0",DEPTH_COPY_MODE:"0"},uniforms:{depthBuffer:new eW.Uniform(null),texelPosition:new eW.Uniform(new eW.Vector2)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,fragmentShader:"#include <packing>\nvarying vec2 vUv;\n#ifdef NORMAL_DEPTH\n#ifdef GL_FRAGMENT_PRECISION_HIGH\nuniform highp sampler2D normalDepthBuffer;\n#else\nuniform mediump sampler2D normalDepthBuffer;\n#endif\nfloat readDepth(const in vec2 uv){return texture2D(normalDepthBuffer,uv).a;}\n#else\n#if INPUT_DEPTH_PACKING == 3201\nuniform lowp sampler2D depthBuffer;\n#elif defined(GL_FRAGMENT_PRECISION_HIGH)\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\nfloat readDepth(const in vec2 uv){\n#if INPUT_DEPTH_PACKING == 3201\nreturn unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nreturn texture2D(depthBuffer,uv).r;\n#endif\n}\n#endif\nvoid main(){\n#if INPUT_DEPTH_PACKING == OUTPUT_DEPTH_PACKING\ngl_FragColor=texture2D(depthBuffer,vUv);\n#else\nfloat depth=readDepth(vUv);\n#if OUTPUT_DEPTH_PACKING == 3201\ngl_FragColor=(depth==1.0)?vec4(1.0):packDepthToRGBA(depth);\n#else\ngl_FragColor=vec4(vec3(depth),1.0);\n#endif\n#endif\n}",vertexShader:"varying vec2 vUv;\n#if DEPTH_COPY_MODE == 1\nuniform vec2 texelPosition;\n#endif\nvoid main(){\n#if DEPTH_COPY_MODE == 1\nvUv=texelPosition;\n#else\nvUv=position.xy*0.5+0.5;\n#endif\ngl_Position=vec4(position.xy,1.0,1.0);}"}),this.depthCopyMode=tI.FULL}},tX=class extends eW.ShaderMaterial{set inputBuffer(e){this.uniforms.inputBuffer.value=e}setInputBuffer(e){this.uniforms.inputBuffer.value=e}get depthBuffer(){return this.uniforms.depthBuffer.value}set depthBuffer(e){this.uniforms.depthBuffer.value=e}get depthPacking(){return Number(this.defines.DEPTH_PACKING)}set depthPacking(e){this.defines.DEPTH_PACKING=e.toFixed(0),this.needsUpdate=!0}setDepthBuffer(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.BasicDepthPacking;this.depthBuffer=e,this.depthPacking=t}setShaderData(e){this.setShaderParts(e.shaderParts),this.setDefines(e.defines),this.setUniforms(e.uniforms),this.setExtensions(e.extensions)}setShaderParts(e){return this.fragmentShader="#include <common>\n#include <packing>\n#include <dithering_pars_fragment>\n#define packFloatToRGBA(v) packDepthToRGBA(v)\n#define unpackRGBAToFloat(v) unpackRGBAToDepth(v)\n#ifdef FRAMEBUFFER_PRECISION_HIGH\nuniform mediump sampler2D inputBuffer;\n#else\nuniform lowp sampler2D inputBuffer;\n#endif\n#if DEPTH_PACKING == 3201\nuniform lowp sampler2D depthBuffer;\n#elif defined(GL_FRAGMENT_PRECISION_HIGH)\nuniform highp sampler2D depthBuffer;\n#else\nuniform mediump sampler2D depthBuffer;\n#endif\nuniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;vec4 sRGBToLinear(const 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.a);}float readDepth(const in vec2 uv){\n#if DEPTH_PACKING == 3201\nfloat depth=unpackRGBAToDepth(texture2D(depthBuffer,uv));\n#else\nfloat depth=texture2D(depthBuffer,uv).r;\n#endif\n#if defined(USE_LOGARITHMIC_DEPTH_BUFFER) || defined(LOG_DEPTH)\nfloat d=pow(2.0,depth*log2(cameraFar+1.0))-1.0;float a=cameraFar/(cameraFar-cameraNear);float b=cameraFar*cameraNear/(cameraNear-cameraFar);depth=a+b/d;\n#elif defined(USE_REVERSED_DEPTH_BUFFER)\ndepth=1.0-depth;\n#endif\nreturn depth;}float getViewZ(const in float depth){\n#ifdef PERSPECTIVE_CAMERA\nreturn perspectiveDepthToViewZ(depth,cameraNear,cameraFar);\n#else\nreturn orthographicDepthToViewZ(depth,cameraNear,cameraFar);\n#endif\n}vec3 RGBToHCV(const in vec3 RGB){vec4 P=mix(vec4(RGB.bg,-1.0,2.0/3.0),vec4(RGB.gb,0.0,-1.0/3.0),step(RGB.b,RGB.g));vec4 Q=mix(vec4(P.xyw,RGB.r),vec4(RGB.r,P.yzx),step(P.x,RGB.r));float C=Q.x-min(Q.w,Q.y);float H=abs((Q.w-Q.y)/(6.0*C+EPSILON)+Q.z);return vec3(H,C,Q.x);}vec3 RGBToHSL(const in vec3 RGB){vec3 HCV=RGBToHCV(RGB);float L=HCV.z-HCV.y*0.5;float S=HCV.y/(1.0-abs(L*2.0-1.0)+EPSILON);return vec3(HCV.x,S,L);}vec3 HueToRGB(const in float H){float R=abs(H*6.0-3.0)-1.0;float G=2.0-abs(H*6.0-2.0);float B=2.0-abs(H*6.0-4.0);return clamp(vec3(R,G,B),0.0,1.0);}vec3 HSLToRGB(const in vec3 HSL){vec3 RGB=HueToRGB(HSL.x);float C=(1.0-abs(2.0*HSL.z-1.0))*HSL.y;return(RGB-0.5)*C+HSL.z;}FRAGMENT_HEAD void main(){FRAGMENT_MAIN_UV vec4 color0=texture2D(inputBuffer,UV);vec4 color1=vec4(0.0);FRAGMENT_MAIN_IMAGE color0.a=clamp(color0.a,0.0,1.0);gl_FragColor=color0;\n#ifdef ENCODE_OUTPUT\n#include <colorspace_fragment>\n#endif\n#include <dithering_fragment>\n}".replace(e8.FRAGMENT_HEAD,e.get(e8.FRAGMENT_HEAD)||"").replace(e8.FRAGMENT_MAIN_UV,e.get(e8.FRAGMENT_MAIN_UV)||"").replace(e8.FRAGMENT_MAIN_IMAGE,e.get(e8.FRAGMENT_MAIN_IMAGE)||""),this.vertexShader="uniform vec2 resolution;uniform vec2 texelSize;uniform float cameraNear;uniform float cameraFar;uniform float aspect;uniform float time;varying vec2 vUv;VERTEX_HEAD void main(){vUv=position.xy*0.5+0.5;VERTEX_MAIN_SUPPORT gl_Position=vec4(position.xy,1.0,1.0);}".replace(e8.VERTEX_HEAD,e.get(e8.VERTEX_HEAD)||"").replace(e8.VERTEX_MAIN_SUPPORT,e.get(e8.VERTEX_MAIN_SUPPORT)||""),this.needsUpdate=!0,this}setDefines(e){for(let t of e.entries())this.defines[t[0]]=t[1];return this.needsUpdate=!0,this}setUniforms(e){for(let t of e.entries())this.uniforms[t[0]]=t[1];return this}setExtensions(e){for(let t of(this.extensions={},e))this.extensions[t]=!0;return this}get encodeOutput(){return void 0!==this.defines.ENCODE_OUTPUT}set encodeOutput(e){this.encodeOutput!==e&&(e?this.defines.ENCODE_OUTPUT="1":delete this.defines.ENCODE_OUTPUT,this.needsUpdate=!0)}isOutputEncodingEnabled(e){return this.encodeOutput}setOutputEncodingEnabled(e){this.encodeOutput=e}get time(){return this.uniforms.time.value}set time(e){this.uniforms.time.value=e}setDeltaTime(e){this.uniforms.time.value+=e}adoptCameraSettings(e){this.copyCameraSettings(e)}copyCameraSettings(e){e&&(this.uniforms.cameraNear.value=e.near,this.uniforms.cameraFar.value=e.far,e instanceof eW.PerspectiveCamera?this.defines.PERSPECTIVE_CAMERA="1":delete this.defines.PERSPECTIVE_CAMERA,this.needsUpdate=!0)}setSize(e,t){let r=this.uniforms;r.resolution.value.set(e,t),r.texelSize.value.set(1/e,1/t),r.aspect.value=e/t}static get Section(){return e8}constructor(e,t,r,n,i=!1){super({name:"EffectMaterial",defines:{THREE_REVISION:eW.REVISION.replace(/\D+/g,""),DEPTH_PACKING:"0",ENCODE_OUTPUT:"1"},uniforms:{inputBuffer:new eW.Uniform(null),depthBuffer:new eW.Uniform(null),resolution:new eW.Uniform(new eW.Vector2),texelSize:new eW.Uniform(new eW.Vector2),cameraNear:new eW.Uniform(.3),cameraFar:new eW.Uniform(1e3),aspect:new eW.Uniform(1),time:new eW.Uniform(0)},blending:eW.NoBlending,toneMapped:!1,depthWrite:!1,depthTest:!1,dithering:i}),e&&this.setShaderParts(e),t&&this.setDefines(t),r&&this.setUniforms(r),this.copyCameraSettings(n)}};eW.ShaderMaterial;var tZ=Number(eW.REVISION.replace(/\D+/g,"")),tY=255/256,t_=new Float32Array([255/256/0x1000000,255/256/65536,255/256/256,255/256]),tq=new Float32Array([tY,tY/256,tY/65536,1/0x1000000]);function t$(e,t,r){for(let n of t){let t="$1"+e+n.charAt(0).toUpperCase()+n.slice(1),i=RegExp("([^\\.])(\\b"+n+"\\b)","g");for(let e of r.entries())null!==e[1]&&r.set(e[0],e[1].replace(i,t))}}var t0=class extends eY{set mainScene(e){for(let t of this.effects)t.mainScene=e}set mainCamera(e){for(let t of(this.fullscreenMaterial.copyCameraSettings(e),this.effects))t.mainCamera=e}get encodeOutput(){return this.fullscreenMaterial.encodeOutput}set encodeOutput(e){this.fullscreenMaterial.encodeOutput=e}get dithering(){return this.fullscreenMaterial.dithering}set dithering(e){let t=this.fullscreenMaterial;t.dithering=e,t.needsUpdate=!0}setEffects(e){for(let e of this.effects)e.removeEventListener("change",this.listener);for(let t of(this.effects=e.sort((e,t)=>t.attributes-e.attributes),this.effects))t.addEventListener("change",this.listener)}updateMaterial(){let e=new e5,t=0;for(let r of this.effects)if(r.blendMode.blendFunction===tn.DST)e.attributes|=r.getAttributes()&e4.DEPTH;else if((e.attributes&r.getAttributes()&e4.CONVOLUTION)!=0)throw Error("Convolution effects cannot be merged (".concat(r.name,")"));else!function(e,t,r){let n=t.getFragmentShader(),i=t.getVertexShader(),a=void 0!==n&&/mainImage/.test(n),s=void 0!==n&&/mainUv/.test(n);if(r.attributes|=t.getAttributes(),void 0===n)throw Error("Missing fragment shader (".concat(t.name,")"));if(s&&(r.attributes&e4.CONVOLUTION)!=0)throw Error("Effects that transform UVs are incompatible with convolution effects (".concat(t.name,")"));if(a||s){let o=/\w+\s+(\w+)\([\w\s,]*\)\s*{/g,l=r.shaderParts,u=l.get(e8.FRAGMENT_HEAD)||"",c=l.get(e8.FRAGMENT_MAIN_UV)||"",d=l.get(e8.FRAGMENT_MAIN_IMAGE)||"",f=l.get(e8.VERTEX_HEAD)||"",h=l.get(e8.VERTEX_MAIN_SUPPORT)||"",p=new Set,m=new Set;if(s&&(c+=" ".concat(e,"MainUv(UV);\n"),r.uvTransformation=!0),null!==i&&/mainSupport/.test(i)){let t=/mainSupport *\([\w\s]*?uv\s*?\)/.test(i);for(let n of(h+=" ".concat(e,"MainSupport("),h+=t?"vUv);\n":");\n",i.matchAll(/(?:varying\s+\w+\s+([\S\s]*?);)/g)))for(let e of n[1].split(/\s*,\s*/))r.varyings.add(e),p.add(e),m.add(e);for(let e of i.matchAll(o))m.add(e[1])}for(let e of n.matchAll(o))m.add(e[1]);for(let e of t.defines.keys())m.add(e.replace(/\([\w\s,]*\)/g,""));for(let e of t.uniforms.keys())m.add(e);m.delete("while"),m.delete("for"),m.delete("if"),t.uniforms.forEach((t,n)=>r.uniforms.set(e+n.charAt(0).toUpperCase()+n.slice(1),t)),t.defines.forEach((t,n)=>r.defines.set(e+n.charAt(0).toUpperCase()+n.slice(1),t));let g=new Map([["fragment",n],["vertex",i]]);t$(e,m,r.defines),t$(e,m,g),n=g.get("fragment"),i=g.get("vertex");let A=t.blendMode;if(r.blendModes.set(A.blendFunction,A),a){null!==t.inputColorSpace&&t.inputColorSpace!==r.colorSpace&&(d+=t.inputColorSpace===eW.SRGBColorSpace?"color0 = sRGBTransferOETF(color0);\n ":"color0 = sRGBToLinear(color0);\n "),t.outputColorSpace!==eW.NoColorSpace?r.colorSpace=t.outputColorSpace:null!==t.inputColorSpace&&(r.colorSpace=t.inputColorSpace),d+="".concat(e,"MainImage(color0, UV, "),(r.attributes&e4.DEPTH)!=0&&/MainImage *\([\w\s,]*?depth[\w\s,]*?\)/.test(n)&&(d+="depth, ",r.readDepth=!0),d+="color1);\n ";let i=e+"BlendOpacity";r.uniforms.set(i,A.opacity),d+="color0 = blend".concat(A.blendFunction,"(color0, color1, ").concat(i,");\n\n "),u+="uniform float ".concat(i,";\n\n")}if(u+=n+"\n",null!==i&&(f+=i+"\n"),l.set(e8.FRAGMENT_HEAD,u),l.set(e8.FRAGMENT_MAIN_UV,c),l.set(e8.FRAGMENT_MAIN_IMAGE,d),l.set(e8.VERTEX_HEAD,f),l.set(e8.VERTEX_MAIN_SUPPORT,h),null!==t.extensions)for(let e of t.extensions)r.extensions.add(e)}else throw Error("Could not find mainImage or mainUv function (".concat(t.name,")"))}("e"+t++,r,e);let r=e.shaderParts.get(e8.FRAGMENT_HEAD),n=e.shaderParts.get(e8.FRAGMENT_MAIN_IMAGE),i=e.shaderParts.get(e8.FRAGMENT_MAIN_UV),a=/\bblend\b/g;for(let t of e.blendModes.values())r+=t.getShaderCode().replace(a,"blend".concat(t.blendFunction))+"\n";for(let[t,a]of((e.attributes&e4.DEPTH)!=0?(e.readDepth&&(n="float depth = readDepth(UV);\n\n "+n),this.needsDepthTexture=null===this.getDepthTexture()):this.needsDepthTexture=!1,e.colorSpace===eW.SRGBColorSpace&&(n+="color0 = sRGBToLinear(color0);\n "),e.uvTransformation?(i="vec2 transformedUv = vUv;\n"+i,e.defines.set("UV","transformedUv")):e.defines.set("UV","vUv"),e.shaderParts.set(e8.FRAGMENT_HEAD,r),e.shaderParts.set(e8.FRAGMENT_MAIN_IMAGE,n),e.shaderParts.set(e8.FRAGMENT_MAIN_UV,i),e.shaderParts))null!==a&&e.shaderParts.set(t,a.trim().replace(/^#/,"\n#"));this.skipRendering=0===t,this.needsSwap=!this.skipRendering,this.fullscreenMaterial.setShaderData(e)}recompile(){this.updateMaterial()}getDepthTexture(){return this.fullscreenMaterial.depthBuffer}setDepthTexture(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eW.BasicDepthPacking;for(let r of(this.fullscreenMaterial.depthBuffer=e,this.fullscreenMaterial.depthPacking=t,this.effects))r.setDepthTexture(e,t)}render(e,t,r,n,i){for(let r of this.effects)r.update(e,t,n);if(!this.skipRendering||this.renderToScreen){let i=this.fullscreenMaterial;i.inputBuffer=t.texture,i.time+=n*this.timeScale,e.setRenderTarget(this.renderToScreen?null:r),e.render(this.scene,this.camera)}}setSize(e,t){for(let r of(this.fullscreenMaterial.setSize(e,t),this.effects))r.setSize(e,t)}initialize(e,t,r){for(let n of(this.renderer=e,this.effects))n.initialize(e,t,r);this.updateMaterial(),void 0!==r&&r!==eW.UnsignedByteType&&(this.fullscreenMaterial.defines.FRAMEBUFFER_PRECISION_HIGH="1")}dispose(){for(let e of(super.dispose(),this.effects))e.removeEventListener("change",this.listener),e.dispose()}handleEvent(e){"change"===e.type&&this.recompile()}constructor(e,...t){super("EffectPass"),this.fullscreenMaterial=new tX(null,null,null,e),this.listener=e=>this.handleEvent(e),this.effects=[],this.setEffects(t),this.skipRendering=!1,this.minTime=1,this.maxTime=1/0,this.timeScale=1}},t1=class extends eY{set mainScene(e){this.renderPass.mainScene=e}set mainCamera(e){this.renderPass.mainCamera=e}get texture(){return this.renderTarget.texture}getTexture(){return this.renderTarget.texture}getResolution(){return this.resolution}getResolutionScale(){return this.resolution.scale}setResolutionScale(e){this.resolution.scale=e}render(e,t,r,n,i){let a=this.renderToScreen?null:this.renderTarget;this.renderPass.render(e,a,a)}setSize(e,t){let r=this.resolution;r.setBaseSize(e,t),this.renderTarget.setSize(r.width,r.height)}constructor(e,t,{renderTarget:r,resolutionScale:n=1,width:i=te.AUTO_SIZE,height:a=te.AUTO_SIZE,resolutionX:s=i,resolutionY:o=a}={}){super("NormalPass"),this.needsSwap=!1,this.renderPass=new tE(e,t,new eW.MeshNormalMaterial);let l=this.renderPass;l.ignoreBackground=!0,l.skipShadowMapUpdate=!0;let u=l.getClearPass();u.overrideClearColor=new eW.Color(7829503),u.overrideClearAlpha=1,this.renderTarget=r,void 0===this.renderTarget&&(this.renderTarget=new eW.WebGLRenderTarget(1,1,{minFilter:eW.NearestFilter,magFilter:eW.NearestFilter}),this.renderTarget.texture.name="NormalPass.Target");let c=this.resolution=new te(this,s,o,n);c.addEventListener("change",e=>this.setSize(c.baseWidth,c.baseHeight))}};function t2(e,t,r,n){var i;return(i=e+(t-e)*.75)+(r+(n-r)*.75-i)*.875}function t9(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array(3),new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([1,0,0]),new Float32Array([1,0,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([1,0,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([1,1,0]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,1,0]),new Float32Array([0,1,1]),new Float32Array([1,1,1]),new Float32Array([0,0,0]),new Float32Array([0,0,1]),new Float32Array([0,1,1]),new Float32Array([1,1,1]),new Float32Array(2),new Float32Array(2),new Float32Array([0,-.25,.25,-.125,.125,-.375,.375]),new Float32Array([0,0]),new Float32Array([.25,-.25]),new Float32Array([-.25,.25]),new Float32Array([.125,-.125]),new Float32Array([-.125,.125]),new Uint8Array([0,0]),new Uint8Array([3,0]),new Uint8Array([0,3]),new Uint8Array([3,3]),new Uint8Array([1,0]),new Uint8Array([4,0]),new Uint8Array([1,3]),new Uint8Array([4,3]),new Uint8Array([0,1]),new Uint8Array([3,1]),new Uint8Array([0,4]),new Uint8Array([3,4]),new Uint8Array([1,1]),new Uint8Array([4,1]),new Uint8Array([1,4]),new Uint8Array([4,4]),new Uint8Array([0,0]),new Uint8Array([1,0]),new Uint8Array([0,2]),new Uint8Array([1,2]),new Uint8Array([2,0]),new Uint8Array([3,0]),new Uint8Array([2,2]),new Uint8Array([3,2]),new Uint8Array([0,1]),new Uint8Array([1,1]),new Uint8Array([0,3]),new Uint8Array([1,3]),new Uint8Array([2,1]),new Uint8Array([3,1]),new Uint8Array([2,3]),new Uint8Array([3,3]),t2(0,0,0,0),new Float32Array([0,0,0,0]),t2(0,0,0,1),new Float32Array([0,0,0,1]),t2(0,0,1,0),new Float32Array([0,0,1,0]),t2(0,0,1,1),new Float32Array([0,0,1,1]),t2(0,1,0,0),new Float32Array([0,1,0,0]),t2(0,1,0,1),new Float32Array([0,1,0,1]),t2(0,1,1,0),new Float32Array([0,1,1,0]),t2(0,1,1,1),new Float32Array([0,1,1,1]),t2(1,0,0,0),new Float32Array([1,0,0,0]),t2(1,0,0,1),new Float32Array([1,0,0,1]),t2(1,0,1,0),new Float32Array([1,0,1,0]),t2(1,0,1,1),new Float32Array([1,0,1,1]),t2(1,1,0,0),new Float32Array([1,1,0,0]),t2(1,1,0,1),new Float32Array([1,1,0,1]),t2(1,1,1,0),new Float32Array([1,1,1,0]),t2(1,1,1,1),new Float32Array([1,1,1,1]);function t3(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function t4(e,t){if(e){if("string"==typeof e)return t3(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);if("Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return t3(e,t)}}function t8(e){return function(e){if(Array.isArray(e))return t3(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||t4(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}new eO.Vector2,new eO.Vector2;function t5(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}var t6=function e(t,r,n){var i=this;t5(this,e),t9(this,"dot2",function(e,t){return i.x*e+i.y*t}),t9(this,"dot3",function(e,t,r){return i.x*e+i.y*t+i.z*r}),this.x=t,this.y=r,this.z=n},t7=[new t6(1,1,0),new t6(-1,1,0),new t6(1,-1,0),new t6(-1,-1,0),new t6(1,0,1),new t6(-1,0,1),new t6(1,0,-1),new t6(-1,0,-1),new t6(0,1,1),new t6(0,-1,1),new t6(0,1,-1),new t6(0,-1,-1)],re=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180],rt=Array(512),rr=Array(512);!function(e){e>0&&e<1&&(e*=65536),(e=Math.floor(e))<256&&(e|=e<<8);for(var t,r=0;r<256;r++)t=1&r?re[r]^255&e:re[r]^e>>8&255,rt[r]=rt[r+256]=t,rr[r]=rr[r+256]=t7[t%12]}(0);function rn(e){var t=function(e){if("number"==typeof e)e=Math.abs(e);else if("string"==typeof e){var t=e;e=0;for(var r=0;r<t.length;r++)e=(e+(r+1)*(t.charCodeAt(r)%96))%0x7fffffff}return 0===e&&(e=311),e}(e);return function(){var e=48271*t%0x7fffffff;return t=e,e/0x7fffffff}}new function e(t){var r=this;t5(this,e),t9(this,"seed",0),t9(this,"init",function(e){r.seed=e,r.value=rn(e)}),t9(this,"value",rn(this.seed)),this.init(t)}(Math.random());var ri=function(e){return 1/(1+e+.48*e*e+.235*e*e*e)};function ra(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.25,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.01,a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1/0,s=arguments.length>6&&void 0!==arguments[6]?arguments[6]:ri,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:.001,l="velocity_"+t;if(void 0===e.__damp&&(e.__damp={}),void 0===e.__damp[l]&&(e.__damp[l]=0),Math.abs(e[t]-r)<=o)return e[t]=r,!1;var u=2/(n=Math.max(1e-4,n)),c=s(u*i),d=e[t]-r,f=r,h=a*n;d=Math.min(Math.max(d,-h),h),r=e[t]-d;var p=(e.__damp[l]+u*d)*i;e.__damp[l]=(e.__damp[l]-u*p)*c;var m=r+(d+p)*c;return f-e[t]>0==m>f&&(m=f,e.__damp[l]=(m-f)/i),e[t]=m,!0}function rs(e,t,r,n,i,a,s,o){var l,u,c,d;return ra(e,t,e[t]+(c=(l=r-e[t])-Math.floor(l/(u=2*Math.PI))*u,(d=Math.max(0,Math.min(u,c)))>Math.PI&&(d-=2*Math.PI),d),n,i,a,s,o)}var ro=new eO.Vector2,rl=new eO.Vector3;function ru(e,t,r,n,o,l,u){return"number"==typeof t?rl.setScalar(t):Array.isArray(t)?rl.set(t[0],t[1],t[2]):rl.copy(t),i=ra(e,"x",rl.x,r,n,o,l,u),a=ra(e,"y",rl.y,r,n,o,l,u),s=ra(e,"z",rl.z,r,n,o,l,u),i||a||s}var rc=new eO.Vector4,rd=new eO.Euler,rf=new eO.Color,rh=new eO.Quaternion,rp=new eO.Vector4,rm=new eO.Vector4,rv=new eO.Vector4;function rg(e,t,r,n,i,a,s){Array.isArray(t)?rh.set(t[0],t[1],t[2],t[3]):rh.copy(t);var o=e.dot(rh)>0?1:-1;return rh.x*=o,rh.y*=o,rh.z*=o,rh.w*=o,A=ra(e,"x",rh.x,r,n,i,a,s),y=ra(e,"y",rh.y,r,n,i,a,s),x=ra(e,"z",rh.z,r,n,i,a,s),B=ra(e,"w",rh.w,r,n,i,a,s),rp.set(e.x,e.y,e.z,e.w).normalize(),rm.set(e.__damp.velocity_x,e.__damp.velocity_y,e.__damp.velocity_z,e.__damp.velocity_w),rv.copy(rp).multiplyScalar(rm.dot(rp)/rp.dot(rp)),e.__damp.velocity_x-=rv.x,e.__damp.velocity_y-=rv.y,e.__damp.velocity_z-=rv.z,e.__damp.velocity_w-=rv.w,e.set(rp.x,rp.y,rp.z,rp.w),A||y||x||B}var rA=new eO.Spherical,ry=new eO.Matrix4,rx=new eO.Vector3,rB=new eO.Quaternion,rC=new eO.Vector3,rS=Object.freeze({__proto__:null,rsqw:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.01,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1/(2*Math.PI);return r/Math.atan(1/t)*Math.atan(Math.sin(2*Math.PI*e*n)/t)},exp:ri,damp:ra,dampAngle:rs,damp2:function(e,t,i,a,s,o,l){return"number"==typeof t?ro.setScalar(t):Array.isArray(t)?ro.set(t[0],t[1]):ro.copy(t),r=ra(e,"x",ro.x,i,a,s,o,l),n=ra(e,"y",ro.y,i,a,s,o,l),r||n},damp3:ru,damp4:function(e,t,r,n,i,a,s){return"number"==typeof t?rc.setScalar(t):Array.isArray(t)?rc.set(t[0],t[1],t[2],t[3]):rc.copy(t),o=ra(e,"x",rc.x,r,n,i,a,s),l=ra(e,"y",rc.y,r,n,i,a,s),u=ra(e,"z",rc.z,r,n,i,a,s),c=ra(e,"w",rc.w,r,n,i,a,s),o||l||u||c},dampE:function(e,t,r,n,i,a,s){return Array.isArray(t)?rd.set(t[0],t[1],t[2],t[3]):rd.copy(t),d=rs(e,"x",rd.x,r,n,i,a,s),f=rs(e,"y",rd.y,r,n,i,a,s),h=rs(e,"z",rd.z,r,n,i,a,s),d||f||h},dampC:function(e,t,r,n,i,a,s){return t instanceof eO.Color?rf.copy(t):Array.isArray(t)?rf.setRGB(t[0],t[1],t[2]):rf.set(t),p=ra(e,"r",rf.r,r,n,i,a,s),m=ra(e,"g",rf.g,r,n,i,a,s),g=ra(e,"b",rf.b,r,n,i,a,s),p||m||g},dampQ:rg,dampS:function(e,t,r,n,i,a,s){return Array.isArray(t)?rA.set(t[0],t[1],t[2]):rA.copy(t),C=ra(e,"radius",rA.radius,r,n,i,a,s),S=rs(e,"phi",rA.phi,r,n,i,a,s),E=rs(e,"theta",rA.theta,r,n,i,a,s),C||S||E},dampM:function(e,t,r,n,i,a,s){return void 0===e.__damp&&(e.__damp={position:new eO.Vector3,rotation:new eO.Quaternion,scale:new eO.Vector3},e.decompose(e.__damp.position,e.__damp.rotation,e.__damp.scale)),Array.isArray(t)?ry.set.apply(ry,t8(t)):ry.copy(t),ry.decompose(rx,rB,rC),T=ru(e.__damp.position,rx,r,n,i,a,s),b=rg(e.__damp.rotation,rB,r,n,i,a,s),D=ru(e.__damp.scale,rC,r,n,i,a,s),e.compose(e.__damp.position,e.__damp.rotation,e.__damp.scale),T||b||D}});eO.BufferGeometry;var rE=e.i(99749),rT=eO,rb=eO;new rb.OrthographicCamera(-1,1,1,-1,0,1);class rD extends rb.BufferGeometry{constructor(){super(),this.setAttribute("position",new rb.Float32BufferAttribute([-1,3,0,-1,-1,0,3,-1,0],3)),this.setAttribute("uv",new rb.Float32BufferAttribute([0,2,0,0,2,0],2))}}new rD;class rM extends rT.BufferGeometry{computeBoundingSphere(){}constructor(){super(),(0,rE._)(this,"boundingSphere",new rT.Sphere),this.setAttribute("position",new rT.BufferAttribute(new Float32Array([-1,-1,3,-1,-1,3]),2)),this.setAttribute("uv",new rT.BufferAttribute(new Float32Array([0,0,2,0,0,2]),2))}}let rw=new rM,rF=new rT.OrthographicCamera;class rR{render(e){e.render(this._mesh,rF)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}dispose(){this._mesh.material.dispose(),this._mesh.geometry.dispose()}constructor(e){this._mesh=new rT.Mesh(rw,e),this._mesh.frustumCulled=!1}}let rI={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},sceneNormal:{value:null},projMat:{value:new rT.Matrix4},viewMat:{value:new rT.Matrix4},projViewMat:{value:new rT.Matrix4},projectionMatrixInv:{value:new rT.Matrix4},viewMatrixInv:{value:new rT.Matrix4},cameraPos:{value:new rT.Vector3},resolution:{value:new rT.Vector2},biasAdjustment:{value:new rT.Vector2},time:{value:0},samples:{value:[]},bluenoise:{value:null},distanceFalloff:{value:1},radius:{value:5},near:{value:.1},far:{value:1e3},ortho:{value:!1},screenSpaceRadius:{value:!1},frame:{value:0}},depthWrite:!1,depthTest:!1,vertexShader:"\nvarying vec2 vUv;\nvoid main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n}",fragmentShader:"\n #define SAMPLES 16\n #define FSAMPLES 16.0\nuniform sampler2D sceneDiffuse;\nuniform highp sampler2D sceneNormal;\nuniform highp sampler2D sceneDepth;\nuniform mat4 projectionMatrixInv;\nuniform mat4 viewMatrixInv;\nuniform mat4 projMat;\nuniform mat4 viewMat;\nuniform mat4 projViewMat;\nuniform vec3 cameraPos;\nuniform vec2 resolution;\nuniform vec2 biasAdjustment;\nuniform float time;\nuniform vec3[SAMPLES] samples;\nuniform float radius;\nuniform float distanceFalloff;\nuniform float near;\nuniform float far;\nuniform float frame;\nuniform bool ortho;\nuniform bool screenSpaceRadius;\nuniform sampler2D bluenoise;\n varying vec2 vUv;\n highp float linearize_depth(highp float d, highp float zNear,highp float zFar)\n {\n return (zFar * zNear) / (zFar - d * (zFar - zNear));\n }\n highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {\n return nearZ + (farZ - nearZ) * d;\n }\n highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {\n float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n /*return ortho ? linearize_depth_ortho(\n linDepth,\n nearZ,\n farZ\n ) :linearize_depth(linDepth, nearZ, farZ);*/\n #ifdef ORTHO\n\n return linearize_depth_ortho(d, nearZ, farZ);\n\n #else\n return linearize_depth(linDepth, nearZ, farZ);\n #endif\n }\n\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n #ifdef LOGDEPTH\n #ifndef ORTHO\n return getWorldPosLog(vec3(coord, depth));\n #endif\n #endif\n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n\n vec3 computeNormal(vec3 worldPos, vec2 vUv) {\n ivec2 p = ivec2(vUv * resolution);\n #ifdef REVERSEDEPTH\n float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x;\n float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n #else\n float c0 = texelFetch(sceneDepth, p, 0).x;\n float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n #endif\n\n float dl = abs((2.0 * l1 - l2) - c0);\n float dr = abs((2.0 * r1 - r2) - c0);\n float db = abs((2.0 * b1 - b2) - c0);\n float dt = abs((2.0 * t1 - t2) - c0);\n\n vec3 ce = getWorldPos(c0, vUv).xyz;\n\n vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz\n : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz\n : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;\n\n return normalize(cross(dpdx, dpdy));\n}\n\nmat3 makeRotationZ(float theta) {\n float c = cos(theta);\n float s = sin(theta);\n return mat3(c, - s, 0,\n s, c, 0,\n 0, 0, 1);\n }\n\nvoid main() {\n vec4 diffuse = texture2D(sceneDiffuse, vUv);\n #ifdef REVERSEDEPTH\n float depth = 1.0 - texture2D(sceneDepth, vUv).x;\n #else\n float depth = texture2D(sceneDepth, vUv).x;\n #endif\n if (depth == 1.0) {\n gl_FragColor = vec4(vec3(1.0), 1.0);\n return;\n }\n vec3 worldPos = getWorldPos(depth, vUv);\n #ifdef HALFRES\n vec3 normal = texture2D(sceneNormal, vUv).rgb;\n #else\n vec3 normal = computeNormal(worldPos, vUv);\n #endif\n vec4 noise = texture2D(bluenoise, gl_FragCoord.xy / 128.0);\n vec2 harmoniousNumbers = vec2(\n 1.618033988749895,\n 1.324717957244746\n );\n noise.rg += harmoniousNumbers * frame;\n noise.rg = fract(noise.rg);\n vec3 helperVec = vec3(0.0, 1.0, 0.0);\n if (dot(helperVec, normal) > 0.99) {\n helperVec = vec3(1.0, 0.0, 0.0);\n }\n vec3 tangent = normalize(cross(helperVec, normal));\n vec3 bitangent = cross(normal, tangent);\n mediump mat3 tbn = mat3(tangent, bitangent, normal) * makeRotationZ( noise.r * 3.1415962 * 2.0) ;\n\n mediump float occluded = 0.0;\n mediump float totalWeight = 0.0;\n float radiusToUse = screenSpaceRadius ? distance(\n worldPos,\n getWorldPos(depth, vUv +\n vec2(radius, 0.0) / resolution)\n ) : radius;\n float distanceFalloffToUse =screenSpaceRadius ?\n radiusToUse * distanceFalloff\n : radiusToUse * distanceFalloff * 0.2;\n float bias = (min(\n 0.1,\n distanceFalloffToUse * 0.1\n ) / near) * fwidth(distance(worldPos, cameraPos)) / radiusToUse;\n bias = biasAdjustment.x + biasAdjustment.y * bias;\n mediump float offsetMove = noise.g;\n mediump float offsetMoveInv = 1.0 / FSAMPLES;\n float farTimesNear = far * near;\n float farMinusNear = far - near;\n \n for(int i = 0; i < SAMPLES; i++) {\n mediump vec3 sampleDirection = tbn * samples[i];\n\n float moveAmt = fract(offsetMove);\n offsetMove += offsetMoveInv;\n vec3 samplePos = worldPos + radiusToUse * moveAmt * sampleDirection;\n vec4 offset = projMat * vec4(samplePos, 1.0);\n offset.xyz /= offset.w;\n offset.xyz = offset.xyz * 0.5 + 0.5;\n \n if (all(greaterThan(offset.xyz * (1.0 - offset.xyz), vec3(0.0)))) {\n #ifdef REVERSEDEPTH\n float sampleDepth = 1.0 - textureLod(sceneDepth, offset.xy, 0.0).x;\n #else\n float sampleDepth = textureLod(sceneDepth, offset.xy, 0.0).x;\n #endif\n\n /*#ifdef LOGDEPTH\n float distSample = linearize_depth_log(sampleDepth, near, far);\n #else\n #ifdef ORTHO\n float distSample = near + farMinusNear * sampleDepth;\n #else\n float distSample = (farTimesNear) / (far - sampleDepth * farMinusNear);\n #endif\n #endif*/\n #ifdef ORTHO\n float distSample = near + sampleDepth * farMinusNear;\n #else\n #ifdef LOGDEPTH\n float distSample = linearize_depth_log(sampleDepth, near, far);\n #else\n float distSample = (farTimesNear) / (far - sampleDepth * farMinusNear);\n #endif\n #endif\n \n #ifdef ORTHO\n float distWorld = near + offset.z * farMinusNear;\n #else\n float distWorld = (farTimesNear) / (far - offset.z * farMinusNear);\n #endif\n \n mediump float rangeCheck = smoothstep(0.0, 1.0, distanceFalloffToUse / (abs(distSample - distWorld)));\n vec2 diff = gl_FragCoord.xy - floor(offset.xy * resolution);\n occluded += rangeCheck * float(distSample != distWorld) * float(sampleDepth != depth) * step(distSample + bias, distWorld) * step(\n 1.0,\n dot(diff, diff)\n );\n \n totalWeight ++;\n }\n }\n float occ = clamp(1.0 - occluded / (totalWeight == 0.0 ? 1.0 : totalWeight), 0.0, 1.0);\n gl_FragColor = vec4(occ, 0.5 + 0.5 * normal);\n}"},rP={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},transparencyDWFalse:{value:null},transparencyDWTrue:{value:null},transparencyDWTrueDepth:{value:null},transparencyAware:{value:!1},projMat:{value:new rT.Matrix4},viewMat:{value:new rT.Matrix4},projectionMatrixInv:{value:new rT.Matrix4},viewMatrixInv:{value:new rT.Matrix4},cameraPos:{value:new rT.Vector3},resolution:{value:new rT.Vector2},color:{value:new rT.Vector3(0,0,0)},blueNoise:{value:null},downsampledDepth:{value:null},time:{value:0},intensity:{value:10},renderMode:{value:0},gammaCorrection:{value:!1},ortho:{value:!1},near:{value:.1},far:{value:1e3},screenSpaceRadius:{value:!1},radius:{value:0},distanceFalloff:{value:1},fog:{value:!1},fogExp:{value:!1},fogDensity:{value:0},fogNear:{value:1/0},fogFar:{value:1/0},colorMultiply:{value:!0},aoTones:{value:0}},depthWrite:!1,depthTest:!1,vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n }",fragmentShader:"\n uniform sampler2D sceneDiffuse;\n uniform highp sampler2D sceneDepth;\n uniform highp sampler2D downsampledDepth;\n uniform highp sampler2D transparencyDWFalse;\n uniform highp sampler2D transparencyDWTrue;\n uniform highp sampler2D transparencyDWTrueDepth;\n uniform sampler2D tDiffuse;\n uniform sampler2D blueNoise;\n uniform vec2 resolution;\n uniform vec3 color;\n uniform mat4 projectionMatrixInv;\n uniform mat4 viewMatrixInv;\n uniform float intensity;\n uniform float renderMode;\n uniform float near;\n uniform float far;\n uniform float aoTones;\n uniform bool gammaCorrection;\n uniform bool ortho;\n uniform bool screenSpaceRadius;\n uniform bool fog;\n uniform bool fogExp;\n uniform bool colorMultiply;\n uniform bool transparencyAware;\n uniform float fogDensity;\n uniform float fogNear;\n uniform float fogFar;\n uniform float radius;\n uniform float distanceFalloff;\n uniform vec3 cameraPos;\n varying vec2 vUv;\n highp float linearize_depth(highp float d, highp float zNear,highp float zFar)\n {\n return (zFar * zNear) / (zFar - d * (zFar - zNear));\n }\n highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {\n return nearZ + (farZ - nearZ) * d;\n }\n highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {\n float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n return ortho ? linearize_depth_ortho(\n linDepth,\n nearZ,\n farZ\n ) :linearize_depth(linDepth, nearZ, farZ);\n }\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n #ifdef LOGDEPTH\n #ifndef ORTHO\n return getWorldPosLog(vec3(coord, depth));\n #endif\n #endif\n // }\n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n \n vec3 computeNormal(vec3 worldPos, vec2 vUv) {\n ivec2 p = ivec2(vUv * resolution);\n #ifdef REVERSEDEPTH\n float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x;\n float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n #else\n float c0 = texelFetch(sceneDepth, p, 0).x;\n float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n #endif\n \n float dl = abs((2.0 * l1 - l2) - c0);\n float dr = abs((2.0 * r1 - r2) - c0);\n float db = abs((2.0 * b1 - b2) - c0);\n float dt = abs((2.0 * t1 - t2) - c0);\n \n vec3 ce = getWorldPos(c0, vUv).xyz;\n \n vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz\n : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz\n : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;\n \n return normalize(cross(dpdx, dpdy));\n }\n\n #include <common>\n #include <dithering_pars_fragment>\n void main() {\n //vec4 texel = texture2D(tDiffuse, vUv);//vec3(0.0);\n vec4 sceneTexel = texture2D(sceneDiffuse, vUv);\n #ifdef REVERSEDEPTH\n float depth = 1.0 - texture2D(sceneDepth, vUv).x;\n #else\n float depth = texture2D(sceneDepth, vUv).x;\n #endif\n #ifdef HALFRES \n vec4 texel;\n if (depth == 1.0) {\n texel = vec4(0.0, 0.0, 0.0, 1.0);\n } else {\n vec3 worldPos = getWorldPos(depth, vUv);\n vec3 normal = computeNormal(getWorldPos(depth, vUv), vUv);\n // vec4 texel = texture2D(tDiffuse, vUv);\n // Find closest depth;\n float totalWeight = 0.0;\n float radiusToUse = screenSpaceRadius ? distance(\n worldPos,\n getWorldPos(depth, vUv +\n vec2(radius, 0.0) / resolution)\n ) : radius;\n float distanceFalloffToUse =screenSpaceRadius ?\n radiusToUse * distanceFalloff\n : distanceFalloff;\n for(float x = -1.0; x <= 1.0; x++) {\n for(float y = -1.0; y <= 1.0; y++) {\n vec2 offset = vec2(x, y);\n ivec2 p = ivec2(\n (vUv * resolution * 0.5) + offset\n );\n vec2 pUv = vec2(p) / (resolution * 0.5);\n float sampleDepth = texelFetch(downsampledDepth,p, 0).x;\n vec4 sampleInfo = texelFetch(tDiffuse, p, 0);\n vec3 normalSample = sampleInfo.gba * 2.0 - 1.0;\n vec3 worldPosSample = getWorldPos(sampleDepth, pUv);\n float tangentPlaneDist = abs(dot(worldPosSample - worldPos, normal));\n float rangeCheck = exp(-1.0 * tangentPlaneDist * (1.0 / distanceFalloffToUse)) * max(dot(normal, normalSample), 0.0);\n float weight = rangeCheck;\n totalWeight += weight;\n texel += sampleInfo * weight;\n }\n }\n if (totalWeight == 0.0) {\n texel = texture2D(tDiffuse, vUv);\n } else {\n texel /= totalWeight;\n }\n }\n #else\n vec4 texel = texture2D(tDiffuse, vUv);\n #endif\n\n #ifdef LOGDEPTH\n texel.r = clamp(texel.r, 0.0, 1.0);\n if (texel.r == 0.0) {\n texel.r = 1.0;\n }\n #endif\n \n float finalAo = pow(texel.r, intensity);\n if (aoTones > 0.0) {\n finalAo = ceil(finalAo * aoTones) / aoTones;\n }\n float fogFactor;\n float fogDepth = distance(\n cameraPos,\n getWorldPos(depth, vUv)\n );\n if (fog) {\n if (fogExp) {\n fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\n } else {\n fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n }\n }\n if (transparencyAware) {\n float transparencyDWOff = texture2D(transparencyDWFalse, vUv).a;\n float transparencyDWOn = texture2D(transparencyDWTrue, vUv).a;\n float adjustmentFactorOff = transparencyDWOff;\n #ifdef REVERSEDEPTH\n float depthSample = 1.0 - texture2D(sceneDepth, vUv).r;\n float trueDepthSample = 1.0 - texture2D(transparencyDWTrueDepth, vUv).r;\n #else\n float depthSample = texture2D(sceneDepth, vUv).r;\n float trueDepthSample = texture2D(transparencyDWTrueDepth, vUv).r;\n #endif\n float adjustmentFactorOn = (1.0 - transparencyDWOn) * (\n trueDepthSample == depthSample ? 1.0 : 0.0\n );\n float adjustmentFactor = max(adjustmentFactorOff, adjustmentFactorOn);\n finalAo = mix(finalAo, 1.0, adjustmentFactor);\n }\n finalAo = mix(finalAo, 1.0, fogFactor);\n vec3 aoApplied = color * mix(vec3(1.0), sceneTexel.rgb, float(colorMultiply));\n if (renderMode == 0.0) {\n gl_FragColor = vec4( mix(sceneTexel.rgb, aoApplied, 1.0 - finalAo), sceneTexel.a);\n } else if (renderMode == 1.0) {\n gl_FragColor = vec4( mix(vec3(1.0), aoApplied, 1.0 - finalAo), sceneTexel.a);\n } else if (renderMode == 2.0) {\n gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);\n } else if (renderMode == 3.0) {\n if (vUv.x < 0.5) {\n gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);\n } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) {\n gl_FragColor = vec4(1.0);\n } else {\n gl_FragColor = vec4( mix(sceneTexel.rgb, aoApplied, 1.0 - finalAo), sceneTexel.a);\n }\n } else if (renderMode == 4.0) {\n if (vUv.x < 0.5) {\n gl_FragColor = vec4( sceneTexel.rgb, sceneTexel.a);\n } else if (abs(vUv.x - 0.5) < 1.0 / resolution.x) {\n gl_FragColor = vec4(1.0);\n } else {\n gl_FragColor = vec4( mix(vec3(1.0), aoApplied, 1.0 - finalAo), sceneTexel.a);\n }\n }\n #include <dithering_fragment>\n if (gammaCorrection) {\n gl_FragColor = sRGBTransferOETF(gl_FragColor);\n }\n }\n "},rL={uniforms:{sceneDiffuse:{value:null},sceneDepth:{value:null},tDiffuse:{value:null},projMat:{value:new rT.Matrix4},viewMat:{value:new rT.Matrix4},projectionMatrixInv:{value:new rT.Matrix4},viewMatrixInv:{value:new rT.Matrix4},cameraPos:{value:new rT.Vector3},resolution:{value:new rT.Vector2},time:{value:0},r:{value:5},blueNoise:{value:null},radius:{value:12},worldRadius:{value:5},index:{value:0},poissonDisk:{value:[]},distanceFalloff:{value:1},near:{value:.1},far:{value:1e3},screenSpaceRadius:{value:!1}},depthWrite:!1,depthTest:!1,vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1.0);\n }",fragmentShader:"\n uniform sampler2D sceneDiffuse;\n uniform highp sampler2D sceneDepth;\n uniform sampler2D tDiffuse;\n uniform sampler2D blueNoise;\n uniform mat4 projectionMatrixInv;\n uniform mat4 viewMatrixInv;\n uniform vec2 resolution;\n uniform float r;\n uniform float radius;\n uniform float worldRadius;\n uniform float index;\n uniform float near;\n uniform float far;\n uniform float distanceFalloff;\n uniform bool screenSpaceRadius;\n varying vec2 vUv;\n\n highp float linearize_depth(highp float d, highp float zNear,highp float zFar)\n {\n highp float z_n = 2.0 * d - 1.0;\n return 2.0 * zNear * zFar / (zFar + zNear - z_n * (zFar - zNear));\n }\n highp float linearize_depth_log(highp float d, highp float nearZ,highp float farZ) {\n float depth = pow(2.0, d * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n return linearize_depth(linDepth, nearZ, farZ);\n }\n highp float linearize_depth_ortho(highp float d, highp float nearZ, highp float farZ) {\n return nearZ + (farZ - nearZ) * d;\n }\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n #ifdef LOGDEPTH\n #ifndef ORTHO\n return getWorldPosLog(vec3(coord, depth));\n #endif\n #endif\n \n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n #include <common>\n #define NUM_SAMPLES 16\n uniform vec2 poissonDisk[NUM_SAMPLES];\n void main() {\n const float pi = 3.14159;\n vec2 texelSize = vec2(1.0 / resolution.x, 1.0 / resolution.y);\n vec2 uv = vUv;\n vec4 data = texture2D(tDiffuse, vUv);\n float occlusion = data.r;\n float baseOcc = data.r;\n vec3 normal = data.gba * 2.0 - 1.0;\n float count = 1.0;\n float d = texture2D(sceneDepth, vUv).x;\n if (d == 1.0) {\n gl_FragColor = data;\n return;\n }\n vec3 worldPos = getWorldPos(d, vUv);\n float size = radius;\n float angle;\n if (index == 0.0) {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).w * PI2;\n } else if (index == 1.0) {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).z * PI2;\n } else if (index == 2.0) {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).y * PI2;\n } else {\n angle = texture2D(blueNoise, gl_FragCoord.xy / 128.0).x * PI2;\n }\n\n mat2 rotationMatrix = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n float radiusToUse = screenSpaceRadius ? distance(\n worldPos,\n getWorldPos(d, vUv +\n vec2(worldRadius, 0.0) / resolution)\n ) : worldRadius;\n float distanceFalloffToUse =screenSpaceRadius ?\n radiusToUse * distanceFalloff\n : radiusToUse * distanceFalloff * 0.2;\n\n float invDistance = (1.0 / distanceFalloffToUse);\n for(int i = 0; i < NUM_SAMPLES; i++) {\n vec2 offset = (rotationMatrix * poissonDisk[i]) * texelSize * size;\n vec4 dataSample = texture2D(tDiffuse, uv + offset);\n float occSample = dataSample.r;\n vec3 normalSample = dataSample.gba * 2.0 - 1.0;\n float dSample = texture2D(sceneDepth, uv + offset).x;\n vec3 worldPosSample = getWorldPos(dSample, uv + offset);\n float tangentPlaneDist = abs(dot(worldPosSample - worldPos, normal));\n float rangeCheck = float(dSample != 1.0) * exp(-1.0 * tangentPlaneDist * invDistance ) * max(dot(normal, normalSample), 0.0);\n occlusion += occSample * rangeCheck;\n count += rangeCheck;\n }\n if (count > 0.0) {\n occlusion /= count;\n }\n occlusion = clamp(occlusion, 0.0, 1.0);\n if (occlusion == 0.0) {\n occlusion = 1.0;\n }\n gl_FragColor = vec4(occlusion, 0.5 + 0.5 * normal);\n }\n "},rU={uniforms:{sceneDepth:{value:null},resolution:{value:new rT.Vector2},near:{value:.1},far:{value:1e3},viewMatrixInv:{value:new rT.Matrix4},projectionMatrixInv:{value:new rT.Matrix4},logDepth:{value:!1},ortho:{value:!1}},depthWrite:!1,depthTest:!1,vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n }",fragmentShader:"\n uniform highp sampler2D sceneDepth;\n uniform vec2 resolution;\n uniform float near;\n uniform float far;\n uniform bool logDepth;\n uniform bool ortho;\n uniform mat4 viewMatrixInv;\n uniform mat4 projectionMatrixInv;\n varying vec2 vUv;\n layout(location = 1) out vec4 gNormal;\n vec3 getWorldPosLog(vec3 posS) {\n vec2 uv = posS.xy;\n float z = posS.z;\n float nearZ =near;\n float farZ = far;\n float depth = pow(2.0, z * log2(farZ + 1.0)) - 1.0;\n float a = farZ / (farZ - nearZ);\n float b = farZ * nearZ / (nearZ - farZ);\n float linDepth = a + b / depth;\n vec4 clipVec = vec4(uv, linDepth, 1.0) * 2.0 - 1.0;\n vec4 wpos = projectionMatrixInv * clipVec;\n return wpos.xyz / wpos.w;\n }\n vec3 getWorldPos(float depth, vec2 coord) {\n if (logDepth && !ortho) {\n return getWorldPosLog(vec3(coord, depth));\n }\n float z = depth * 2.0 - 1.0;\n vec4 clipSpacePosition = vec4(coord * 2.0 - 1.0, z, 1.0);\n vec4 viewSpacePosition = projectionMatrixInv * clipSpacePosition;\n // Perspective division\n vec4 worldSpacePosition = viewSpacePosition;\n worldSpacePosition.xyz /= worldSpacePosition.w;\n return worldSpacePosition.xyz;\n }\n \n vec3 computeNormal(vec3 worldPos, vec2 vUv) {\n ivec2 p = ivec2(vUv * resolution);\n #ifdef REVERSEDEPTH\n float c0 = 1.0 - texelFetch(sceneDepth, p, 0).x;\n float l2 = 1.0 - texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = 1.0 - texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = 1.0 - texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = 1.0 - texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = 1.0 - texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = 1.0 - texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n #else\n float c0 = texelFetch(sceneDepth, p, 0).x;\n float l2 = texelFetch(sceneDepth, p - ivec2(2, 0), 0).x;\n float l1 = texelFetch(sceneDepth, p - ivec2(1, 0), 0).x;\n float r1 = texelFetch(sceneDepth, p + ivec2(1, 0), 0).x;\n float r2 = texelFetch(sceneDepth, p + ivec2(2, 0), 0).x;\n float b2 = texelFetch(sceneDepth, p - ivec2(0, 2), 0).x;\n float b1 = texelFetch(sceneDepth, p - ivec2(0, 1), 0).x;\n float t1 = texelFetch(sceneDepth, p + ivec2(0, 1), 0).x;\n float t2 = texelFetch(sceneDepth, p + ivec2(0, 2), 0).x;\n #endif\n \n float dl = abs((2.0 * l1 - l2) - c0);\n float dr = abs((2.0 * r1 - r2) - c0);\n float db = abs((2.0 * b1 - b2) - c0);\n float dt = abs((2.0 * t1 - t2) - c0);\n \n vec3 ce = getWorldPos(c0, vUv).xyz;\n \n vec3 dpdx = (dl < dr) ? ce - getWorldPos(l1, (vUv - vec2(1.0 / resolution.x, 0.0))).xyz\n : -ce + getWorldPos(r1, (vUv + vec2(1.0 / resolution.x, 0.0))).xyz;\n vec3 dpdy = (db < dt) ? ce - getWorldPos(b1, (vUv - vec2(0.0, 1.0 / resolution.y))).xyz\n : -ce + getWorldPos(t1, (vUv + vec2(0.0, 1.0 / resolution.y))).xyz;\n \n return normalize(cross(dpdx, dpdy));\n }\n void main() {\n vec2 uv = vUv - vec2(0.5) / resolution;\n vec2 pixelSize = vec2(1.0) / resolution;\n highp vec2[4] uvSamples;\n uvSamples[0] = uv;\n uvSamples[1] = uv + vec2(pixelSize.x, 0.0);\n uvSamples[2] = uv + vec2(0.0, pixelSize.y);\n uvSamples[3] = uv + pixelSize;\n #ifdef REVERSEDEPTH\n float depth00 = 1.0 - texture2D(sceneDepth, uvSamples[0]).r;\n float depth10 = 1.0 - texture2D(sceneDepth, uvSamples[1]).r;\n float depth01 = 1.0 - texture2D(sceneDepth, uvSamples[2]).r;\n float depth11 = 1.0 - texture2D(sceneDepth, uvSamples[3]).r;\n #else\n float depth00 = texture2D(sceneDepth, uvSamples[0]).r;\n float depth10 = texture2D(sceneDepth, uvSamples[1]).r;\n float depth01 = texture2D(sceneDepth, uvSamples[2]).r;\n float depth11 = texture2D(sceneDepth, uvSamples[3]).r;\n #endif\n float minDepth = min(min(depth00, depth10), min(depth01, depth11));\n float maxDepth = max(max(depth00, depth10), max(depth01, depth11));\n float targetDepth = minDepth;\n // Checkerboard pattern to avoid artifacts\n if (mod(gl_FragCoord.x + gl_FragCoord.y, 2.0) > 0.5) { \n targetDepth = maxDepth;\n }\n int chosenIndex = 0;\n float[4] samples;\n samples[0] = depth00;\n samples[1] = depth10;\n samples[2] = depth01;\n samples[3] = depth11;\n for(int i = 0; i < 4; ++i) {\n if (samples[i] == targetDepth) {\n chosenIndex = i;\n break;\n }\n }\n gl_FragColor = vec4(samples[chosenIndex], 0.0, 0.0, 1.0);\n gNormal = vec4(computeNormal(\n getWorldPos(samples[chosenIndex], uvSamples[chosenIndex]), uvSamples[chosenIndex]\n ), 0.0);\n }"},rG=Uint8Array.from(atob("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"),e=>e.charCodeAt(0)),rO=parseInt(rT.REVISION.replace(/\D+/g,""))>=162?class extends rT.WebGLRenderTarget{get texture(){return this.textures}constructor(e=1,t=1,r=1,n={}){super(e,t,{...n,count:r}),this.isWebGLMultipleRenderTargets=!0}}:class extends rT.WebGLRenderTarget{setSize(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(this.width!==e||this.height!==t||this.depth!==r){this.width=e,this.height=t,this.depth=r;for(let n=0,i=this.texture.length;n<i;n++)this.texture[n].image.width=e,this.texture[n].image.height=t,this.texture[n].image.depth=r;this.dispose()}this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}copy(e){this.dispose(),this.width=e.width,this.height=e.height,this.depth=e.depth,this.scissor.copy(e.scissor),this.scissorTest=e.scissorTest,this.viewport.copy(e.viewport),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,null!==e.depthTexture&&(this.depthTexture=e.depthTexture.clone()),this.texture.length=0;for(let t=0,r=e.texture.length;t<r;t++)this.texture[t]=e.texture[t].clone(),this.texture[t].isRenderTargetTexture=!0;return this}constructor(e=1,t=1,r=1,n={}){super(e,t,n),this.isWebGLMultipleRenderTargets=!0;let i=this.texture;this.texture=[];for(let e=0;e<r;e++)this.texture[e]=i.clone(),this.texture[e].isRenderTargetTexture=!0}};class rH extends eY{configureHalfResTargets(){this.firstFrame(),this.configuration.halfRes?(this.depthDownsampleTarget=new rO(this.width/2,this.height/2,2),rT.REVISION<=161&&(this.depthDownsampleTarget.textures=this.depthDownsampleTarget.texture),this.depthDownsampleTarget.textures[0].format=rT.RedFormat,this.depthDownsampleTarget.textures[0].type=rT.FloatType,this.depthDownsampleTarget.textures[0].minFilter=rT.NearestFilter,this.depthDownsampleTarget.textures[0].magFilter=rT.NearestFilter,this.depthDownsampleTarget.textures[0].depthBuffer=!1,this.depthDownsampleTarget.textures[1].format=rT.RGBAFormat,this.depthDownsampleTarget.textures[1].type=rT.HalfFloatType,this.depthDownsampleTarget.textures[1].minFilter=rT.NearestFilter,this.depthDownsampleTarget.textures[1].magFilter=rT.NearestFilter,this.depthDownsampleTarget.textures[1].depthBuffer=!1,this.depthDownsampleQuad=new rR(new rT.ShaderMaterial(rU))):(this.depthDownsampleTarget&&(this.depthDownsampleTarget.dispose(),this.depthDownsampleTarget=null),this.depthDownsampleQuad&&(this.depthDownsampleQuad.dispose(),this.depthDownsampleQuad=null))}detectTransparency(){if(this.autoDetectTransparency){let e=!1;this.scene.traverse(t=>{t.material&&t.material.transparent&&(e=!0)}),e&&(this.configuration.transparencyAware=!0)}}configureTransparencyTarget(){this.configuration.transparencyAware?(this.transparencyRenderTargetDWFalse=new rT.WebGLRenderTarget(this.width,this.height,{minFilter:rT.LinearFilter,magFilter:rT.NearestFilter,type:rT.HalfFloatType,format:rT.RGBAFormat}),this.transparencyRenderTargetDWTrue=new rT.WebGLRenderTarget(this.width,this.height,{minFilter:rT.LinearFilter,magFilter:rT.NearestFilter,type:rT.HalfFloatType,format:rT.RGBAFormat}),this.transparencyRenderTargetDWTrue.depthTexture=new rT.DepthTexture(this.width,this.height,rT.UnsignedIntType),this.depthCopyPass=new rR(new rT.ShaderMaterial({uniforms:{depthTexture:{value:this.depthTexture},reverseDepthBuffer:{value:this.configuration.depthBufferType===rN.Reverse}},vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n }",fragmentShader:"\n uniform sampler2D depthTexture;\n uniform bool reverseDepthBuffer;\n varying vec2 vUv;\n void main() {\n if (reverseDepthBuffer) {\n float d = 1.0 - texture2D(depthTexture, vUv).r;\n \n d += 0.00001;\n gl_FragDepth = 1.0 - d;\n } else {\n float d = texture2D(depthTexture, vUv).r;\n d += 0.00001;\n gl_FragDepth = d;\n }\n gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);\n }\n "}))):(this.transparencyRenderTargetDWFalse&&(this.transparencyRenderTargetDWFalse.dispose(),this.transparencyRenderTargetDWFalse=null),this.transparencyRenderTargetDWTrue&&(this.transparencyRenderTargetDWTrue.dispose(),this.transparencyRenderTargetDWTrue=null),this.depthCopyPass&&(this.depthCopyPass.dispose(),this.depthCopyPass=null))}renderTransparency(e){let t=this.scene.background,r=e.getClearColor(new rT.Color),n=e.getClearAlpha(),i=new Map,a=e.autoClearDepth;this.scene.traverse(e=>{i.set(e,e.visible)}),this.scene.background=null,e.autoClearDepth=!1,e.setClearColor(new rT.Color(0,0,0),0),this.depthCopyPass.material.uniforms.depthTexture.value=this.depthTexture,this.depthCopyPass.material.uniforms.reverseDepthBuffer.value=this.configuration.depthBufferType===rN.Reverse,e.setRenderTarget(this.transparencyRenderTargetDWFalse),this.scene.traverse(e=>{e.material&&(e.visible=i.get(e)&&(e.material.transparent&&!e.material.depthWrite&&!e.userData.treatAsOpaque||!!e.userData.cannotReceiveAO))}),e.clear(!0,!0,!0),this.depthCopyPass.render(e),e.render(this.scene,this.camera),e.setRenderTarget(this.transparencyRenderTargetDWTrue),this.scene.traverse(e=>{e.material&&(e.visible=i.get(e)&&e.material.transparent&&e.material.depthWrite&&!e.userData.treatAsOpaque)}),e.clear(!0,!0,!0),this.depthCopyPass.render(e),e.render(this.scene,this.camera),this.scene.traverse(e=>{e.visible=i.get(e)}),e.setClearColor(r,n),this.scene.background=t,e.autoClearDepth=a}configureSampleDependentPasses(){this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera)}configureAOPass(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:rN.Default,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.firstFrame(),this.samples=this.generateHemisphereSamples(this.configuration.aoSamples);let r={...rI};r.fragmentShader=r.fragmentShader.replace("16",this.configuration.aoSamples).replace("16.0",this.configuration.aoSamples+".0"),e===rN.Log?r.fragmentShader="#define LOGDEPTH\n"+r.fragmentShader:e===rN.Reverse&&(r.fragmentShader="#define REVERSEDEPTH\n"+r.fragmentShader),t&&(r.fragmentShader="#define ORTHO\n"+r.fragmentShader),this.configuration.halfRes&&(r.fragmentShader="#define HALFRES\n"+r.fragmentShader),this.effectShaderQuad?(this.effectShaderQuad.material.dispose(),this.effectShaderQuad.material=new rT.ShaderMaterial(r)):this.effectShaderQuad=new rR(new rT.ShaderMaterial(r))}configureDenoisePass(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:rN.Default,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.firstFrame(),this.samplesDenoise=this.generateDenoiseSamples(this.configuration.denoiseSamples,11);let r={...rL};r.fragmentShader=r.fragmentShader.replace("16",this.configuration.denoiseSamples),e===rN.Log?r.fragmentShader="#define LOGDEPTH\n"+r.fragmentShader:e===rN.Reverse&&(r.fragmentShader="#define REVERSEDEPTH\n"+r.fragmentShader),t&&(r.fragmentShader="#define ORTHO\n"+r.fragmentShader),this.poissonBlurQuad?(this.poissonBlurQuad.material.dispose(),this.poissonBlurQuad.material=new rT.ShaderMaterial(r)):this.poissonBlurQuad=new rR(new rT.ShaderMaterial(r))}configureEffectCompositer(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:rN.Default,t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.firstFrame();let r={...rP};e===rN.Log?r.fragmentShader="#define LOGDEPTH\n"+r.fragmentShader:e===rN.Reverse&&(r.fragmentShader="#define REVERSEDEPTH\n"+r.fragmentShader),t&&(r.fragmentShader="#define ORTHO\n"+r.fragmentShader),this.configuration.halfRes&&this.configuration.depthAwareUpsampling&&(r.fragmentShader="#define HALFRES\n"+r.fragmentShader),this.effectCompositerQuad?(this.effectCompositerQuad.material.dispose(),this.effectCompositerQuad.material=new rT.ShaderMaterial(r)):this.effectCompositerQuad=new rR(new rT.ShaderMaterial(r))}generateHemisphereSamples(e){let t=[];for(let r=0;r<e;r++){let n=2.399963*r,i=Math.sqrt(r+.5)/Math.sqrt(e),a=i*Math.cos(n),s=i*Math.sin(n),o=Math.sqrt(1-(a*a+s*s));t.push(new rT.Vector3(a,s,o))}return t}generateDenoiseSamples(e,t){let r=2*Math.PI*t/e,n=1/e,i=[],a=n,s=0;for(let t=0;t<e;t++)i.push(new rT.Vector2(Math.cos(s),Math.sin(s)).multiplyScalar(Math.pow(a,.75))),a+=n,s+=r;return i}setSize(e,t){this.firstFrame(),this.width=e,this.height=t;let r=this.configuration.halfRes?.5:1;this.writeTargetInternal.setSize(e*r,t*r),this.readTargetInternal.setSize(e*r,t*r),this.accumulationRenderTarget.setSize(e*r,t*r),this.configuration.halfRes&&this.depthDownsampleTarget.setSize(e*r,t*r),this.configuration.transparencyAware&&(this.transparencyRenderTargetDWFalse.setSize(e,t),this.transparencyRenderTargetDWTrue.setSize(e,t)),this.outputTargetInternal.setSize(e,t)}setDepthTexture(e){this.depthTexture=e}firstFrame(){this.needsFrame=!0}render(e,t,r){let n,i,a,s=e.xr.enabled;e.xr.enabled=!1,(e.capabilities.logarithmicDepthBuffer&&this.configuration.depthBufferType!==rN.Log||e.capabilities.reverseDepthBuffer&&this.configuration.depthBufferType!==rN.Reverse)&&(this.configuration.depthBufferType=e.capabilities.logarithmicDepthBuffer?rN.Log:e.capabilities.reverseDepthBuffer?rN.Reverse:rN.Default,this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera)),this.detectTransparency(),(t.texture.type!==this.outputTargetInternal.texture.type||t.texture.format!==this.outputTargetInternal.texture.format)&&(this.outputTargetInternal.texture.type=t.texture.type,this.outputTargetInternal.texture.format=t.texture.format,this.outputTargetInternal.texture.needsUpdate=!0),this.camera.updateMatrixWorld(),this.lastViewMatrix.equals(this.camera.matrixWorldInverse)&&this.lastProjectionMatrix.equals(this.camera.projectionMatrix)&&this.configuration.accumulate&&!this.needsFrame?this.frame++:(this.configuration.accumulate&&(e.setRenderTarget(this.accumulationRenderTarget),e.clear(!0,!0,!0)),this.frame=0,this.needsFrame=!1),this.lastViewMatrix.copy(this.camera.matrixWorldInverse),this.lastProjectionMatrix.copy(this.camera.projectionMatrix),this.debugMode&&null===(i=(n=e.getContext()).getExtension("EXT_disjoint_timer_query_webgl2"))&&(console.error("EXT_disjoint_timer_query_webgl2 not available, disabling debug mode."),this.debugMode=!1),this.debugMode&&(a=n.createQuery(),n.beginQuery(i.TIME_ELAPSED_EXT,a)),this.configuration.transparencyAware&&this.renderTransparency(e),this._r.set(this.width,this.height);let o=this.configuration.aoRadius;if(this.configuration.halfRes&&this.configuration.screenSpaceRadius&&(o*=.5),this.frame<1024/this.configuration.aoSamples){this.configuration.halfRes&&(e.setRenderTarget(this.depthDownsampleTarget),this.depthDownsampleQuad.material.uniforms.sceneDepth.value=this.depthTexture,this.depthDownsampleQuad.material.uniforms.resolution.value=this._r,this.depthDownsampleQuad.material.uniforms.near.value=this.camera.near,this.depthDownsampleQuad.material.uniforms.far.value=this.camera.far,this.depthDownsampleQuad.material.uniforms.projectionMatrixInv.value=this.camera.projectionMatrixInverse,this.depthDownsampleQuad.material.uniforms.viewMatrixInv.value=this.camera.matrixWorld,this.depthDownsampleQuad.material.uniforms.logDepth.value=this.configuration.logarithmicDepthBuffer,this.depthDownsampleQuad.material.uniforms.ortho.value=this.camera.isOrthographicCamera,this.depthDownsampleQuad.render(e)),this.effectShaderQuad.material.uniforms.sceneDiffuse.value=t.texture,this.effectShaderQuad.material.uniforms.sceneDepth.value=this.configuration.halfRes?this.depthDownsampleTarget.textures[0]:this.depthTexture,this.effectShaderQuad.material.uniforms.sceneNormal.value=this.configuration.halfRes?this.depthDownsampleTarget.textures[1]:null,this.effectShaderQuad.material.uniforms.projMat.value=this.camera.projectionMatrix,this.effectShaderQuad.material.uniforms.viewMat.value=this.camera.matrixWorldInverse,this.effectShaderQuad.material.uniforms.projViewMat.value=this.camera.projectionMatrix.clone().multiply(this.camera.matrixWorldInverse.clone()),this.effectShaderQuad.material.uniforms.projectionMatrixInv.value=this.camera.projectionMatrixInverse,this.effectShaderQuad.material.uniforms.viewMatrixInv.value=this.camera.matrixWorld,this.effectShaderQuad.material.uniforms.cameraPos.value=this.camera.getWorldPosition(new rT.Vector3),this.effectShaderQuad.material.uniforms.biasAdjustment.value=new rT.Vector2(this.configuration.biasOffset,this.configuration.biasMultiplier),this.effectShaderQuad.material.uniforms.resolution.value=this.configuration.halfRes?this._r.clone().multiplyScalar(.5).floor():this._r,this.effectShaderQuad.material.uniforms.time.value=performance.now()/1e3,this.effectShaderQuad.material.uniforms.samples.value=this.samples,this.effectShaderQuad.material.uniforms.bluenoise.value=this.bluenoise,this.effectShaderQuad.material.uniforms.radius.value=o,this.effectShaderQuad.material.uniforms.distanceFalloff.value=this.configuration.distanceFalloff,this.effectShaderQuad.material.uniforms.near.value=this.camera.near,this.effectShaderQuad.material.uniforms.far.value=this.camera.far,this.effectShaderQuad.material.uniforms.ortho.value=this.camera.isOrthographicCamera,this.effectShaderQuad.material.uniforms.screenSpaceRadius.value=this.configuration.screenSpaceRadius,this.effectShaderQuad.material.uniforms.frame.value=this.frame,e.setRenderTarget(this.writeTargetInternal),this.effectShaderQuad.render(e);for(let t=0;t<this.configuration.denoiseIterations;t++)[this.writeTargetInternal,this.readTargetInternal]=[this.readTargetInternal,this.writeTargetInternal],this.poissonBlurQuad.material.uniforms.tDiffuse.value=this.readTargetInternal.texture,this.poissonBlurQuad.material.uniforms.sceneDepth.value=this.configuration.halfRes?this.depthDownsampleTarget.textures[0]:this.depthTexture,this.poissonBlurQuad.material.uniforms.projMat.value=this.camera.projectionMatrix,this.poissonBlurQuad.material.uniforms.viewMat.value=this.camera.matrixWorldInverse,this.poissonBlurQuad.material.uniforms.projectionMatrixInv.value=this.camera.projectionMatrixInverse,this.poissonBlurQuad.material.uniforms.viewMatrixInv.value=this.camera.matrixWorld,this.poissonBlurQuad.material.uniforms.cameraPos.value=this.camera.getWorldPosition(new rT.Vector3),this.poissonBlurQuad.material.uniforms.resolution.value=this.configuration.halfRes?this._r.clone().multiplyScalar(.5).floor():this._r,this.poissonBlurQuad.material.uniforms.time.value=performance.now()/1e3,this.poissonBlurQuad.material.uniforms.blueNoise.value=this.bluenoise,this.poissonBlurQuad.material.uniforms.radius.value=this.configuration.denoiseRadius*(this.configuration.halfRes?.5:1),this.poissonBlurQuad.material.uniforms.worldRadius.value=o,this.poissonBlurQuad.material.uniforms.distanceFalloff.value=this.configuration.distanceFalloff,this.poissonBlurQuad.material.uniforms.index.value=t,this.poissonBlurQuad.material.uniforms.poissonDisk.value=this.samplesDenoise,this.poissonBlurQuad.material.uniforms.near.value=this.camera.near,this.poissonBlurQuad.material.uniforms.far.value=this.camera.far,this.poissonBlurQuad.material.uniforms.screenSpaceRadius.value=this.configuration.screenSpaceRadius,e.setRenderTarget(this.writeTargetInternal),this.poissonBlurQuad.render(e);e.setRenderTarget(this.accumulationRenderTarget);let r=e.autoClear;e.autoClear=!1,this.accumulationQuad.material.uniforms.tDiffuse.value=this.writeTargetInternal.texture,this.accumulationQuad.material.uniforms.frame.value=this.frame,this.accumulationQuad.render(e),e.autoClear=r}this.configuration.transparencyAware&&(this.effectCompositerQuad.material.uniforms.transparencyDWFalse.value=this.transparencyRenderTargetDWFalse.texture,this.effectCompositerQuad.material.uniforms.transparencyDWTrue.value=this.transparencyRenderTargetDWTrue.texture,this.effectCompositerQuad.material.uniforms.transparencyDWTrueDepth.value=this.transparencyRenderTargetDWTrue.depthTexture,this.effectCompositerQuad.material.uniforms.transparencyAware.value=!0),this.effectCompositerQuad.material.uniforms.sceneDiffuse.value=t.texture,this.effectCompositerQuad.material.uniforms.sceneDepth.value=this.depthTexture,this.effectCompositerQuad.material.uniforms.aoTones.value=this.configuration.aoTones,this.effectCompositerQuad.material.uniforms.near.value=this.camera.near,this.effectCompositerQuad.material.uniforms.far.value=this.camera.far,this.effectCompositerQuad.material.uniforms.projectionMatrixInv.value=this.camera.projectionMatrixInverse,this.effectCompositerQuad.material.uniforms.viewMatrixInv.value=this.camera.matrixWorld,this.effectCompositerQuad.material.uniforms.ortho.value=this.camera.isOrthographicCamera,this.effectCompositerQuad.material.uniforms.downsampledDepth.value=this.configuration.halfRes?this.depthDownsampleTarget.textures[0]:this.depthTexture,this.effectCompositerQuad.material.uniforms.resolution.value=this._r,this.effectCompositerQuad.material.uniforms.blueNoise.value=this.bluenoise,this.effectCompositerQuad.material.uniforms.intensity.value=this.configuration.intensity,this.effectCompositerQuad.material.uniforms.renderMode.value=this.configuration.renderMode,this.effectCompositerQuad.material.uniforms.screenSpaceRadius.value=this.configuration.screenSpaceRadius,this.effectCompositerQuad.material.uniforms.radius.value=o,this.effectCompositerQuad.material.uniforms.distanceFalloff.value=this.configuration.distanceFalloff,this.effectCompositerQuad.material.uniforms.gammaCorrection.value=this.autosetGamma?this.renderToScreen:this.configuration.gammaCorrection,this.effectCompositerQuad.material.uniforms.tDiffuse.value=this.accumulationRenderTarget.texture,this.effectCompositerQuad.material.uniforms.color.value=this._c.copy(this.configuration.color).convertSRGBToLinear(),this.effectCompositerQuad.material.uniforms.colorMultiply.value=this.configuration.colorMultiply,this.effectCompositerQuad.material.uniforms.cameraPos.value=this.camera.getWorldPosition(new rT.Vector3),this.effectCompositerQuad.material.uniforms.fog.value=!!this.scene.fog,this.scene.fog&&(this.scene.fog.isFog?(this.effectCompositerQuad.material.uniforms.fogExp.value=!1,this.effectCompositerQuad.material.uniforms.fogNear.value=this.scene.fog.near,this.effectCompositerQuad.material.uniforms.fogFar.value=this.scene.fog.far):this.scene.fog.isFogExp2?(this.effectCompositerQuad.material.uniforms.fogExp.value=!0,this.effectCompositerQuad.material.uniforms.fogDensity.value=this.scene.fog.density):console.error("Unsupported fog type ".concat(this.scene.fog.constructor.name," in SSAOPass."))),e.setRenderTarget(this.outputTargetInternal),this.effectCompositerQuad.render(e),e.setRenderTarget(this.renderToScreen?null:r),this.copyQuad.material.uniforms.tDiffuse.value=this.outputTargetInternal.texture,this.copyQuad.render(e),this.debugMode&&(n.endQuery(i.TIME_ELAPSED_EXT),function e(t,r,n){if(r.getQueryParameter(t,r.QUERY_RESULT_AVAILABLE)){let e=r.getQueryParameter(t,r.QUERY_RESULT)/1e6;n.lastTime=0===n.lastTime?e:n.timeRollingAverage*n.lastTime+(1-n.timeRollingAverage)*e}else setTimeout(()=>{e(t,r,n)},1)}(a,n,this)),e.xr.enabled=s}enableDebugMode(){this.debugMode=!0}disableDebugMode(){this.debugMode=!1}setDisplayMode(e){this.configuration.renderMode=["Combined","AO","No AO","Split","Split AO"].indexOf(e)}setQualityMode(e){"Performance"===e?(this.configuration.aoSamples=8,this.configuration.denoiseSamples=4,this.configuration.denoiseRadius=12):"Low"===e?(this.configuration.aoSamples=16,this.configuration.denoiseSamples=4,this.configuration.denoiseRadius=12):"Medium"===e?(this.configuration.aoSamples=16,this.configuration.denoiseSamples=8,this.configuration.denoiseRadius=12):"High"===e?(this.configuration.aoSamples=64,this.configuration.denoiseSamples=8,this.configuration.denoiseRadius=6):"Ultra"===e&&(this.configuration.aoSamples=64,this.configuration.denoiseSamples=16,this.configuration.denoiseRadius=6)}constructor(e,t,r=512,n=512){super(),this.width=r,this.height=n,this.clear=!0,this.camera=t,this.scene=e,this.autosetGamma=!0,this.configuration=new Proxy({aoSamples:16,aoRadius:5,aoTones:0,denoiseSamples:8,denoiseRadius:12,distanceFalloff:1,intensity:5,denoiseIterations:2,renderMode:0,biasOffset:0,biasMultiplier:0,color:new rT.Color(0,0,0),gammaCorrection:!0,depthBufferType:rN.Default,screenSpaceRadius:!1,halfRes:!1,depthAwareUpsampling:!0,colorMultiply:!0,transparencyAware:!1,accumulate:!1},{set:(e,t,r)=>{let n=e[t];return e[t]=r,r.equals?r.equals(n)||this.firstFrame():n!==r&&this.firstFrame(),"aoSamples"===t&&n!==r&&this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),"denoiseSamples"===t&&n!==r&&this.configureDenoisePass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),"halfRes"===t&&n!==r&&(this.configureAOPass(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.configureHalfResTargets(),this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),this.setSize(this.width,this.height)),"depthAwareUpsampling"===t&&n!==r&&this.configureEffectCompositer(this.configuration.depthBufferType,this.camera.isOrthographicCamera),"gammaCorrection"===t&&(this.autosetGamma=!1),"transparencyAware"===t&&n!==r&&(this.autoDetectTransparency=!1,this.configureTransparencyTarget()),!0}}),this.samples=[],this.samplesDenoise=[],this.autoDetectTransparency=!0,this.frames=0,this.lastViewMatrix=new rT.Matrix4,this.lastProjectionMatrix=new rT.Matrix4,this.configureEffectCompositer(this.configuration.depthBufferType),this.configureSampleDependentPasses(),this.configureHalfResTargets(),this.detectTransparency(),this.configureTransparencyTarget(),this.copyQuad=new rR(new rT.ShaderMaterial({uniforms:{tDiffuse:{value:null}},depthWrite:!1,vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n }\n ",fragmentShader:"\n uniform sampler2D tDiffuse;\n varying vec2 vUv;\n void main() {\n gl_FragColor = texture2D(tDiffuse, vUv);\n }\n "})),this.writeTargetInternal=new rT.WebGLRenderTarget(this.width,this.height,{minFilter:rT.LinearFilter,magFilter:rT.LinearFilter,depthBuffer:!1,format:rT.RGBAFormat}),this.readTargetInternal=new rT.WebGLRenderTarget(this.width,this.height,{minFilter:rT.LinearFilter,magFilter:rT.LinearFilter,depthBuffer:!1,format:rT.RGBAFormat}),this.outputTargetInternal=new rT.WebGLRenderTarget(this.width,this.height,{minFilter:rT.LinearFilter,magFilter:rT.LinearFilter,depthBuffer:!1}),this.accumulationRenderTarget=new rT.WebGLRenderTarget(this.width,this.height,{minFilter:rT.LinearFilter,magFilter:rT.LinearFilter,depthBuffer:!1,format:rT.RGBAFormat,type:rT.HalfFloatType,stencilBuffer:!1,depthBuffer:!1,alpha:!0}),this.accumulationQuad=new rR(new rT.ShaderMaterial({uniforms:{frame:{value:0},tDiffuse:{value:null}},transparent:!0,opacity:1,vertexShader:"\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = vec4(position, 1);\n }",fragmentShader:"\n uniform sampler2D tDiffuse;\n uniform float frame;\n varying vec2 vUv;\n void main() {\n vec4 color = texture2D(tDiffuse, vUv);\n gl_FragColor = vec4(color.rgb, 1.0 / (frame + 1.0));\n }\n "})),this.bluenoise=new rT.DataTexture(rG,128,128),this.bluenoise.colorSpace=rT.NoColorSpace,this.bluenoise.wrapS=rT.RepeatWrapping,this.bluenoise.wrapT=rT.RepeatWrapping,this.bluenoise.minFilter=rT.NearestFilter,this.bluenoise.magFilter=rT.NearestFilter,this.bluenoise.needsUpdate=!0,this.lastTime=0,this.timeRollingAverage=.99,this.needsDepthTexture=!0,this.needsSwap=!0,this._r=new rT.Vector2,this._c=new rT.Color}}let rN={Default:1,Log:2,Reverse:3},rk=(0,eP.createContext)(null),rz=e=>(2&e.getAttributes())==2,rj=(0,eP.memo)((0,eP.forwardRef)((e,t)=>{let{children:r,camera:n,scene:i,resolutionScale:a,enabled:s=!0,renderPriority:o=1,autoClear:l=!0,depthBuffer:u,enableNormalPass:c,stencilBuffer:d,multisampling:f=8,frameBufferType:h=eO.HalfFloatType}=e,{gl:p,scene:m,camera:g,size:A}=(0,eJ.useThree)(),y=i||m,x=n||g,[B,C,S]=(0,eP.useMemo)(()=>{let e=new e3(p,{depthBuffer:u,stencilBuffer:d,multisampling:f,frameBufferType:h});e.addPass(new tE(y,x));let t=null,r=null;return c&&((r=new t1(y,x)).enabled=!1,e.addPass(r),void 0!==a&&((t=new tV({normalBuffer:r.texture,resolutionScale:a})).enabled=!1,e.addPass(t))),[e,r,t]},[x,p,u,d,f,h,y,c,a]);(0,eP.useEffect)(()=>null==B?void 0:B.setSize(A.width,A.height),[B,A]),(0,eV.useFrame)((e,t)=>{if(s){let e=p.autoClear;p.autoClear=l,d&&!l&&p.clearStencil(),B.render(t),p.autoClear=e}},s?o:0);let E=(0,eP.useRef)(null);(0,eP.useLayoutEffect)(()=>{let e=[],t=E.current.__r3f;if(t&&B){let n=t.children;for(let t=0;t<n.length;t++){let i=n[t].object;if(i instanceof ts){let a=[i];if(!rz(i)){var r;let e=null;for(;(e=null==(r=n[t+1])?void 0:r.object)instanceof ts&&!rz(e);)a.push(e),t++}let s=new t0(x,...a);e.push(s)}else i instanceof eY&&e.push(i)}for(let t of e)null==B||B.addPass(t);C&&(C.enabled=!0),S&&(S.enabled=!0)}return()=>{for(let t of e)null==B||B.removePass(t);C&&(C.enabled=!1),S&&(S.enabled=!1)}},[B,r,x,C,S]),(0,eP.useEffect)(()=>{let e=p.toneMapping;return p.toneMapping=eO.NoToneMapping,()=>{p.toneMapping=e}},[p]);let T=(0,eP.useMemo)(()=>({composer:B,normalPass:C,downSamplingPass:S,resolutionScale:a,camera:x,scene:y}),[B,C,S,a,x,y]);return(0,eP.useImperativeHandle)(t,()=>B,[B]),(0,eI.jsx)(rk.Provider,{value:T,children:(0,eI.jsx)("group",{ref:E,children:r})})}));var rK=(e=>(e[e.Linear=0]="Linear",e[e.Radial=1]="Radial",e[e.MirroredLinear=2]="MirroredLinear",e))(rK||{});let rJ=(0,eP.forwardRef)((e,t)=>{let{halfRes:r,screenSpaceRadius:n,quality:i,depthAwareUpsampling:a=!0,aoRadius:s=5,aoSamples:o=16,denoiseSamples:l=4,denoiseRadius:u=12,distanceFalloff:c=1,intensity:d=1,color:f,renderMode:h=0}=e,{camera:p,scene:m}=(0,eJ.useThree)(),g=(0,eP.useMemo)(()=>new rH(m,p),[p,m]);return(0,eP.useLayoutEffect)(()=>{(0,eU.s)(g.configuration,{color:f,aoRadius:s,distanceFalloff:c,intensity:d,aoSamples:o,denoiseSamples:l,denoiseRadius:u,screenSpaceRadius:n,renderMode:h,halfRes:r,depthAwareUpsampling:a})},[n,f,s,c,d,o,l,u,h,r,a,g]),(0,eP.useLayoutEffect)(()=>{i&&g.setQualityMode(i.charAt(0).toUpperCase()+i.slice(1))},[g,i]),(0,eI.jsx)("primitive",{ref:t,object:g})});function rV(e,t,r){if(!t.has(e))throw TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}function rQ(e,t){var r=rV(e,t,"get");return r.get?r.get.call(e):r.value}function rW(e,t){if(t.has(e))throw TypeError("Cannot initialize the same private elements twice on an object")}function rX(e,t,r){rW(e,t),t.set(e,r)}function rZ(e,t,r){var n=rV(e,t,"set");if(n.set)n.set.call(e,r);else{if(!n.writable)throw TypeError("attempted to set read only private field");n.value=r}return r}function rY(e,t,r){if(!t.has(e))throw TypeError("attempted to get private field on non-instance");return r}function r_(e,t){rW(e,t),t.add(e)}var rq=class{subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}};e.i(47167);var r$={setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e),setInterval:(e,t)=>setInterval(e,t),clearInterval:e=>clearInterval(e)},r0=new(M=new WeakMap,w=new WeakMap,class{setTimeoutProvider(e){rZ(this,M,e)}setTimeout(e,t){return rQ(this,M).setTimeout(e,t)}clearTimeout(e){rQ(this,M).clearTimeout(e)}setInterval(e,t){return rQ(this,M).setInterval(e,t)}clearInterval(e){rQ(this,M).clearInterval(e)}constructor(){rX(this,M,{writable:!0,value:r$}),rX(this,w,{writable:!0,value:!1})}}),r1="undefined"==typeof window||"Deno"in globalThis;function r2(){}function r9(e){return"number"==typeof e&&e>=0&&e!==1/0}function r3(e,t){return Math.max(e+(t||0)-Date.now(),0)}function r4(e,t){return"function"==typeof e?e(t):e}function r8(e,t){return"function"==typeof e?e(t):e}function r5(e,t){let{type:r="all",exact:n,fetchStatus:i,predicate:a,queryKey:s,stale:o}=e;if(s){if(n){if(t.queryHash!==r7(s,t.options))return!1}else if(!nt(t.queryKey,s))return!1}if("all"!==r){let e=t.isActive();if("active"===r&&!e||"inactive"===r&&e)return!1}return("boolean"!=typeof o||t.isStale()===o)&&(!i||i===t.state.fetchStatus)&&(!a||!!a(t))}function r6(e,t){let{exact:r,status:n,predicate:i,mutationKey:a}=e;if(a){if(!t.options.mutationKey)return!1;if(r){if(ne(t.options.mutationKey)!==ne(a))return!1}else if(!nt(t.options.mutationKey,a))return!1}return(!n||t.state.status===n)&&(!i||!!i(t))}function r7(e,t){return((null==t?void 0:t.queryKeyHashFn)||ne)(e)}function ne(e){return JSON.stringify(e,(e,t)=>na(t)?Object.keys(t).sort().reduce((e,r)=>(e[r]=t[r],e),{}):t)}function nt(e,t){return e===t||typeof e==typeof t&&!!e&&!!t&&"object"==typeof e&&"object"==typeof t&&Object.keys(t).every(r=>nt(e[r],t[r]))}var nr=Object.prototype.hasOwnProperty;function nn(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let r in e)if(e[r]!==t[r])return!1;return!0}function ni(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function na(e){if(!ns(e))return!1;let t=e.constructor;if(void 0===t)return!0;let r=t.prototype;return!!ns(r)&&!!r.hasOwnProperty("isPrototypeOf")&&Object.getPrototypeOf(e)===Object.prototype}function ns(e){return"[object Object]"===Object.prototype.toString.call(e)}function no(e,t,r){return"function"==typeof r.structuralSharing?r.structuralSharing(e,t):!1!==r.structuralSharing?function e(t,r){if(t===r)return t;let n=ni(t)&&ni(r);if(!n&&!(na(t)&&na(r)))return r;let i=(n?t:Object.keys(t)).length,a=n?r:Object.keys(r),s=a.length,o=n?Array(s):{},l=0;for(let u=0;u<s;u++){let s=n?u:a[u],c=t[s],d=r[s];if(c===d){o[s]=c,(n?u<i:nr.call(t,s))&&l++;continue}if(null===c||null===d||"object"!=typeof c||"object"!=typeof d){o[s]=d;continue}let f=e(c,d);o[s]=f,f===c&&l++}return i===s&&l===i?t:o}(e,t):t}function nl(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=[...e,t];return r&&n.length>r?n.slice(1):n}function nu(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=[t,...e];return r&&n.length>r?n.slice(0,-1):n}var nc=Symbol();function nd(e,t){return!e.queryFn&&(null==t?void 0:t.initialPromise)?()=>t.initialPromise:e.queryFn&&e.queryFn!==nc?e.queryFn:()=>Promise.reject(Error("Missing queryFn: '".concat(e.queryHash,"'")))}var nf=new(F=new WeakMap,R=new WeakMap,I=new WeakMap,class extends rq{onSubscribe(){rQ(this,R)||this.setEventListener(rQ(this,I))}onUnsubscribe(){var e;this.hasListeners()||(null==(e=rQ(this,R))||e.call(this),rZ(this,R,void 0))}setEventListener(e){var t;rZ(this,I,e),null==(t=rQ(this,R))||t.call(this),rZ(this,R,e(e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()}))}setFocused(e){rQ(this,F)!==e&&(rZ(this,F,e),this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){var e;return"boolean"==typeof rQ(this,F)?rQ(this,F):(null==(e=globalThis.document)?void 0:e.visibilityState)!=="hidden"}constructor(){super(),rX(this,F,{writable:!0,value:void 0}),rX(this,R,{writable:!0,value:void 0}),rX(this,I,{writable:!0,value:void 0}),rZ(this,I,e=>{if(!r1&&window.addEventListener){let t=()=>e();return window.addEventListener("visibilitychange",t,!1),()=>{window.removeEventListener("visibilitychange",t)}}})}}),nh=function(e){setTimeout(e,0)},np=function(){let e=[],t=0,r=e=>{e()},n=e=>{e()},i=nh,a=n=>{t?e.push(n):i(()=>{r(n)})};return{batch:a=>{let s;t++;try{s=a()}finally{--t||(()=>{let t=e;e=[],t.length&&i(()=>{n(()=>{t.forEach(e=>{r(e)})})})})()}return s},batchCalls:e=>function(){for(var t=arguments.length,r=Array(t),n=0;n<t;n++)r[n]=arguments[n];a(()=>{e(...r)})},schedule:a,setNotifyFunction:e=>{r=e},setBatchNotifyFunction:e=>{n=e},setScheduler:e=>{i=e}}}(),nm=new(P=new WeakMap,L=new WeakMap,U=new WeakMap,class extends rq{onSubscribe(){rQ(this,L)||this.setEventListener(rQ(this,U))}onUnsubscribe(){var e;this.hasListeners()||(null==(e=rQ(this,L))||e.call(this),rZ(this,L,void 0))}setEventListener(e){var t;rZ(this,U,e),null==(t=rQ(this,L))||t.call(this),rZ(this,L,e(this.setOnline.bind(this)))}setOnline(e){rQ(this,P)!==e&&(rZ(this,P,e),this.listeners.forEach(t=>{t(e)}))}isOnline(){return rQ(this,P)}constructor(){super(),rX(this,P,{writable:!0,value:!0}),rX(this,L,{writable:!0,value:void 0}),rX(this,U,{writable:!0,value:void 0}),rZ(this,U,e=>{if(!r1&&window.addEventListener){let t=()=>e(!0),r=()=>e(!1);return window.addEventListener("online",t,!1),window.addEventListener("offline",r,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",r)}}})}});function nv(){let e,t,r=new Promise((r,n)=>{e=r,t=n});function n(e){Object.assign(r,e),delete r.resolve,delete r.reject}return r.status="pending",r.catch(()=>{}),r.resolve=t=>{n({status:"fulfilled",value:t}),e(t)},r.reject=e=>{n({status:"rejected",reason:e}),t(e)},r}function ng(e){return Math.min(1e3*2**e,3e4)}function nA(e){return(null!=e?e:"online")!=="online"||nm.isOnline()}var ny=class extends Error{constructor(e){super("CancelledError"),this.revert=null==e?void 0:e.revert,this.silent=null==e?void 0:e.silent}};function nx(e){let t,r=!1,n=0,i=nv(),a=()=>nf.isFocused()&&("always"===e.networkMode||nm.isOnline())&&e.canRun(),s=()=>nA(e.networkMode)&&e.canRun(),o=e=>{"pending"===i.status&&(null==t||t(),i.resolve(e))},l=e=>{"pending"===i.status&&(null==t||t(),i.reject(e))},u=()=>new Promise(r=>{var n;t=e=>{("pending"!==i.status||a())&&r(e)},null==(n=e.onPause)||n.call(e)}).then(()=>{if(t=void 0,"pending"===i.status){var r;null==(r=e.onContinue)||r.call(e)}}),c=()=>{let t;if("pending"!==i.status)return;let s=0===n?e.initialPromise:void 0;try{t=null!=s?s:e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(o).catch(t=>{var s,o,d;if("pending"!==i.status)return;let f=null!=(o=e.retry)?o:3*!r1,h=null!=(d=e.retryDelay)?d:ng,p="function"==typeof h?h(n,t):h,m=!0===f||"number"==typeof f&&n<f||"function"==typeof f&&f(n,t);if(r||!m)return void l(t);n++,null==(s=e.onFail)||s.call(e,n,t),new Promise(e=>{r0.setTimeout(e,p)}).then(()=>a()?void 0:u()).then(()=>{r?l(t):c()})})};return{promise:i,status:()=>i.status,cancel:t=>{if("pending"===i.status){var r;let n=new ny(t);l(n),null==(r=e.onCancel)||r.call(e,n)}},continue:()=>(null==t||t(),i),cancelRetry:()=>{r=!0},continueRetry:()=>{r=!1},canStart:s,start:()=>(s()?c():u().then(c),i)}}var nB=(G=new WeakMap,class{destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),r9(this.gcTime)&&rZ(this,G,r0.setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,null!=e?e:r1?1/0:3e5)}clearGcTimeout(){rQ(this,G)&&(r0.clearTimeout(rQ(this,G)),rZ(this,G,void 0))}constructor(){rX(this,G,{writable:!0,value:void 0})}}),nC=(O=new WeakMap,H=new WeakMap,N=new WeakMap,k=new WeakMap,z=new WeakMap,j=new WeakMap,K=new WeakMap,J=new WeakSet,class extends nB{get meta(){return this.options.meta}get promise(){var e;return null==(e=rQ(this,z))?void 0:e.promise}setOptions(e){if(this.options={...rQ(this,j),...e},this.updateGcTime(this.options.gcTime),this.state&&void 0===this.state.data){let e=nT(this.options);void 0!==e.data&&(this.setState(nE(e.data,e.dataUpdatedAt)),rZ(this,O,e))}}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||rQ(this,N).remove(this)}setData(e,t){let r=no(this.state.data,e,this.options);return rY(this,J,nb).call(this,{data:r,type:"success",dataUpdatedAt:null==t?void 0:t.updatedAt,manual:null==t?void 0:t.manual}),r}setState(e,t){rY(this,J,nb).call(this,{type:"setState",state:e,setStateOptions:t})}cancel(e){var t,r;let n=null==(t=rQ(this,z))?void 0:t.promise;return null==(r=rQ(this,z))||r.cancel(e),n?n.then(r2).catch(r2):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(rQ(this,O))}isActive(){return this.observers.some(e=>!1!==r8(e.options.enabled,this))}isDisabled(){return this.getObserversCount()>0?!this.isActive():this.options.queryFn===nc||this.state.dataUpdateCount+this.state.errorUpdateCount===0}isStatic(){return this.getObserversCount()>0&&this.observers.some(e=>"static"===r4(e.options.staleTime,this))}isStale(){return this.getObserversCount()>0?this.observers.some(e=>e.getCurrentResult().isStale):void 0===this.state.data||this.state.isInvalidated}isStaleByTime(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return void 0===this.state.data||"static"!==e&&(!!this.state.isInvalidated||!r3(this.state.dataUpdatedAt,e))}onFocus(){var e;let t=this.observers.find(e=>e.shouldFetchOnWindowFocus());null==t||t.refetch({cancelRefetch:!1}),null==(e=rQ(this,z))||e.continue()}onOnline(){var e;let t=this.observers.find(e=>e.shouldFetchOnReconnect());null==t||t.refetch({cancelRefetch:!1}),null==(e=rQ(this,z))||e.continue()}addObserver(e){this.observers.includes(e)||(this.observers.push(e),this.clearGcTimeout(),rQ(this,N).notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.observers.includes(e)&&(this.observers=this.observers.filter(t=>t!==e),this.observers.length||(rQ(this,z)&&(rQ(this,K)?rQ(this,z).cancel({revert:!0}):rQ(this,z).cancelRetry()),this.scheduleGc()),rQ(this,N).notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||rY(this,J,nb).call(this,{type:"invalidate"})}async fetch(e,t){var r,n,i,a,s,o,l,u,c,d,f,h;if("idle"!==this.state.fetchStatus&&(null==(r=rQ(this,z))?void 0:r.status())!=="rejected"){if(void 0!==this.state.data&&(null==t?void 0:t.cancelRefetch))this.cancel({silent:!0});else if(rQ(this,z))return rQ(this,z).continueRetry(),rQ(this,z).promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.observers.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let p=new AbortController,m=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(rZ(this,K,!0),p.signal)})},g=()=>{let e=nd(this.options,t),r=(()=>{let e={client:rQ(this,k),queryKey:this.queryKey,meta:this.meta};return m(e),e})();return(rZ(this,K,!1),this.options.persister)?this.options.persister(e,r,this):e(r)},A=(()=>{let e={fetchOptions:t,options:this.options,queryKey:this.queryKey,client:rQ(this,k),state:this.state,fetchFn:g};return m(e),e})();null==(n=this.options.behavior)||n.onFetch(A,this),rZ(this,H,this.state),("idle"===this.state.fetchStatus||this.state.fetchMeta!==(null==(i=A.fetchOptions)?void 0:i.meta))&&rY(this,J,nb).call(this,{type:"fetch",meta:null==(a=A.fetchOptions)?void 0:a.meta}),rZ(this,z,nx({initialPromise:null==t?void 0:t.initialPromise,fn:A.fetchFn,onCancel:e=>{e instanceof ny&&e.revert&&this.setState({...rQ(this,H),fetchStatus:"idle"}),p.abort()},onFail:(e,t)=>{rY(this,J,nb).call(this,{type:"failed",failureCount:e,error:t})},onPause:()=>{rY(this,J,nb).call(this,{type:"pause"})},onContinue:()=>{rY(this,J,nb).call(this,{type:"continue"})},retry:A.options.retry,retryDelay:A.options.retryDelay,networkMode:A.options.networkMode,canRun:()=>!0}));try{let e=await rQ(this,z).start();if(void 0===e)throw Error("".concat(this.queryHash," data is undefined"));return this.setData(e),null==(s=(o=rQ(this,N).config).onSuccess)||s.call(o,e,this),null==(l=(u=rQ(this,N).config).onSettled)||l.call(u,e,this.state.error,this),e}catch(e){if(e instanceof ny){if(e.silent)return rQ(this,z).promise;else if(e.revert){if(void 0===this.state.data)throw e;return this.state.data}}throw rY(this,J,nb).call(this,{type:"error",error:e}),null==(c=(d=rQ(this,N).config).onError)||c.call(d,e,this),null==(f=(h=rQ(this,N).config).onSettled)||f.call(h,this.state.data,e,this),e}finally{this.scheduleGc()}}constructor(e){var t;super(),r_(this,J),rX(this,O,{writable:!0,value:void 0}),rX(this,H,{writable:!0,value:void 0}),rX(this,N,{writable:!0,value:void 0}),rX(this,k,{writable:!0,value:void 0}),rX(this,z,{writable:!0,value:void 0}),rX(this,j,{writable:!0,value:void 0}),rX(this,K,{writable:!0,value:void 0}),rZ(this,K,!1),rZ(this,j,e.defaultOptions),this.setOptions(e.options),this.observers=[],rZ(this,k,e.client),rZ(this,N,rQ(this,k).getQueryCache()),this.queryKey=e.queryKey,this.queryHash=e.queryHash,rZ(this,O,nT(this.options)),this.state=null!=(t=e.state)?t:rQ(this,O),this.scheduleGc()}});function nS(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:nA(t.networkMode)?"fetching":"paused",...void 0===e&&{error:null,status:"pending"}}}function nE(e,t){return{data:e,dataUpdatedAt:null!=t?t:Date.now(),error:null,isInvalidated:!1,status:"success"}}function nT(e){let t="function"==typeof e.initialData?e.initialData():e.initialData,r=void 0!==t,n=r?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:r?null!=n?n:Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:r?"success":"pending",fetchStatus:"idle"}}function nb(e){let t=t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":var r;return{...t,...nS(t.data,this.options),fetchMeta:null!=(r=e.meta)?r:null};case"success":let n={...t,...nE(e.data,e.dataUpdatedAt),dataUpdateCount:t.dataUpdateCount+1,...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};return rZ(this,H,e.manual?n:void 0),n;case"error":let i=e.error;return{...t,error:i,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:i,fetchStatus:"idle",status:"error"};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}};this.state=t(this.state),np.batch(()=>{this.observers.forEach(e=>{e.onQueryUpdate()}),rQ(this,N).notify({query:this,type:"updated",action:e})})}var nD=(V=new WeakMap,Q=new WeakMap,W=new WeakMap,X=new WeakMap,Z=new WeakMap,Y=new WeakMap,_=new WeakMap,q=new WeakMap,$=new WeakMap,ee=new WeakMap,et=new WeakMap,er=new WeakMap,en=new WeakMap,ei=new WeakMap,ea=new WeakMap,es=new WeakSet,eo=new WeakSet,el=new WeakSet,eu=new WeakSet,ec=new WeakSet,ed=new WeakSet,ef=new WeakSet,eh=new WeakSet,ep=new WeakSet,class extends rq{bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(rQ(this,Q).addObserver(this),nM(rQ(this,Q),this.options)?rY(this,es,nI).call(this):this.updateResult(),rY(this,ec,nG).call(this))}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return nw(rQ(this,Q),this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return nw(rQ(this,Q),this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,rY(this,ed,nO).call(this),rY(this,ef,nH).call(this),rQ(this,Q).removeObserver(this)}setOptions(e){let t=this.options,r=rQ(this,Q);if(this.options=rQ(this,V).defaultQueryOptions(e),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled&&"function"!=typeof this.options.enabled&&"boolean"!=typeof r8(this.options.enabled,rQ(this,Q)))throw Error("Expected enabled to be a boolean or a callback that returns a boolean");rY(this,eh,nN).call(this),rQ(this,Q).setOptions(this.options),t._defaulted&&!nn(this.options,t)&&rQ(this,V).getQueryCache().notify({type:"observerOptionsUpdated",query:rQ(this,Q),observer:this});let n=this.hasListeners();n&&nF(rQ(this,Q),r,this.options,t)&&rY(this,es,nI).call(this),this.updateResult(),n&&(rQ(this,Q)!==r||r8(this.options.enabled,rQ(this,Q))!==r8(t.enabled,rQ(this,Q))||r4(this.options.staleTime,rQ(this,Q))!==r4(t.staleTime,rQ(this,Q)))&&rY(this,eo,nP).call(this);let i=rY(this,el,nL).call(this);n&&(rQ(this,Q)!==r||r8(this.options.enabled,rQ(this,Q))!==r8(t.enabled,rQ(this,Q))||i!==rQ(this,ei))&&rY(this,eu,nU).call(this,i)}getOptimisticResult(e){var t,r;let n=rQ(this,V).getQueryCache().build(rQ(this,V),e),i=this.createResult(n,e);return t=this,r=i,nn(t.getCurrentResult(),r)||(rZ(this,X,i),rZ(this,Y,this.options),rZ(this,Z,rQ(this,Q).state)),i}getCurrentResult(){return rQ(this,X)}trackResult(e,t){return new Proxy(e,{get:(e,r)=>(this.trackProp(r),null==t||t(r),"promise"===r&&(this.trackProp("data"),this.options.experimental_prefetchInRender||"pending"!==rQ(this,_).status||rQ(this,_).reject(Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(e,r))})}trackProp(e){rQ(this,ea).add(e)}getCurrentQuery(){return rQ(this,Q)}refetch(){let{...e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.fetch({...e})}fetchOptimistic(e){let t=rQ(this,V).defaultQueryOptions(e),r=rQ(this,V).getQueryCache().build(rQ(this,V),t);return r.fetch().then(()=>this.createResult(r,t))}fetch(e){var t;return rY(this,es,nI).call(this,{...e,cancelRefetch:null==(t=e.cancelRefetch)||t}).then(()=>(this.updateResult(),rQ(this,X)))}createResult(e,t){let r,n=rQ(this,Q),i=this.options,a=rQ(this,X),s=rQ(this,Z),o=rQ(this,Y),l=e!==n?e.state:rQ(this,W),{state:u}=e,c={...u},d=!1;if(t._optimisticResults){let r=this.hasListeners(),a=!r&&nM(e,t),s=r&&nF(e,n,t,i);(a||s)&&(c={...c,...nS(u.data,e.options)}),"isRestoring"===t._optimisticResults&&(c.fetchStatus="idle")}let{error:f,errorUpdatedAt:h,status:p}=c;r=c.data;let m=!1;if(void 0!==t.placeholderData&&void 0===r&&"pending"===p){let e;if((null==a?void 0:a.isPlaceholderData)&&t.placeholderData===(null==o?void 0:o.placeholderData))e=a.data,m=!0;else{var g;e="function"==typeof t.placeholderData?t.placeholderData(null==(g=rQ(this,et))?void 0:g.state.data,rQ(this,et)):t.placeholderData}void 0!==e&&(p="success",r=no(null==a?void 0:a.data,e,t),d=!0)}if(t.select&&void 0!==r&&!m)if(a&&r===(null==s?void 0:s.data)&&t.select===rQ(this,$))r=rQ(this,ee);else try{rZ(this,$,t.select),r=t.select(r),r=no(null==a?void 0:a.data,r,t),rZ(this,ee,r),rZ(this,q,null)}catch(e){rZ(this,q,e)}rQ(this,q)&&(f=rQ(this,q),r=rQ(this,ee),h=Date.now(),p="error");let A="fetching"===c.fetchStatus,y="pending"===p,x="error"===p,B=y&&A,C=void 0!==r,S={status:p,fetchStatus:c.fetchStatus,isPending:y,isSuccess:"success"===p,isError:x,isInitialLoading:B,isLoading:B,data:r,dataUpdatedAt:c.dataUpdatedAt,error:f,errorUpdatedAt:h,failureCount:c.fetchFailureCount,failureReason:c.fetchFailureReason,errorUpdateCount:c.errorUpdateCount,isFetched:c.dataUpdateCount>0||c.errorUpdateCount>0,isFetchedAfterMount:c.dataUpdateCount>l.dataUpdateCount||c.errorUpdateCount>l.errorUpdateCount,isFetching:A,isRefetching:A&&!y,isLoadingError:x&&!C,isPaused:"paused"===c.fetchStatus,isPlaceholderData:d,isRefetchError:x&&C,isStale:nR(e,t),refetch:this.refetch,promise:rQ(this,_),isEnabled:!1!==r8(t.enabled,e)};if(this.options.experimental_prefetchInRender){let t=e=>{"error"===S.status?e.reject(S.error):void 0!==S.data&&e.resolve(S.data)},r=()=>{t(rZ(this,_,S.promise=nv()))},i=rQ(this,_);switch(i.status){case"pending":e.queryHash===n.queryHash&&t(i);break;case"fulfilled":("error"===S.status||S.data!==i.value)&&r();break;case"rejected":("error"!==S.status||S.error!==i.reason)&&r()}}return S}updateResult(){let e=rQ(this,X),t=this.createResult(rQ(this,Q),this.options);if(rZ(this,Z,rQ(this,Q).state),rZ(this,Y,this.options),void 0!==rQ(this,Z).data&&rZ(this,et,rQ(this,Q)),nn(t,e))return;rZ(this,X,t);let r=()=>{if(!e)return!0;let{notifyOnChangeProps:t}=this.options,r="function"==typeof t?t():t;if("all"===r||!r&&!rQ(this,ea).size)return!0;let n=new Set(null!=r?r:rQ(this,ea));return this.options.throwOnError&&n.add("error"),Object.keys(rQ(this,X)).some(t=>rQ(this,X)[t]!==e[t]&&n.has(t))};rY(this,ep,nk).call(this,{listeners:r()})}onQueryUpdate(){this.updateResult(),this.hasListeners()&&rY(this,ec,nG).call(this)}constructor(e,t){super(),r_(this,es),r_(this,eo),r_(this,el),r_(this,eu),r_(this,ec),r_(this,ed),r_(this,ef),r_(this,eh),r_(this,ep),rX(this,V,{writable:!0,value:void 0}),rX(this,Q,{writable:!0,value:void 0}),rX(this,W,{writable:!0,value:void 0}),rX(this,X,{writable:!0,value:void 0}),rX(this,Z,{writable:!0,value:void 0}),rX(this,Y,{writable:!0,value:void 0}),rX(this,_,{writable:!0,value:void 0}),rX(this,q,{writable:!0,value:void 0}),rX(this,$,{writable:!0,value:void 0}),rX(this,ee,{writable:!0,value:void 0}),rX(this,et,{writable:!0,value:void 0}),rX(this,er,{writable:!0,value:void 0}),rX(this,en,{writable:!0,value:void 0}),rX(this,ei,{writable:!0,value:void 0}),rX(this,ea,{writable:!0,value:new Set}),this.options=t,rZ(this,V,e),rZ(this,q,null),rZ(this,_,nv()),this.bindMethods(),this.setOptions(t)}});function nM(e,t){return!1!==r8(t.enabled,e)&&void 0===e.state.data&&("error"!==e.state.status||!1!==t.retryOnMount)||void 0!==e.state.data&&nw(e,t,t.refetchOnMount)}function nw(e,t,r){if(!1!==r8(t.enabled,e)&&"static"!==r4(t.staleTime,e)){let n="function"==typeof r?r(e):r;return"always"===n||!1!==n&&nR(e,t)}return!1}function nF(e,t,r,n){return(e!==t||!1===r8(n.enabled,e))&&(!r.suspense||"error"!==e.state.status)&&nR(e,r)}function nR(e,t){return!1!==r8(t.enabled,e)&&e.isStaleByTime(r4(t.staleTime,e))}function nI(e){rY(this,eh,nN).call(this);let t=rQ(this,Q).fetch(this.options,e);return(null==e?void 0:e.throwOnError)||(t=t.catch(r2)),t}function nP(){rY(this,ed,nO).call(this);let e=r4(this.options.staleTime,rQ(this,Q));if(r1||rQ(this,X).isStale||!r9(e))return;let t=r3(rQ(this,X).dataUpdatedAt,e);rZ(this,er,r0.setTimeout(()=>{rQ(this,X).isStale||this.updateResult()},t+1))}function nL(){var e;return null!=(e="function"==typeof this.options.refetchInterval?this.options.refetchInterval(rQ(this,Q)):this.options.refetchInterval)&&e}function nU(e){rY(this,ef,nH).call(this),rZ(this,ei,e),!r1&&!1!==r8(this.options.enabled,rQ(this,Q))&&r9(rQ(this,ei))&&0!==rQ(this,ei)&&rZ(this,en,r0.setInterval(()=>{(this.options.refetchIntervalInBackground||nf.isFocused())&&rY(this,es,nI).call(this)},rQ(this,ei)))}function nG(){rY(this,eo,nP).call(this),rY(this,eu,nU).call(this,rY(this,el,nL).call(this))}function nO(){rQ(this,er)&&(r0.clearTimeout(rQ(this,er)),rZ(this,er,void 0))}function nH(){rQ(this,en)&&(r0.clearInterval(rQ(this,en)),rZ(this,en,void 0))}function nN(){let e=rQ(this,V).getQueryCache().build(rQ(this,V),this.options);if(e===rQ(this,Q))return;let t=rQ(this,Q);rZ(this,Q,e),rZ(this,W,e.state),this.hasListeners()&&(null==t||t.removeObserver(this),e.addObserver(this))}function nk(e){np.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(rQ(this,X))}),rQ(this,V).getQueryCache().notify({query:rQ(this,Q),type:"observerResultsUpdated"})})}var nz=eP.createContext(void 0),nj=e=>{let{client:t,children:r}=e;return eP.useEffect(()=>(t.mount(),()=>{t.unmount()}),[t]),(0,eI.jsx)(nz.Provider,{value:t,children:r})},nK=eP.createContext(function(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}()),nJ=eP.createContext(!1);nJ.Provider;var nV=(e,t)=>void 0===t.state.data,nQ=(e,t,r)=>t.fetchOptimistic(e).catch(()=>{r.clearReset()});function nW(e,t,r){var n,i,a,s,o;let l=eP.useContext(nJ),u=eP.useContext(nK),c=(e=>{let t=eP.useContext(nz);if(e)return e;if(!t)throw Error("No QueryClient set, use QueryClientProvider to set one");return t})(r),d=c.defaultQueryOptions(e);if(null==(i=c.getDefaultOptions().queries)||null==(n=i._experimental_beforeQuery)||n.call(i,d),d._optimisticResults=l?"isRestoring":"optimistic",d.suspense){let e=e=>"static"===e?e:Math.max(null!=e?e:1e3,1e3),t=d.staleTime;d.staleTime="function"==typeof t?function(){for(var r=arguments.length,n=Array(r),i=0;i<r;i++)n[i]=arguments[i];return e(t(...n))}:e(t),"number"==typeof d.gcTime&&(d.gcTime=Math.max(d.gcTime,1e3))}(d.suspense||d.throwOnError||d.experimental_prefetchInRender)&&!u.isReset()&&(d.retryOnMount=!1),eP.useEffect(()=>{u.clearReset()},[u]);let f=!c.getQueryCache().get(d.queryHash),[h]=eP.useState(()=>new t(c,d)),p=h.getOptimisticResult(d),m=!l&&!1!==e.subscribed;if(eP.useSyncExternalStore(eP.useCallback(e=>{let t=m?h.subscribe(np.batchCalls(e)):r2;return h.updateResult(),t},[h,m]),()=>h.getCurrentResult(),()=>h.getCurrentResult()),eP.useEffect(()=>{h.setOptions(d)},[d,h]),(null==d?void 0:d.suspense)&&p.isPending)throw nQ(d,h,u);if((e=>{var t,r;let{result:n,errorResetBoundary:i,throwOnError:a,query:s,suspense:o}=e;return n.isError&&!i.isReset()&&!n.isFetching&&s&&(o&&void 0===n.data||(t=a,r=[n.error,s],"function"==typeof t?t(...r):!!t))})({result:p,errorResetBoundary:u,throwOnError:d.throwOnError,query:c.getQueryCache().get(d.queryHash),suspense:d.suspense}))throw p.error;if(null==(s=c.getDefaultOptions().queries)||null==(a=s._experimental_afterQuery)||a.call(s,d,p),d.experimental_prefetchInRender&&!r1&&p.isLoading&&p.isFetching&&!l){let e=f?nQ(d,h,u):null==(o=c.getQueryCache().get(d.queryHash))?void 0:o.promise;null==e||e.catch(r2).finally(()=>{h.updateResult()})}return d.notifyOnChangeProps?p:h.trackResult(p)}var nX=e.i(54970),nZ=e.i(12979),nY=e.i(62395),n_=e.i(75567),nq=e.i(47071),n$=e.i(79123);let n0={0:32,1:32,2:32,3:32,4:32,5:32};function n1(e){let{displacementMap:t,visibilityMask:r,textureNames:n,alphaTextures:i,detailTextureName:a}=e,{debugMode:s}=(0,n$.useDebug)(),o=(0,nq.useTexture)(n.map(e=>(0,nZ.terrainTextureToUrl)(e)),e=>{e.forEach(e=>(0,n_.setupColor)(e))}),l=a?(0,nZ.textureToUrl)(a):null,u=(0,nq.useTexture)(null!=l?l:nZ.FALLBACK_TEXTURE_URL,e=>{(0,n_.setupColor)(e)}),c=(0,eP.useCallback)(e=>{!function(e){let{shader:t,baseTextures:r,alphaTextures:n,visibilityMask:i,tiling:a,debugMode:s=!1,detailTexture:o=null}=e,l=r.length;if(r.forEach((e,r)=>{t.uniforms["albedo".concat(r)]={value:e}}),n.forEach((e,r)=>{r>0&&(t.uniforms["mask".concat(r)]={value:e})}),i&&(t.uniforms.visibilityMask={value:i}),r.forEach((e,r)=>{var n;t.uniforms["tiling".concat(r)]={value:null!=(n=a[r])?n:32}}),t.uniforms.debugMode={value:+!!s},o&&(t.uniforms.detailTexture={value:o},t.uniforms.detailTiling={value:64},t.uniforms.detailFadeDistance={value:150},t.vertexShader=t.vertexShader.replace("#include <common>","#include <common>\nvarying vec3 vTerrainWorldPos;"),t.vertexShader=t.vertexShader.replace("#include <worldpos_vertex>","#include <worldpos_vertex>\nvTerrainWorldPos = (modelMatrix * vec4(transformed, 1.0)).xyz;")),t.fragmentShader="\nuniform sampler2D albedo0;\nuniform sampler2D albedo1;\nuniform sampler2D albedo2;\nuniform sampler2D albedo3;\nuniform sampler2D albedo4;\nuniform sampler2D albedo5;\nuniform sampler2D mask1;\nuniform sampler2D mask2;\nuniform sampler2D mask3;\nuniform sampler2D mask4;\nuniform sampler2D mask5;\nuniform float tiling0;\nuniform float tiling1;\nuniform float tiling2;\nuniform float tiling3;\nuniform float tiling4;\nuniform float tiling5;\nuniform float debugMode;\n".concat(i?"uniform sampler2D visibilityMask;":"","\n").concat(o?"uniform sampler2D detailTexture;\nuniform float detailTiling;\nuniform float detailFadeDistance;\nvarying vec3 vTerrainWorldPos;":"","\n\n// Wireframe edge detection for debug mode\nfloat getWireframe(vec2 uv, float gridSize, float lineWidth) {\n vec2 gridUv = uv * gridSize;\n vec2 grid = abs(fract(gridUv - 0.5) - 0.5);\n vec2 deriv = fwidth(gridUv);\n vec2 edge = smoothstep(vec2(0.0), deriv * lineWidth, grid);\n return 1.0 - min(edge.x, edge.y);\n}\n")+t.fragmentShader,i){let e="#include <clipping_planes_fragment>";t.fragmentShader=t.fragmentShader.replace(e,"".concat(e,"\n // Early discard for invisible areas (before fog/lighting)\n float visibility = texture2D(visibilityMask, vMapUv).r;\n if (visibility < 0.5) {\n discard;\n }\n "))}t.fragmentShader=t.fragmentShader.replace("#include <map_fragment>","\n // Sample base albedo layers (sRGB textures auto-decoded to linear)\n vec2 baseUv = vMapUv;\n vec3 c0 = texture2D(albedo0, baseUv * vec2(tiling0)).rgb;\n ".concat(l>1?"vec3 c1 = texture2D(albedo1, baseUv * vec2(tiling1)).rgb;":"","\n ").concat(l>2?"vec3 c2 = texture2D(albedo2, baseUv * vec2(tiling2)).rgb;":"","\n ").concat(l>3?"vec3 c3 = texture2D(albedo3, baseUv * vec2(tiling3)).rgb;":"","\n ").concat(l>4?"vec3 c4 = texture2D(albedo4, baseUv * vec2(tiling4)).rgb;":"","\n ").concat(l>5?"vec3 c5 = texture2D(albedo5, baseUv * vec2(tiling5)).rgb;":"","\n\n // Sample linear masks (use R channel)\n float a1 = texture2D(mask1, baseUv).r;\n ").concat(l>1?"float a2 = texture2D(mask2, baseUv).r;":"","\n ").concat(l>2?"float a3 = texture2D(mask3, baseUv).r;":"","\n ").concat(l>3?"float a4 = texture2D(mask4, baseUv).r;":"","\n ").concat(l>4?"float a5 = texture2D(mask5, baseUv).r;":"","\n\n // Bottom-up compositing: each mask tells how much the higher layer replaces lower\n ").concat(l>1?"vec3 blended = mix(c0, c1, clamp(a1, 0.0, 1.0));":"","\n ").concat(l>2?"blended = mix(blended, c2, clamp(a2, 0.0, 1.0));":"","\n ").concat(l>3?"blended = mix(blended, c3, clamp(a3, 0.0, 1.0));":"","\n ").concat(l>4?"blended = mix(blended, c4, clamp(a4, 0.0, 1.0));":"","\n ").concat(l>5?"blended = mix(blended, c5, clamp(a5, 0.0, 1.0));":"","\n\n // Assign to diffuseColor before lighting\n vec3 textureColor = ").concat(l>1?"blended":"c0",";\n\n ").concat(o?"// Detail texture blending (Torque-style multiplicative blend)\n // Sample detail texture at high frequency tiling\n vec3 detailColor = texture2D(detailTexture, baseUv * detailTiling).rgb;\n\n // Calculate distance-based fade factor using world positions\n // Torque: distFactor = (zeroDetailDistance - distance) / zeroDetailDistance\n float distToCamera = distance(vTerrainWorldPos, cameraPosition);\n float detailFade = clamp(1.0 - distToCamera / detailFadeDistance, 0.0, 1.0);\n\n // Torque blending: dst * lerp(1.0, detailTexel, fadeFactor)\n // Detail textures are authored with bright values (~0.8 mean), not 0.5 gray\n // Direct multiplication adds subtle darkening for surface detail\n textureColor *= mix(vec3(1.0), detailColor, detailFade);":"","\n\n // Debug mode wireframe handling\n if (debugMode > 0.5) {\n // 256 grid cells across the terrain (matches terrain resolution)\n float wireframe = getWireframe(baseUv, 256.0, 1.0);\n vec3 wireColor = vec3(0.0, 0.8, 0.4); // Green wireframe\n\n if (gl_FrontFacing) {\n // Front face: show textures with barely visible wireframe overlay\n diffuseColor.rgb = mix(textureColor, wireColor, wireframe * 0.05);\n } else {\n // Back face: show only wireframe, discard non-wireframe pixels\n if (wireframe < 0.1) {\n discard;\n }\n diffuseColor.rgb = mix(vec3(0.0), wireColor, 0.25);\n }\n } else {\n diffuseColor.rgb = textureColor;\n }\n"))}({shader:e,baseTextures:o,alphaTextures:i,visibilityMask:r,tiling:n0,debugMode:s,detailTexture:l?u:null})},[o,i,r,s,u,l]),d="".concat(s?"debug":"normal","-").concat(l?"detail":"nodetail");return(0,eI.jsx)("meshLambertMaterial",{displacementMap:t,map:t,displacementScale:2048,depthWrite:!0,side:s?eO.DoubleSide:eO.FrontSide,onBeforeCompile:c},d)}function n2(e){let{displacementMap:t,visibilityMask:r,textureNames:n,alphaTextures:i,detailTextureName:a}=e;return(0,eI.jsx)(eP.Suspense,{fallback:(0,eI.jsx)("meshLambertMaterial",{color:"rgb(0, 109, 56)",displacementMap:t,displacementScale:2048,wireframe:!0}),children:(0,eI.jsx)(n1,{displacementMap:t,visibilityMask:r,textureNames:n,alphaTextures:i,detailTextureName:a})})}let n9=(0,eP.memo)(function(e){let{tileX:t,tileZ:r,blockSize:n,basePosition:i,textureNames:a,geometry:s,displacementMap:o,visibilityMask:l,alphaTextures:u,detailTextureName:c,visible:d=!0}=e,f=(0,eP.useMemo)(()=>[i.x+t*n+1024,0,i.z+r*n+1024],[t,r,n,i]);return(0,eI.jsx)("mesh",{position:f,geometry:s,receiveShadow:!0,castShadow:!0,visible:d,children:(0,eI.jsx)(n2,{displacementMap:o,visibilityMask:l,textureNames:a,alphaTextures:u,detailTextureName:c})})});var n3=e.i(77482);function n4(e){let t=new Uint8Array(65536);for(let r of(t.fill(255),e)){let e=255&r,n=r>>8&255,i=r>>16,a=256*n;for(let r=0;r<i;r++){let n=a+e+r;n<t.length&&(t[n]=0)}}let r=new eO.DataTexture(t,256,256,eO.RedFormat,eO.UnsignedByteType);return r.colorSpace=eO.NoColorSpace,r.wrapS=r.wrapT=eO.ClampToEdgeWrapping,r.magFilter=eO.NearestFilter,r.minFilter=eO.NearestFilter,r.needsUpdate=!0,r}let n8=(0,eP.memo)(function(e){var t;let{object:r}=e,n=(0,nY.getProperty)(r,"terrainFile"),i=null!=(t=(0,nY.getInt)(r,"squareSize"))?t:8,a=(0,nY.getProperty)(r,"detailTexture"),s=256*i,o=function(){var e;let t=(0,n3.useRuntime)().getObjectByName("Sky");if(!t)return 600;let r=(0,nY.getFloat)(t,"high_visibleDistance");return null!=r&&r>0?r:null!=(e=(0,nY.getFloat)(t,"visibleDistance"))?e:600}(),l=(0,eJ.useThree)(e=>e.camera),u=(0,eP.useMemo)(()=>{let[e,,t]=(0,nY.getPosition)(r);return{x:e,z:t}},[r]),c=(0,eP.useMemo)(()=>{let e=(0,nY.getProperty)(r,"emptySquares");return e?e.split(" ").map(e=>parseInt(e,10)):[]},[r]),d=(0,eP.useMemo)(()=>{let e=256*i,t=new eO.PlaneGeometry(e,e,256,256);return t.rotateX(-Math.PI/2),t.rotateY(-Math.PI/2),t},[i]),{data:f}=nW({queryKey:["terrain",n],queryFn:()=>(0,nZ.loadTerrain)(n)},nD,void 0),h=(0,eP.useMemo)(()=>{if(!f)return null;let e=function(e){let t=new Float32Array(e.length);for(let r=0;r<e.length;r++)t[r]=e[r]/65535;return t}(f.heightMap),t=new eO.DataTexture(e,256,256,eO.RedFormat,eO.FloatType);return t.colorSpace=eO.NoColorSpace,t.generateMipmaps=!1,t.wrapS=eO.RepeatWrapping,t.wrapT=eO.RepeatWrapping,t.needsUpdate=!0,t},[f]),p=(0,eP.useMemo)(()=>n4(c),[c]),m=(0,eP.useMemo)(()=>n4([]),[]),g=(0,eP.useMemo)(()=>f?f.alphaMaps.map(e=>(0,n_.setupMask)(e)):null,[f]),A=(0,eP.useMemo)(()=>{let e=2*Math.ceil(o/s)+1;return e*e-1},[o,s]),y=(0,eP.useMemo)(()=>Array.from({length:A},(e,t)=>t),[A]),[x,B]=(0,eP.useState)(()=>Array(A).fill(null)),C=(0,eP.useRef)({xStart:0,xEnd:0,zStart:0,zEnd:0});return((0,eV.useFrame)(()=>{let e=l.position.x-u.x,t=l.position.z-u.z,r=Math.floor((e-o)/s),n=Math.ceil((e+o)/s),i=Math.floor((t-o)/s),a=Math.ceil((t+o)/s),c=C.current;if(r===c.xStart&&n===c.xEnd&&i===c.zStart&&a===c.zEnd)return;c.xStart=r,c.xEnd=n,c.zStart=i,c.zEnd=a;let d=[];for(let e=r;e<n;e++)for(let t=i;t<a;t++)(0!==e||0!==t)&&d.push({tileX:e,tileZ:t});for(;d.length<A;)d.push(null);B(d)}),f&&h&&g)?(0,eI.jsxs)(eI.Fragment,{children:[(0,eI.jsx)(n9,{tileX:0,tileZ:0,blockSize:s,basePosition:u,textureNames:f.textureNames,geometry:d,displacementMap:h,visibilityMask:p,alphaTextures:g,detailTextureName:a}),y.map(e=>{var t,r;let n=x[e];return(0,eI.jsx)(n9,{tileX:null!=(t=null==n?void 0:n.tileX)?t:0,tileZ:null!=(r=null==n?void 0:n.tileZ)?r:0,blockSize:s,basePosition:u,textureNames:f.textureNames,geometry:d,displacementMap:h,visibilityMask:m,alphaTextures:g,detailTextureName:a,visible:null!==n},e)})]}):null}),n5=(0,eP.createContext)(null);function n6(){return(0,eP.useContext)(n5)}var n7=eP;let ie=(0,n7.createContext)(null),it={didCatch:!1,error:null};class ir extends n7.Component{static getDerivedStateFromError(e){return{didCatch:!0,error:e}}resetErrorBoundary(){let{error:e}=this.state;if(null!==e){for(var t,r,n=arguments.length,i=Array(n),a=0;a<n;a++)i[a]=arguments[a];null==(t=(r=this.props).onReset)||t.call(r,{args:i,reason:"imperative-api"}),this.setState(it)}}componentDidCatch(e,t){var r,n;null==(r=(n=this.props).onError)||r.call(n,e,t)}componentDidUpdate(e,t){let{didCatch:r}=this.state,{resetKeys:n}=this.props;if(r&&null!==t.error&&function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return e.length!==t.length||e.some((e,r)=>!Object.is(e,t[r]))}(e.resetKeys,n)){var i,a;null==(i=(a=this.props).onReset)||i.call(a,{next:n,prev:e.resetKeys,reason:"keys"}),this.setState(it)}}render(){let{children:e,fallbackRender:t,FallbackComponent:r,fallback:n}=this.props,{didCatch:i,error:a}=this.state,s=e;if(i){let e={error:a,resetErrorBoundary:this.resetErrorBoundary};if("function"==typeof t)s=t(e);else if(r)s=(0,n7.createElement)(r,e);else if(void 0!==n)s=n;else throw a}return(0,n7.createElement)(ie.Provider,{value:{didCatch:i,error:a,resetErrorBoundary:this.resetErrorBoundary}},s)}constructor(e){super(e),this.resetErrorBoundary=this.resetErrorBoundary.bind(this),this.state=it}}var ii=e.i(31067),ia=eO;function is(e,t){if(t===eO.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),e;if(t!==eO.TriangleFanDrawMode&&t!==eO.TriangleStripDrawMode)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",t),e;{let r=e.getIndex();if(null===r){let t=[],n=e.getAttribute("position");if(void 0===n)return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),e;for(let e=0;e<n.count;e++)t.push(e);e.setIndex(t),r=e.getIndex()}let n=r.count-2,i=[];if(r)if(t===eO.TriangleFanDrawMode)for(let e=1;e<=n;e++)i.push(r.getX(0)),i.push(r.getX(e)),i.push(r.getX(e+1));else for(let e=0;e<n;e++)e%2==0?(i.push(r.getX(e)),i.push(r.getX(e+1)),i.push(r.getX(e+2))):(i.push(r.getX(e+2)),i.push(r.getX(e+1)),i.push(r.getX(e)));i.length/3!==n&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");let a=e.clone();return a.setIndex(i),a.clearGroups(),a}}let io=parseInt(eO.REVISION.replace(/\D+/g,""));function il(e){if("undefined"!=typeof TextDecoder)return new TextDecoder().decode(e);let t="";for(let r=0,n=e.length;r<n;r++)t+=String.fromCharCode(e[r]);try{return decodeURIComponent(escape(t))}catch(e){return t}}let iu="srgb",ic="srgb-linear";class id extends ia.Loader{load(e,t,r,n){let i,a=this;if(""!==this.resourcePath)i=this.resourcePath;else if(""!==this.path){let t=ia.LoaderUtils.extractUrlBase(e);i=ia.LoaderUtils.resolveURL(t,this.path)}else i=ia.LoaderUtils.extractUrlBase(e);this.manager.itemStart(e);let s=function(t){n?n(t):console.error(t),a.manager.itemError(e),a.manager.itemEnd(e)},o=new ia.FileLoader(this.manager);o.setPath(this.path),o.setResponseType("arraybuffer"),o.setRequestHeader(this.requestHeader),o.setWithCredentials(this.withCredentials),o.load(e,function(r){try{a.parse(r,i,function(r){t(r),a.manager.itemEnd(e)},s)}catch(e){s(e)}},r,s)}setDRACOLoader(e){return this.dracoLoader=e,this}setDDSLoader(){throw Error('THREE.GLTFLoader: "MSFT_texture_dds" no longer supported. Please update to "KHR_texture_basisu".')}setKTX2Loader(e){return this.ktx2Loader=e,this}setMeshoptDecoder(e){return this.meshoptDecoder=e,this}register(e){return -1===this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.push(e),this}unregister(e){return -1!==this.pluginCallbacks.indexOf(e)&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(e),1),this}parse(e,t,r,n){let i,a={},s={};if("string"==typeof e)i=JSON.parse(e);else if(e instanceof ArrayBuffer)if(il(new Uint8Array(e.slice(0,4)))===iP){try{a[ip.KHR_BINARY_GLTF]=new iU(e)}catch(e){n&&n(e);return}i=JSON.parse(a[ip.KHR_BINARY_GLTF].content)}else i=JSON.parse(il(new Uint8Array(e)));else i=e;if(void 0===i.asset||i.asset.version[0]<2){n&&n(Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}let o=new i2(i,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});o.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e<this.pluginCallbacks.length;e++){let t=this.pluginCallbacks[e](o);t.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),s[t.name]=t,a[t.name]=!0}if(i.extensionsUsed)for(let e=0;e<i.extensionsUsed.length;++e){let t=i.extensionsUsed[e],r=i.extensionsRequired||[];switch(t){case ip.KHR_MATERIALS_UNLIT:a[t]=new iv;break;case ip.KHR_DRACO_MESH_COMPRESSION:a[t]=new iG(i,this.dracoLoader);break;case ip.KHR_TEXTURE_TRANSFORM:a[t]=new iO;break;case ip.KHR_MESH_QUANTIZATION:a[t]=new iH;break;default:r.indexOf(t)>=0&&void 0===s[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}o.setExtensions(a),o.setPlugins(s),o.parse(r,n)}parseAsync(e,t){let r=this;return new Promise(function(n,i){r.parse(e,t,n,i)})}constructor(e){super(e),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(e){return new iA(e)}),this.register(function(e){return new iy(e)}),this.register(function(e){return new iM(e)}),this.register(function(e){return new iw(e)}),this.register(function(e){return new iF(e)}),this.register(function(e){return new iB(e)}),this.register(function(e){return new iC(e)}),this.register(function(e){return new iS(e)}),this.register(function(e){return new iE(e)}),this.register(function(e){return new ig(e)}),this.register(function(e){return new iT(e)}),this.register(function(e){return new ix(e)}),this.register(function(e){return new iD(e)}),this.register(function(e){return new ib(e)}),this.register(function(e){return new im(e)}),this.register(function(e){return new iR(e)}),this.register(function(e){return new iI(e)})}}function ih(){let e={};return{get:function(t){return e[t]},add:function(t,r){e[t]=r},remove:function(t){delete e[t]},removeAll:function(){e={}}}}let ip={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_DISPERSION:"KHR_materials_dispersion",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_ANISOTROPY:"KHR_materials_anisotropy",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_MATERIALS_BUMP:"EXT_materials_bump",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_TEXTURE_AVIF:"EXT_texture_avif",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"};class im{_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let r=0,n=t.length;r<n;r++){let n=t[r];n.extensions&&n.extensions[this.name]&&void 0!==n.extensions[this.name].light&&e._addNodeRef(this.cache,n.extensions[this.name].light)}}_loadLight(e){let t,r=this.parser,n="light:"+e,i=r.cache.get(n);if(i)return i;let a=r.json,s=((a.extensions&&a.extensions[this.name]||{}).lights||[])[e],o=new ia.Color(0xffffff);void 0!==s.color&&o.setRGB(s.color[0],s.color[1],s.color[2],ic);let l=void 0!==s.range?s.range:0;switch(s.type){case"directional":(t=new ia.DirectionalLight(o)).target.position.set(0,0,-1),t.add(t.target);break;case"point":(t=new ia.PointLight(o)).distance=l;break;case"spot":(t=new ia.SpotLight(o)).distance=l,s.spot=s.spot||{},s.spot.innerConeAngle=void 0!==s.spot.innerConeAngle?s.spot.innerConeAngle:0,s.spot.outerConeAngle=void 0!==s.spot.outerConeAngle?s.spot.outerConeAngle:Math.PI/4,t.angle=s.spot.outerConeAngle,t.penumbra=1-s.spot.innerConeAngle/s.spot.outerConeAngle,t.target.position.set(0,0,-1),t.add(t.target);break;default:throw Error("THREE.GLTFLoader: Unexpected light type: "+s.type)}return t.position.set(0,0,0),t.decay=2,iq(t,s),void 0!==s.intensity&&(t.intensity=s.intensity),t.name=r.createUniqueName(s.name||"light_"+e),i=Promise.resolve(t),r.cache.add(n,i),i}getDependency(e,t){if("light"===e)return this._loadLight(t)}createNodeAttachment(e){let t=this,r=this.parser,n=r.json.nodes[e],i=(n.extensions&&n.extensions[this.name]||{}).light;return void 0===i?null:this._loadLight(i).then(function(e){return r._getNodeRef(t.cache,i,e)})}constructor(e){this.parser=e,this.name=ip.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}}class iv{getMaterialType(){return ia.MeshBasicMaterial}extendParams(e,t,r){let n=[];e.color=new ia.Color(1,1,1),e.opacity=1;let i=t.pbrMetallicRoughness;if(i){if(Array.isArray(i.baseColorFactor)){let t=i.baseColorFactor;e.color.setRGB(t[0],t[1],t[2],ic),e.opacity=t[3]}void 0!==i.baseColorTexture&&n.push(r.assignTexture(e,"map",i.baseColorTexture,iu))}return Promise.all(n)}constructor(){this.name=ip.KHR_MATERIALS_UNLIT}}class ig{extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name].emissiveStrength;return void 0!==n&&(t.emissiveIntensity=n),Promise.resolve()}constructor(e){this.parser=e,this.name=ip.KHR_MATERIALS_EMISSIVE_STRENGTH}}class iA{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ia.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];if(void 0!==a.clearcoatFactor&&(t.clearcoat=a.clearcoatFactor),void 0!==a.clearcoatTexture&&i.push(r.assignTexture(t,"clearcoatMap",a.clearcoatTexture)),void 0!==a.clearcoatRoughnessFactor&&(t.clearcoatRoughness=a.clearcoatRoughnessFactor),void 0!==a.clearcoatRoughnessTexture&&i.push(r.assignTexture(t,"clearcoatRoughnessMap",a.clearcoatRoughnessTexture)),void 0!==a.clearcoatNormalTexture&&(i.push(r.assignTexture(t,"clearcoatNormalMap",a.clearcoatNormalTexture)),void 0!==a.clearcoatNormalTexture.scale)){let e=a.clearcoatNormalTexture.scale;t.clearcoatNormalScale=new ia.Vector2(e,e)}return Promise.all(i)}constructor(e){this.parser=e,this.name=ip.KHR_MATERIALS_CLEARCOAT}}class iy{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ia.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name];return t.dispersion=void 0!==n.dispersion?n.dispersion:0,Promise.resolve()}constructor(e){this.parser=e,this.name=ip.KHR_MATERIALS_DISPERSION}}class ix{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ia.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return void 0!==a.iridescenceFactor&&(t.iridescence=a.iridescenceFactor),void 0!==a.iridescenceTexture&&i.push(r.assignTexture(t,"iridescenceMap",a.iridescenceTexture)),void 0!==a.iridescenceIor&&(t.iridescenceIOR=a.iridescenceIor),void 0===t.iridescenceThicknessRange&&(t.iridescenceThicknessRange=[100,400]),void 0!==a.iridescenceThicknessMinimum&&(t.iridescenceThicknessRange[0]=a.iridescenceThicknessMinimum),void 0!==a.iridescenceThicknessMaximum&&(t.iridescenceThicknessRange[1]=a.iridescenceThicknessMaximum),void 0!==a.iridescenceThicknessTexture&&i.push(r.assignTexture(t,"iridescenceThicknessMap",a.iridescenceThicknessTexture)),Promise.all(i)}constructor(e){this.parser=e,this.name=ip.KHR_MATERIALS_IRIDESCENCE}}class iB{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ia.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[];t.sheenColor=new ia.Color(0,0,0),t.sheenRoughness=0,t.sheen=1;let a=n.extensions[this.name];if(void 0!==a.sheenColorFactor){let e=a.sheenColorFactor;t.sheenColor.setRGB(e[0],e[1],e[2],ic)}return void 0!==a.sheenRoughnessFactor&&(t.sheenRoughness=a.sheenRoughnessFactor),void 0!==a.sheenColorTexture&&i.push(r.assignTexture(t,"sheenColorMap",a.sheenColorTexture,iu)),void 0!==a.sheenRoughnessTexture&&i.push(r.assignTexture(t,"sheenRoughnessMap",a.sheenRoughnessTexture)),Promise.all(i)}constructor(e){this.parser=e,this.name=ip.KHR_MATERIALS_SHEEN}}class iC{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ia.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return void 0!==a.transmissionFactor&&(t.transmission=a.transmissionFactor),void 0!==a.transmissionTexture&&i.push(r.assignTexture(t,"transmissionMap",a.transmissionTexture)),Promise.all(i)}constructor(e){this.parser=e,this.name=ip.KHR_MATERIALS_TRANSMISSION}}class iS{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ia.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];t.thickness=void 0!==a.thicknessFactor?a.thicknessFactor:0,void 0!==a.thicknessTexture&&i.push(r.assignTexture(t,"thicknessMap",a.thicknessTexture)),t.attenuationDistance=a.attenuationDistance||1/0;let s=a.attenuationColor||[1,1,1];return t.attenuationColor=new ia.Color().setRGB(s[0],s[1],s[2],ic),Promise.all(i)}constructor(e){this.parser=e,this.name=ip.KHR_MATERIALS_VOLUME}}class iE{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ia.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser.json.materials[e];if(!r.extensions||!r.extensions[this.name])return Promise.resolve();let n=r.extensions[this.name];return t.ior=void 0!==n.ior?n.ior:1.5,Promise.resolve()}constructor(e){this.parser=e,this.name=ip.KHR_MATERIALS_IOR}}class iT{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ia.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];t.specularIntensity=void 0!==a.specularFactor?a.specularFactor:1,void 0!==a.specularTexture&&i.push(r.assignTexture(t,"specularIntensityMap",a.specularTexture));let s=a.specularColorFactor||[1,1,1];return t.specularColor=new ia.Color().setRGB(s[0],s[1],s[2],ic),void 0!==a.specularColorTexture&&i.push(r.assignTexture(t,"specularColorMap",a.specularColorTexture,iu)),Promise.all(i)}constructor(e){this.parser=e,this.name=ip.KHR_MATERIALS_SPECULAR}}class ib{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ia.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return t.bumpScale=void 0!==a.bumpFactor?a.bumpFactor:1,void 0!==a.bumpTexture&&i.push(r.assignTexture(t,"bumpMap",a.bumpTexture)),Promise.all(i)}constructor(e){this.parser=e,this.name=ip.EXT_MATERIALS_BUMP}}class iD{getMaterialType(e){let t=this.parser.json.materials[e];return t.extensions&&t.extensions[this.name]?ia.MeshPhysicalMaterial:null}extendMaterialParams(e,t){let r=this.parser,n=r.json.materials[e];if(!n.extensions||!n.extensions[this.name])return Promise.resolve();let i=[],a=n.extensions[this.name];return void 0!==a.anisotropyStrength&&(t.anisotropy=a.anisotropyStrength),void 0!==a.anisotropyRotation&&(t.anisotropyRotation=a.anisotropyRotation),void 0!==a.anisotropyTexture&&i.push(r.assignTexture(t,"anisotropyMap",a.anisotropyTexture)),Promise.all(i)}constructor(e){this.parser=e,this.name=ip.KHR_MATERIALS_ANISOTROPY}}class iM{loadTexture(e){let t=this.parser,r=t.json,n=r.textures[e];if(!n.extensions||!n.extensions[this.name])return null;let i=n.extensions[this.name],a=t.options.ktx2Loader;if(!a)if(!(r.extensionsRequired&&r.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return t.loadTextureImage(e,i.source,a)}constructor(e){this.parser=e,this.name=ip.KHR_TEXTURE_BASISU}}class iw{loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],s=n.images[a.source],o=r.textureLoader;if(s.uri){let e=r.options.manager.getHandler(s.uri);null!==e&&(o=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,a.source,o);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}constructor(e){this.parser=e,this.name=ip.EXT_TEXTURE_WEBP,this.isSupported=null}}class iF{loadTexture(e){let t=this.name,r=this.parser,n=r.json,i=n.textures[e];if(!i.extensions||!i.extensions[t])return null;let a=i.extensions[t],s=n.images[a.source],o=r.textureLoader;if(s.uri){let e=r.options.manager.getHandler(s.uri);null!==e&&(o=e)}return this.detectSupport().then(function(i){if(i)return r.loadTextureImage(e,a.source,o);if(n.extensionsRequired&&n.extensionsRequired.indexOf(t)>=0)throw Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return r.loadTexture(e)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(e){let t=new Image;t.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",t.onload=t.onerror=function(){e(1===t.height)}})),this.isSupported}constructor(e){this.parser=e,this.name=ip.EXT_TEXTURE_AVIF,this.isSupported=null}}class iR{loadBufferView(e){let t=this.parser.json,r=t.bufferViews[e];if(!r.extensions||!r.extensions[this.name])return null;{let e=r.extensions[this.name],n=this.parser.getDependency("buffer",e.buffer),i=this.parser.options.meshoptDecoder;if(!i||!i.supported)if(!(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0))return null;else throw Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return n.then(function(t){let r=e.byteOffset||0,n=e.byteLength||0,a=e.count,s=e.byteStride,o=new Uint8Array(t,r,n);return i.decodeGltfBufferAsync?i.decodeGltfBufferAsync(a,s,o,e.mode,e.filter).then(function(e){return e.buffer}):i.ready.then(function(){let t=new ArrayBuffer(a*s);return i.decodeGltfBuffer(new Uint8Array(t),a,s,o,e.mode,e.filter),t})})}}constructor(e){this.name=ip.EXT_MESHOPT_COMPRESSION,this.parser=e}}class iI{createNodeMesh(e){let t=this.parser.json,r=t.nodes[e];if(!r.extensions||!r.extensions[this.name]||void 0===r.mesh)return null;for(let e of t.meshes[r.mesh].primitives)if(e.mode!==ij.TRIANGLES&&e.mode!==ij.TRIANGLE_STRIP&&e.mode!==ij.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=r.extensions[this.name].attributes,i=[],a={};for(let e in n)i.push(this.parser.getDependency("accessor",n[e]).then(t=>(a[e]=t,a[e])));return i.length<1?null:(i.push(this.parser.createNodeMesh(e)),Promise.all(i).then(e=>{let t=e.pop(),r=t.isGroup?t.children:[t],n=e[0].count,i=[];for(let e of r){let t=new ia.Matrix4,r=new ia.Vector3,s=new ia.Quaternion,o=new ia.Vector3(1,1,1),l=new ia.InstancedMesh(e.geometry,e.material,n);for(let e=0;e<n;e++)a.TRANSLATION&&r.fromBufferAttribute(a.TRANSLATION,e),a.ROTATION&&s.fromBufferAttribute(a.ROTATION,e),a.SCALE&&o.fromBufferAttribute(a.SCALE,e),l.setMatrixAt(e,t.compose(r,s,o));for(let t in a)if("_COLOR_0"===t){let e=a[t];l.instanceColor=new ia.InstancedBufferAttribute(e.array,e.itemSize,e.normalized)}else"TRANSLATION"!==t&&"ROTATION"!==t&&"SCALE"!==t&&e.geometry.setAttribute(t,a[t]);ia.Object3D.prototype.copy.call(l,e),this.parser.assignFinalMaterial(l),i.push(l)}return t.isGroup?(t.clear(),t.add(...i),t):i[0]}))}constructor(e){this.name=ip.EXT_MESH_GPU_INSTANCING,this.parser=e}}let iP="glTF",iL={JSON:0x4e4f534a,BIN:5130562};class iU{constructor(e){this.name=ip.KHR_BINARY_GLTF,this.content=null,this.body=null;let t=new DataView(e,0,12);if(this.header={magic:il(new Uint8Array(e.slice(0,4))),version:t.getUint32(4,!0),length:t.getUint32(8,!0)},this.header.magic!==iP)throw Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw Error("THREE.GLTFLoader: Legacy binary file detected.");let r=this.header.length-12,n=new DataView(e,12),i=0;for(;i<r;){let t=n.getUint32(i,!0);i+=4;let r=n.getUint32(i,!0);if(i+=4,r===iL.JSON){let r=new Uint8Array(e,12+i,t);this.content=il(r)}else if(r===iL.BIN){let r=12+i;this.body=e.slice(r,r+t)}i+=t}if(null===this.content)throw Error("THREE.GLTFLoader: JSON content not found.")}}class iG{decodePrimitive(e,t){let r=this.json,n=this.dracoLoader,i=e.extensions[this.name].bufferView,a=e.extensions[this.name].attributes,s={},o={},l={};for(let e in a)s[iW[e]||e.toLowerCase()]=a[e];for(let t in e.attributes){let n=iW[t]||t.toLowerCase();if(void 0!==a[t]){let i=r.accessors[e.attributes[t]],a=iK[i.componentType];l[n]=a.name,o[n]=!0===i.normalized}}return t.getDependency("bufferView",i).then(function(e){return new Promise(function(t,r){n.decodeDracoFile(e,function(e){for(let t in e.attributes){let r=e.attributes[t],n=o[t];void 0!==n&&(r.normalized=n)}t(e)},s,l,ic,r)})})}constructor(e,t){if(!t)throw Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=ip.KHR_DRACO_MESH_COMPRESSION,this.json=e,this.dracoLoader=t,this.dracoLoader.preload()}}class iO{extendTexture(e,t){return(void 0===t.texCoord||t.texCoord===e.channel)&&void 0===t.offset&&void 0===t.rotation&&void 0===t.scale||(e=e.clone(),void 0!==t.texCoord&&(e.channel=t.texCoord),void 0!==t.offset&&e.offset.fromArray(t.offset),void 0!==t.rotation&&(e.rotation=t.rotation),void 0!==t.scale&&e.repeat.fromArray(t.scale),e.needsUpdate=!0),e}constructor(){this.name=ip.KHR_TEXTURE_TRANSFORM}}class iH{constructor(){this.name=ip.KHR_MESH_QUANTIZATION}}class iN extends ia.Interpolant{copySampleValue_(e){let t=this.resultBuffer,r=this.sampleValues,n=this.valueSize,i=e*n*3+n;for(let e=0;e!==n;e++)t[e]=r[i+e];return t}interpolate_(e,t,r,n){let i=this.resultBuffer,a=this.sampleValues,s=this.valueSize,o=2*s,l=3*s,u=n-t,c=(r-t)/u,d=c*c,f=d*c,h=e*l,p=h-l,m=-2*f+3*d,g=f-d,A=1-m,y=g-d+c;for(let e=0;e!==s;e++){let t=a[p+e+s],r=a[p+e+o]*u,n=a[h+e+s],l=a[h+e]*u;i[e]=A*t+y*r+m*n+g*l}return i}constructor(e,t,r,n){super(e,t,r,n)}}let ik=new ia.Quaternion;class iz extends iN{interpolate_(e,t,r,n){let i=super.interpolate_(e,t,r,n);return ik.fromArray(i).normalize().toArray(i),i}}let ij={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},iK={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},iJ={9728:ia.NearestFilter,9729:ia.LinearFilter,9984:ia.NearestMipmapNearestFilter,9985:ia.LinearMipmapNearestFilter,9986:ia.NearestMipmapLinearFilter,9987:ia.LinearMipmapLinearFilter},iV={33071:ia.ClampToEdgeWrapping,33648:ia.MirroredRepeatWrapping,10497:ia.RepeatWrapping},iQ={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},iW={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",...io>=152?{TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3"}:{TEXCOORD_0:"uv",TEXCOORD_1:"uv2"},COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},iX={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},iZ={CUBICSPLINE:void 0,LINEAR:ia.InterpolateLinear,STEP:ia.InterpolateDiscrete},iY={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function i_(e,t,r){for(let n in r.extensions)void 0===e[n]&&(t.userData.gltfExtensions=t.userData.gltfExtensions||{},t.userData.gltfExtensions[n]=r.extensions[n])}function iq(e,t){void 0!==t.extras&&("object"==typeof t.extras?Object.assign(e.userData,t.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+t.extras))}function i$(e){let t="",r=Object.keys(e).sort();for(let n=0,i=r.length;n<i;n++)t+=r[n]+":"+e[r[n]]+";";return t}function i0(e){switch(e){case Int8Array:return 1/127;case Uint8Array:return 1/255;case Int16Array:return 1/32767;case Uint16Array:return 1/65535;default:throw Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}let i1=new ia.Matrix4;class i2{setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let r=this,n=this.json,i=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(e){return e._markDefs&&e._markDefs()}),Promise.all(this._invokeAll(function(e){return e.beforeRoot&&e.beforeRoot()})).then(function(){return Promise.all([r.getDependencies("scene"),r.getDependencies("animation"),r.getDependencies("camera")])}).then(function(t){let a={scene:t[0][n.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:n.asset,parser:r,userData:{}};return i_(i,a,n),iq(a,n),Promise.all(r._invokeAll(function(e){return e.afterRoot&&e.afterRoot(a)})).then(function(){for(let e of a.scenes)e.updateMatrixWorld();e(a)})}).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],r=this.json.meshes||[];for(let r=0,n=t.length;r<n;r++){let n=t[r].joints;for(let t=0,r=n.length;t<r;t++)e[n[t]].isBone=!0}for(let t=0,n=e.length;t<n;t++){let n=e[t];void 0!==n.mesh&&(this._addNodeRef(this.meshCache,n.mesh),void 0!==n.skin&&(r[n.mesh].isSkinnedMesh=!0)),void 0!==n.camera&&this._addNodeRef(this.cameraCache,n.camera)}}_addNodeRef(e,t){void 0!==t&&(void 0===e.refs[t]&&(e.refs[t]=e.uses[t]=0),e.refs[t]++)}_getNodeRef(e,t,r){if(e.refs[t]<=1)return r;let n=r.clone(),i=(e,t)=>{let r=this.associations.get(e);for(let[n,a]of(null!=r&&this.associations.set(t,r),e.children.entries()))i(a,t.children[n])};return i(r,n),n.name+="_instance_"+e.uses[t]++,n}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let r=0;r<t.length;r++){let n=e(t[r]);if(n)return n}return null}_invokeAll(e){let t=Object.values(this.plugins);t.unshift(this);let r=[];for(let n=0;n<t.length;n++){let i=e(t[n]);i&&r.push(i)}return r}getDependency(e,t){let r=e+":"+t,n=this.cache.get(r);if(!n){switch(e){case"scene":n=this.loadScene(t);break;case"node":n=this._invokeOne(function(e){return e.loadNode&&e.loadNode(t)});break;case"mesh":n=this._invokeOne(function(e){return e.loadMesh&&e.loadMesh(t)});break;case"accessor":n=this.loadAccessor(t);break;case"bufferView":n=this._invokeOne(function(e){return e.loadBufferView&&e.loadBufferView(t)});break;case"buffer":n=this.loadBuffer(t);break;case"material":n=this._invokeOne(function(e){return e.loadMaterial&&e.loadMaterial(t)});break;case"texture":n=this._invokeOne(function(e){return e.loadTexture&&e.loadTexture(t)});break;case"skin":n=this.loadSkin(t);break;case"animation":n=this._invokeOne(function(e){return e.loadAnimation&&e.loadAnimation(t)});break;case"camera":n=this.loadCamera(t);break;default:if(!(n=this._invokeOne(function(r){return r!=this&&r.getDependency&&r.getDependency(e,t)})))throw Error("Unknown type: "+e)}this.cache.add(r,n)}return n}getDependencies(e){let t=this.cache.get(e);if(!t){let r=this;t=Promise.all((this.json[e+("mesh"===e?"es":"s")]||[]).map(function(t,n){return r.getDependency(e,n)})),this.cache.add(e,t)}return t}loadBuffer(e){let t=this.json.buffers[e],r=this.fileLoader;if(t.type&&"arraybuffer"!==t.type)throw Error("THREE.GLTFLoader: "+t.type+" buffer type is not supported.");if(void 0===t.uri&&0===e)return Promise.resolve(this.extensions[ip.KHR_BINARY_GLTF].body);let n=this.options;return new Promise(function(e,i){r.load(ia.LoaderUtils.resolveURL(t.uri,n.path),e,void 0,function(){i(Error('THREE.GLTFLoader: Failed to load buffer "'+t.uri+'".'))})})}loadBufferView(e){let t=this.json.bufferViews[e];return this.getDependency("buffer",t.buffer).then(function(e){let r=t.byteLength||0,n=t.byteOffset||0;return e.slice(n,n+r)})}loadAccessor(e){let t=this,r=this.json,n=this.json.accessors[e];if(void 0===n.bufferView&&void 0===n.sparse){let e=iQ[n.type],t=iK[n.componentType],r=!0===n.normalized,i=new t(n.count*e);return Promise.resolve(new ia.BufferAttribute(i,e,r))}let i=[];return void 0!==n.bufferView?i.push(this.getDependency("bufferView",n.bufferView)):i.push(null),void 0!==n.sparse&&(i.push(this.getDependency("bufferView",n.sparse.indices.bufferView)),i.push(this.getDependency("bufferView",n.sparse.values.bufferView))),Promise.all(i).then(function(e){let i,a,s=e[0],o=iQ[n.type],l=iK[n.componentType],u=l.BYTES_PER_ELEMENT,c=u*o,d=n.byteOffset||0,f=void 0!==n.bufferView?r.bufferViews[n.bufferView].byteStride:void 0,h=!0===n.normalized;if(f&&f!==c){let e=Math.floor(d/f),r="InterleavedBuffer:"+n.bufferView+":"+n.componentType+":"+e+":"+n.count,c=t.cache.get(r);c||(i=new l(s,e*f,n.count*f/u),c=new ia.InterleavedBuffer(i,f/u),t.cache.add(r,c)),a=new ia.InterleavedBufferAttribute(c,o,d%f/u,h)}else i=null===s?new l(n.count*o):new l(s,d,n.count*o),a=new ia.BufferAttribute(i,o,h);if(void 0!==n.sparse){let t=iQ.SCALAR,r=iK[n.sparse.indices.componentType],i=n.sparse.indices.byteOffset||0,u=n.sparse.values.byteOffset||0,c=new r(e[1],i,n.sparse.count*t),d=new l(e[2],u,n.sparse.count*o);null!==s&&(a=new ia.BufferAttribute(a.array.slice(),a.itemSize,a.normalized));for(let e=0,t=c.length;e<t;e++){let t=c[e];if(a.setX(t,d[e*o]),o>=2&&a.setY(t,d[e*o+1]),o>=3&&a.setZ(t,d[e*o+2]),o>=4&&a.setW(t,d[e*o+3]),o>=5)throw Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return a})}loadTexture(e){let t=this.json,r=this.options,n=t.textures[e].source,i=t.images[n],a=this.textureLoader;if(i.uri){let e=r.manager.getHandler(i.uri);null!==e&&(a=e)}return this.loadTextureImage(e,n,a)}loadTextureImage(e,t,r){let n=this,i=this.json,a=i.textures[e],s=i.images[t],o=(s.uri||s.bufferView)+":"+a.sampler;if(this.textureCache[o])return this.textureCache[o];let l=this.loadImageSource(t,r).then(function(t){t.flipY=!1,t.name=a.name||s.name||"",""===t.name&&"string"==typeof s.uri&&!1===s.uri.startsWith("data:image/")&&(t.name=s.uri);let r=(i.samplers||{})[a.sampler]||{};return t.magFilter=iJ[r.magFilter]||ia.LinearFilter,t.minFilter=iJ[r.minFilter]||ia.LinearMipmapLinearFilter,t.wrapS=iV[r.wrapS]||ia.RepeatWrapping,t.wrapT=iV[r.wrapT]||ia.RepeatWrapping,n.associations.set(t,{textures:e}),t}).catch(function(){return null});return this.textureCache[o]=l,l}loadImageSource(e,t){let r=this.json,n=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then(e=>e.clone());let i=r.images[e],a=self.URL||self.webkitURL,s=i.uri||"",o=!1;if(void 0!==i.bufferView)s=this.getDependency("bufferView",i.bufferView).then(function(e){o=!0;let t=new Blob([e],{type:i.mimeType});return s=a.createObjectURL(t)});else if(void 0===i.uri)throw Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let l=Promise.resolve(s).then(function(e){return new Promise(function(r,i){let a=r;!0===t.isImageBitmapLoader&&(a=function(e){let t=new ia.Texture(e);t.needsUpdate=!0,r(t)}),t.load(ia.LoaderUtils.resolveURL(e,n.path),a,void 0,i)})}).then(function(e){var t;return!0===o&&a.revokeObjectURL(s),iq(e,i),e.userData.mimeType=i.mimeType||((t=i.uri).search(/\.jpe?g($|\?)/i)>0||0===t.search(/^data\:image\/jpeg/)?"image/jpeg":t.search(/\.webp($|\?)/i)>0||0===t.search(/^data\:image\/webp/)?"image/webp":"image/png"),e}).catch(function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",s),e});return this.sourceCache[e]=l,l}assignTexture(e,t,r,n){let i=this;return this.getDependency("texture",r.index).then(function(a){if(!a)return null;if(void 0!==r.texCoord&&r.texCoord>0&&((a=a.clone()).channel=r.texCoord),i.extensions[ip.KHR_TEXTURE_TRANSFORM]){let e=void 0!==r.extensions?r.extensions[ip.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=i.associations.get(a);a=i.extensions[ip.KHR_TEXTURE_TRANSFORM].extendTexture(a,e),i.associations.set(a,t)}}return void 0!==n&&("number"==typeof n&&(n=3001===n?iu:ic),"colorSpace"in a?a.colorSpace=n:a.encoding=n===iu?3001:3e3),e[t]=a,a})}assignFinalMaterial(e){let t=e.geometry,r=e.material,n=void 0===t.attributes.tangent,i=void 0!==t.attributes.color,a=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new ia.PointsMaterial,ia.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,t.sizeAttenuation=!1,this.cache.add(e,t)),r=t}else if(e.isLine){let e="LineBasicMaterial:"+r.uuid,t=this.cache.get(e);t||(t=new ia.LineBasicMaterial,ia.Material.prototype.copy.call(t,r),t.color.copy(r.color),t.map=r.map,this.cache.add(e,t)),r=t}if(n||i||a){let e="ClonedMaterial:"+r.uuid+":";n&&(e+="derivative-tangents:"),i&&(e+="vertex-colors:"),a&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=r.clone(),i&&(t.vertexColors=!0),a&&(t.flatShading=!0),n&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(r))),r=t}e.material=r}getMaterialType(){return ia.MeshStandardMaterial}loadMaterial(e){let t,r=this,n=this.json,i=this.extensions,a=n.materials[e],s={},o=a.extensions||{},l=[];if(o[ip.KHR_MATERIALS_UNLIT]){let e=i[ip.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),l.push(e.extendParams(s,a,r))}else{let n=a.pbrMetallicRoughness||{};if(s.color=new ia.Color(1,1,1),s.opacity=1,Array.isArray(n.baseColorFactor)){let e=n.baseColorFactor;s.color.setRGB(e[0],e[1],e[2],ic),s.opacity=e[3]}void 0!==n.baseColorTexture&&l.push(r.assignTexture(s,"map",n.baseColorTexture,iu)),s.metalness=void 0!==n.metallicFactor?n.metallicFactor:1,s.roughness=void 0!==n.roughnessFactor?n.roughnessFactor:1,void 0!==n.metallicRoughnessTexture&&(l.push(r.assignTexture(s,"metalnessMap",n.metallicRoughnessTexture)),l.push(r.assignTexture(s,"roughnessMap",n.metallicRoughnessTexture))),t=this._invokeOne(function(t){return t.getMaterialType&&t.getMaterialType(e)}),l.push(Promise.all(this._invokeAll(function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,s)})))}!0===a.doubleSided&&(s.side=ia.DoubleSide);let u=a.alphaMode||iY.OPAQUE;if(u===iY.BLEND?(s.transparent=!0,s.depthWrite=!1):(s.transparent=!1,u===iY.MASK&&(s.alphaTest=void 0!==a.alphaCutoff?a.alphaCutoff:.5)),void 0!==a.normalTexture&&t!==ia.MeshBasicMaterial&&(l.push(r.assignTexture(s,"normalMap",a.normalTexture)),s.normalScale=new ia.Vector2(1,1),void 0!==a.normalTexture.scale)){let e=a.normalTexture.scale;s.normalScale.set(e,e)}if(void 0!==a.occlusionTexture&&t!==ia.MeshBasicMaterial&&(l.push(r.assignTexture(s,"aoMap",a.occlusionTexture)),void 0!==a.occlusionTexture.strength&&(s.aoMapIntensity=a.occlusionTexture.strength)),void 0!==a.emissiveFactor&&t!==ia.MeshBasicMaterial){let e=a.emissiveFactor;s.emissive=new ia.Color().setRGB(e[0],e[1],e[2],ic)}return void 0!==a.emissiveTexture&&t!==ia.MeshBasicMaterial&&l.push(r.assignTexture(s,"emissiveMap",a.emissiveTexture,iu)),Promise.all(l).then(function(){let n=new t(s);return a.name&&(n.name=a.name),iq(n,a),r.associations.set(n,{materials:e}),a.extensions&&i_(i,n,a),n})}createUniqueName(e){let t=ia.PropertyBinding.sanitizeNodeName(e||"");return t in this.nodeNamesUsed?t+"_"+ ++this.nodeNamesUsed[t]:(this.nodeNamesUsed[t]=0,t)}loadGeometries(e){let t=this,r=this.extensions,n=this.primitiveCache,i=[];for(let a=0,s=e.length;a<s;a++){let s=e[a],o=function(e){let t,r=e.extensions&&e.extensions[ip.KHR_DRACO_MESH_COMPRESSION];if(t=r?"draco:"+r.bufferView+":"+r.indices+":"+i$(r.attributes):e.indices+":"+i$(e.attributes)+":"+e.mode,void 0!==e.targets)for(let r=0,n=e.targets.length;r<n;r++)t+=":"+i$(e.targets[r]);return t}(s),l=n[o];if(l)i.push(l.promise);else{let e;e=s.extensions&&s.extensions[ip.KHR_DRACO_MESH_COMPRESSION]?function(e){return r[ip.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then(function(r){return i9(r,e,t)})}(s):i9(new ia.BufferGeometry,s,t),n[o]={primitive:s,promise:e},i.push(e)}}return Promise.all(i)}loadMesh(e){let t=this,r=this.json,n=this.extensions,i=r.meshes[e],a=i.primitives,s=[];for(let e=0,t=a.length;e<t;e++){var o;let t=void 0===a[e].material?(void 0===(o=this.cache).DefaultMaterial&&(o.DefaultMaterial=new ia.MeshStandardMaterial({color:0xffffff,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:ia.FrontSide})),o.DefaultMaterial):this.getDependency("material",a[e].material);s.push(t)}return s.push(t.loadGeometries(a)),Promise.all(s).then(function(r){let s=r.slice(0,r.length-1),o=r[r.length-1],l=[];for(let r=0,u=o.length;r<u;r++){let u,c=o[r],d=a[r],f=s[r];if(d.mode===ij.TRIANGLES||d.mode===ij.TRIANGLE_STRIP||d.mode===ij.TRIANGLE_FAN||void 0===d.mode)!0===(u=!0===i.isSkinnedMesh?new ia.SkinnedMesh(c,f):new ia.Mesh(c,f)).isSkinnedMesh&&u.normalizeSkinWeights(),d.mode===ij.TRIANGLE_STRIP?u.geometry=is(u.geometry,ia.TriangleStripDrawMode):d.mode===ij.TRIANGLE_FAN&&(u.geometry=is(u.geometry,ia.TriangleFanDrawMode));else if(d.mode===ij.LINES)u=new ia.LineSegments(c,f);else if(d.mode===ij.LINE_STRIP)u=new ia.Line(c,f);else if(d.mode===ij.LINE_LOOP)u=new ia.LineLoop(c,f);else if(d.mode===ij.POINTS)u=new ia.Points(c,f);else throw Error("THREE.GLTFLoader: Primitive mode unsupported: "+d.mode);Object.keys(u.geometry.morphAttributes).length>0&&function(e,t){if(e.updateMorphTargets(),void 0!==t.weights)for(let r=0,n=t.weights.length;r<n;r++)e.morphTargetInfluences[r]=t.weights[r];if(t.extras&&Array.isArray(t.extras.targetNames)){let r=t.extras.targetNames;if(e.morphTargetInfluences.length===r.length){e.morphTargetDictionary={};for(let t=0,n=r.length;t<n;t++)e.morphTargetDictionary[r[t]]=t}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}(u,i),u.name=t.createUniqueName(i.name||"mesh_"+e),iq(u,i),d.extensions&&i_(n,u,d),t.assignFinalMaterial(u),l.push(u)}for(let r=0,n=l.length;r<n;r++)t.associations.set(l[r],{meshes:e,primitives:r});if(1===l.length)return i.extensions&&i_(n,l[0],i),l[0];let u=new ia.Group;i.extensions&&i_(n,u,i),t.associations.set(u,{meshes:e});for(let e=0,t=l.length;e<t;e++)u.add(l[e]);return u})}loadCamera(e){let t,r=this.json.cameras[e],n=r[r.type];return n?("perspective"===r.type?t=new ia.PerspectiveCamera(ia.MathUtils.radToDeg(n.yfov),n.aspectRatio||1,n.znear||1,n.zfar||2e6):"orthographic"===r.type&&(t=new ia.OrthographicCamera(-n.xmag,n.xmag,n.ymag,-n.ymag,n.znear,n.zfar)),r.name&&(t.name=this.createUniqueName(r.name)),iq(t,r),Promise.resolve(t)):void console.warn("THREE.GLTFLoader: Missing camera parameters.")}loadSkin(e){let t=this.json.skins[e],r=[];for(let e=0,n=t.joints.length;e<n;e++)r.push(this._loadNodeShallow(t.joints[e]));return void 0!==t.inverseBindMatrices?r.push(this.getDependency("accessor",t.inverseBindMatrices)):r.push(null),Promise.all(r).then(function(e){let r=e.pop(),n=[],i=[];for(let a=0,s=e.length;a<s;a++){let s=e[a];if(s){n.push(s);let e=new ia.Matrix4;null!==r&&e.fromArray(r.array,16*a),i.push(e)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',t.joints[a])}return new ia.Skeleton(n,i)})}loadAnimation(e){let t=this.json,r=this,n=t.animations[e],i=n.name?n.name:"animation_"+e,a=[],s=[],o=[],l=[],u=[];for(let e=0,t=n.channels.length;e<t;e++){let t=n.channels[e],r=n.samplers[t.sampler],i=t.target,c=i.node,d=void 0!==n.parameters?n.parameters[r.input]:r.input,f=void 0!==n.parameters?n.parameters[r.output]:r.output;void 0!==i.node&&(a.push(this.getDependency("node",c)),s.push(this.getDependency("accessor",d)),o.push(this.getDependency("accessor",f)),l.push(r),u.push(i))}return Promise.all([Promise.all(a),Promise.all(s),Promise.all(o),Promise.all(l),Promise.all(u)]).then(function(e){let t=e[0],n=e[1],a=e[2],s=e[3],o=e[4],l=[];for(let e=0,i=t.length;e<i;e++){let i=t[e],u=n[e],c=a[e],d=s[e],f=o[e];if(void 0===i)continue;i.updateMatrix&&i.updateMatrix();let h=r._createAnimationTracks(i,u,c,d,f);if(h)for(let e=0;e<h.length;e++)l.push(h[e])}return new ia.AnimationClip(i,void 0,l)})}createNodeMesh(e){let t=this.json,r=this,n=t.nodes[e];return void 0===n.mesh?null:r.getDependency("mesh",n.mesh).then(function(e){let t=r._getNodeRef(r.meshCache,n.mesh,e);return void 0!==n.weights&&t.traverse(function(e){if(e.isMesh)for(let t=0,r=n.weights.length;t<r;t++)e.morphTargetInfluences[t]=n.weights[t]}),t})}loadNode(e){let t=this.json.nodes[e],r=this._loadNodeShallow(e),n=[],i=t.children||[];for(let e=0,t=i.length;e<t;e++)n.push(this.getDependency("node",i[e]));let a=void 0===t.skin?Promise.resolve(null):this.getDependency("skin",t.skin);return Promise.all([r,Promise.all(n),a]).then(function(e){let t=e[0],r=e[1],n=e[2];null!==n&&t.traverse(function(e){e.isSkinnedMesh&&e.bind(n,i1)});for(let e=0,n=r.length;e<n;e++)t.add(r[e]);return t})}_loadNodeShallow(e){let t=this.json,r=this.extensions,n=this;if(void 0!==this.nodeCache[e])return this.nodeCache[e];let i=t.nodes[e],a=i.name?n.createUniqueName(i.name):"",s=[],o=n._invokeOne(function(t){return t.createNodeMesh&&t.createNodeMesh(e)});return o&&s.push(o),void 0!==i.camera&&s.push(n.getDependency("camera",i.camera).then(function(e){return n._getNodeRef(n.cameraCache,i.camera,e)})),n._invokeAll(function(t){return t.createNodeAttachment&&t.createNodeAttachment(e)}).forEach(function(e){s.push(e)}),this.nodeCache[e]=Promise.all(s).then(function(t){let s;if((s=!0===i.isBone?new ia.Bone:t.length>1?new ia.Group:1===t.length?t[0]:new ia.Object3D)!==t[0])for(let e=0,r=t.length;e<r;e++)s.add(t[e]);if(i.name&&(s.userData.name=i.name,s.name=a),iq(s,i),i.extensions&&i_(r,s,i),void 0!==i.matrix){let e=new ia.Matrix4;e.fromArray(i.matrix),s.applyMatrix4(e)}else void 0!==i.translation&&s.position.fromArray(i.translation),void 0!==i.rotation&&s.quaternion.fromArray(i.rotation),void 0!==i.scale&&s.scale.fromArray(i.scale);return n.associations.has(s)||n.associations.set(s,{}),n.associations.get(s).nodes=e,s}),this.nodeCache[e]}loadScene(e){let t=this.extensions,r=this.json.scenes[e],n=this,i=new ia.Group;r.name&&(i.name=n.createUniqueName(r.name)),iq(i,r),r.extensions&&i_(t,i,r);let a=r.nodes||[],s=[];for(let e=0,t=a.length;e<t;e++)s.push(n.getDependency("node",a[e]));return Promise.all(s).then(function(e){for(let t=0,r=e.length;t<r;t++)i.add(e[t]);return n.associations=(e=>{let t=new Map;for(let[e,r]of n.associations)(e instanceof ia.Material||e instanceof ia.Texture)&&t.set(e,r);return e.traverse(e=>{let r=n.associations.get(e);null!=r&&t.set(e,r)}),t})(i),i})}_createAnimationTracks(e,t,r,n,i){let a,s=[],o=e.name?e.name:e.uuid,l=[];switch(iX[i.path]===iX.weights?e.traverse(function(e){e.morphTargetInfluences&&l.push(e.name?e.name:e.uuid)}):l.push(o),iX[i.path]){case iX.weights:a=ia.NumberKeyframeTrack;break;case iX.rotation:a=ia.QuaternionKeyframeTrack;break;case iX.position:case iX.scale:a=ia.VectorKeyframeTrack;break;default:a=1===r.itemSize?ia.NumberKeyframeTrack:ia.VectorKeyframeTrack}let u=void 0!==n.interpolation?iZ[n.interpolation]:ia.InterpolateLinear,c=this._getArrayFromAccessor(r);for(let e=0,r=l.length;e<r;e++){let r=new a(l[e]+"."+iX[i.path],t.array,c,u);"CUBICSPLINE"===n.interpolation&&this._createCubicSplineTrackInterpolant(r),s.push(r)}return s}_getArrayFromAccessor(e){let t=e.array;if(e.normalized){let e=i0(t.constructor),r=new Float32Array(t.length);for(let n=0,i=t.length;n<i;n++)r[n]=t[n]*e;t=r}return t}_createCubicSplineTrackInterpolant(e){e.createInterpolant=function(e){return new(this instanceof ia.QuaternionKeyframeTrack?iz:iN)(this.times,this.values,this.getValueSize()/3,e)},e.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new ih,this.associations=new Map,this.primitiveCache={},this.nodeCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let r=!1,n=!1,i=-1;"undefined"!=typeof navigator&&void 0!==navigator.userAgent&&(r=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),i=(n=navigator.userAgent.indexOf("Firefox")>-1)?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"undefined"==typeof createImageBitmap||r||n&&i<98?this.textureLoader=new ia.TextureLoader(this.options.manager):this.textureLoader=new ia.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new ia.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}}function i9(e,t,r){let n=t.attributes,i=[];for(let t in n){let a=iW[t]||t.toLowerCase();a in e.attributes||i.push(function(t,n){return r.getDependency("accessor",t).then(function(t){e.setAttribute(n,t)})}(n[t],a))}if(void 0!==t.indices&&!e.index){let n=r.getDependency("accessor",t.indices).then(function(t){e.setIndex(t)});i.push(n)}return iq(e,t),!function(e,t,r){let n=t.attributes,i=new ia.Box3;if(void 0===n.POSITION)return;{let e=r.json.accessors[n.POSITION],t=e.min,a=e.max;if(void 0===t||void 0===a)return console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(i.set(new ia.Vector3(t[0],t[1],t[2]),new ia.Vector3(a[0],a[1],a[2])),e.normalized){let t=i0(iK[e.componentType]);i.min.multiplyScalar(t),i.max.multiplyScalar(t)}}let a=t.targets;if(void 0!==a){let e=new ia.Vector3,t=new ia.Vector3;for(let n=0,i=a.length;n<i;n++){let i=a[n];if(void 0!==i.POSITION){let n=r.json.accessors[i.POSITION],a=n.min,s=n.max;if(void 0!==a&&void 0!==s){if(t.setX(Math.max(Math.abs(a[0]),Math.abs(s[0]))),t.setY(Math.max(Math.abs(a[1]),Math.abs(s[1]))),t.setZ(Math.max(Math.abs(a[2]),Math.abs(s[2]))),n.normalized){let e=i0(iK[n.componentType]);t.multiplyScalar(e)}e.max(t)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}i.expandByVector(e)}e.boundingBox=i;let s=new ia.Sphere;i.getCenter(s.center),s.radius=i.min.distanceTo(i.max)/2,e.boundingSphere=s}(e,t,r),Promise.all(i).then(function(){return void 0!==t.targets?function(e,t,r){let n=!1,i=!1,a=!1;for(let e=0,r=t.length;e<r;e++){let r=t[e];if(void 0!==r.POSITION&&(n=!0),void 0!==r.NORMAL&&(i=!0),void 0!==r.COLOR_0&&(a=!0),n&&i&&a)break}if(!n&&!i&&!a)return Promise.resolve(e);let s=[],o=[],l=[];for(let u=0,c=t.length;u<c;u++){let c=t[u];if(n){let t=void 0!==c.POSITION?r.getDependency("accessor",c.POSITION):e.attributes.position;s.push(t)}if(i){let t=void 0!==c.NORMAL?r.getDependency("accessor",c.NORMAL):e.attributes.normal;o.push(t)}if(a){let t=void 0!==c.COLOR_0?r.getDependency("accessor",c.COLOR_0):e.attributes.color;l.push(t)}}return Promise.all([Promise.all(s),Promise.all(o),Promise.all(l)]).then(function(t){let r=t[0],s=t[1],o=t[2];return n&&(e.morphAttributes.position=r),i&&(e.morphAttributes.normal=s),a&&(e.morphAttributes.color=o),e.morphTargetsRelative=!0,e})}(e,t.targets,r):e})}var i3=eO;let i4=new WeakMap;class i8 extends i3.Loader{setDecoderPath(e){return this.decoderPath=e,this}setDecoderConfig(e){return this.decoderConfig=e,this}setWorkerLimit(e){return this.workerLimit=e,this}load(e,t,r,n){let i=new i3.FileLoader(this.manager);i.setPath(this.path),i.setResponseType("arraybuffer"),i.setRequestHeader(this.requestHeader),i.setWithCredentials(this.withCredentials),i.load(e,e=>{let r={attributeIDs:this.defaultAttributeIDs,attributeTypes:this.defaultAttributeTypes,useUniqueIDs:!1};this.decodeGeometry(e,r).then(t).catch(n)},r,n)}decodeDracoFile(e,t,r,n){let i={attributeIDs:r||this.defaultAttributeIDs,attributeTypes:n||this.defaultAttributeTypes,useUniqueIDs:!!r};this.decodeGeometry(e,i).then(t)}decodeGeometry(e,t){let r;for(let e in t.attributeTypes){let r=t.attributeTypes[e];void 0!==r.BYTES_PER_ELEMENT&&(t.attributeTypes[e]=r.name)}let n=JSON.stringify(t);if(i4.has(e)){let t=i4.get(e);if(t.key===n)return t.promise;if(0===e.byteLength)throw Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let i=this.workerNextTaskID++,a=e.byteLength,s=this._getWorker(i,a).then(n=>(r=n,new Promise((n,a)=>{r._callbacks[i]={resolve:n,reject:a},r.postMessage({type:"decode",id:i,taskConfig:t,buffer:e},[e])}))).then(e=>this._createGeometry(e.geometry));return s.catch(()=>!0).then(()=>{r&&i&&this._releaseTask(r,i)}),i4.set(e,{key:n,promise:s}),s}_createGeometry(e){let t=new i3.BufferGeometry;e.index&&t.setIndex(new i3.BufferAttribute(e.index.array,1));for(let r=0;r<e.attributes.length;r++){let n=e.attributes[r],i=n.name,a=n.array,s=n.itemSize;t.setAttribute(i,new i3.BufferAttribute(a,s))}return t}_loadLibrary(e,t){let r=new i3.FileLoader(this.manager);return r.setPath(this.decoderPath),r.setResponseType(t),r.setWithCredentials(this.withCredentials),new Promise((t,n)=>{r.load(e,t,void 0,n)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then(t=>{let r=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let n=i5.toString(),i=["/* draco decoder */",r,"\n/* worker */",n.substring(n.indexOf("{")+1,n.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([i]))}),this.decoderPending}_getWorker(e,t){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){let e=new Worker(this.workerSourceURL);e._callbacks={},e._taskCosts={},e._taskLoad=0,e.postMessage({type:"init",decoderConfig:this.decoderConfig}),e.onmessage=function(t){let r=t.data;switch(r.type){case"decode":e._callbacks[r.id].resolve(r);break;case"error":e._callbacks[r.id].reject(r);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+r.type+'"')}},this.workerPool.push(e)}else this.workerPool.sort(function(e,t){return e._taskLoad>t._taskLoad?-1:1});let r=this.workerPool[this.workerPool.length-1];return r._taskCosts[e]=t,r._taskLoad+=t,r})}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map(e=>e._taskLoad))}dispose(){for(let e=0;e<this.workerPool.length;++e)this.workerPool[e].terminate();return this.workerPool.length=0,this}constructor(e){super(e),this.decoderPath="",this.decoderConfig={},this.decoderBinary=null,this.decoderPending=null,this.workerLimit=4,this.workerPool=[],this.workerNextTaskID=1,this.workerSourceURL="",this.defaultAttributeIDs={position:"POSITION",normal:"NORMAL",color:"COLOR",uv:"TEX_COORD"},this.defaultAttributeTypes={position:"Float32Array",normal:"Float32Array",color:"Float32Array",uv:"Float32Array"}}}function i5(){let e,t;onmessage=function(r){let n=r.data;switch(n.type){case"init":e=n.decoderConfig,t=new Promise(function(t){e.onModuleLoaded=function(e){t({draco:e})},DracoDecoderModule(e)});break;case"decode":let i=n.buffer,a=n.taskConfig;t.then(e=>{let t=e.draco,r=new t.Decoder,s=new t.DecoderBuffer;s.Init(new Int8Array(i),i.byteLength);try{let e=function(e,t,r,n){let i,a,s=n.attributeIDs,o=n.attributeTypes,l=t.GetEncodedGeometryType(r);if(l===e.TRIANGULAR_MESH)i=new e.Mesh,a=t.DecodeBufferToMesh(r,i);else if(l===e.POINT_CLOUD)i=new e.PointCloud,a=t.DecodeBufferToPointCloud(r,i);else throw Error("THREE.DRACOLoader: Unexpected geometry type.");if(!a.ok()||0===i.ptr)throw Error("THREE.DRACOLoader: Decoding failed: "+a.error_msg());let u={index:null,attributes:[]};for(let r in s){let a,l,c=self[o[r]];if(n.useUniqueIDs)l=s[r],a=t.GetAttributeByUniqueId(i,l);else{if(-1===(l=t.GetAttributeId(i,e[s[r]])))continue;a=t.GetAttribute(i,l)}u.attributes.push(function(e,t,r,n,i,a){let s=a.num_components(),o=r.num_points()*s,l=o*i.BYTES_PER_ELEMENT,u=function(e,t){switch(t){case Float32Array:return e.DT_FLOAT32;case Int8Array:return e.DT_INT8;case Int16Array:return e.DT_INT16;case Int32Array:return e.DT_INT32;case Uint8Array:return e.DT_UINT8;case Uint16Array:return e.DT_UINT16;case Uint32Array:return e.DT_UINT32}}(e,i),c=e._malloc(l);t.GetAttributeDataArrayForAllPoints(r,a,u,l,c);let d=new i(e.HEAPF32.buffer,c,o).slice();return e._free(c),{name:n,array:d,itemSize:s}}(e,t,i,r,c,a))}return l===e.TRIANGULAR_MESH&&(u.index=function(e,t,r){let n=3*r.num_faces(),i=4*n,a=e._malloc(i);t.GetTrianglesUInt32Array(r,i,a);let s=new Uint32Array(e.HEAPF32.buffer,a,n).slice();return e._free(a),{array:s,itemSize:1}}(e,t,i)),e.destroy(i),u}(t,r,s,a),i=e.attributes.map(e=>e.array.buffer);e.index&&i.push(e.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:e},i)}catch(e){console.error(e),self.postMessage({type:"error",id:n.id,error:e.message})}finally{t.destroy(s),t.destroy(r)}})}}}let i6={clone:function(e){let t=new Map,r=new Map,n=e.clone();return function e(t,r,n){n(t,r);for(let i=0;i<t.children.length;i++)e(t.children[i],r.children[i],n)}(e,n,function(e,n){t.set(n,e),r.set(e,n)}),n.traverse(function(e){if(!e.isSkinnedMesh)return;let n=t.get(e),i=n.skeleton.bones;e.skeleton=n.skeleton.clone(),e.bindMatrix.copy(n.bindMatrix),e.skeleton.bones=i.map(function(e){return r.get(e)}),e.bind(e.skeleton,e.bindMatrix)}),n}},i7=eP.forwardRef((e,t)=>{let{isChild:r=!1,object:n,children:i,deep:a,castShadow:s,receiveShadow:o,inject:l,keys:u,...c}=e,d={keys:u,deep:a,inject:l,castShadow:s,receiveShadow:o};if(Array.isArray(n=eP.useMemo(()=>{if(!1===r&&!Array.isArray(n)){let e=!1;if(n.traverse(t=>{t.isSkinnedMesh&&(e=!0)}),e)return i6.clone(n)}return n},[n,r])))return eP.createElement("group",(0,ii.default)({},c,{ref:t}),n.map(e=>eP.createElement(i7,(0,ii.default)({key:e.uuid,object:e},d))),i);let{children:f,...h}=function(e,t){let{keys:r=["near","far","color","distance","decay","penumbra","angle","intensity","skeleton","visible","castShadow","receiveShadow","morphTargetDictionary","morphTargetInfluences","name","geometry","material","position","rotation","scale","up","userData","bindMode","bindMatrix","bindMatrixInverse","skeleton"],deep:n,inject:i,castShadow:a,receiveShadow:s}=t,o={};for(let t of r)o[t]=e[t];return n&&(o.geometry&&"materialsOnly"!==n&&(o.geometry=o.geometry.clone()),o.material&&"geometriesOnly"!==n&&(o.material=o.material.clone())),i&&(o="function"==typeof i?{...o,children:i(e)}:eP.isValidElement(i)?{...o,children:i}:{...o,...i}),e instanceof eO.Mesh&&(a&&(o.castShadow=!0),s&&(o.receiveShadow=!0)),o}(n,d),p=n.type[0].toLowerCase()+n.type.slice(1);return eP.createElement(p,(0,ii.default)({},h,c,{ref:t}),n.children.map(e=>"Bone"===e.type?eP.createElement("primitive",(0,ii.default)({key:e.uuid,object:e},d)):eP.createElement(i7,(0,ii.default)({key:e.uuid,object:e},d,{isChild:!0}))),i,f)}),ae=null,at="https://www.gstatic.com/draco/versioned/decoders/1.5.5/";function ar(){let e=!(arguments.length>0)||void 0===arguments[0]||arguments[0],r=!(arguments.length>1)||void 0===arguments[1]||arguments[1],n=arguments.length>2?arguments[2]:void 0;return i=>{n&&n(i),e&&(ae||(ae=new i8),ae.setDecoderPath("string"==typeof e?e:at),i.setDRACOLoader(ae)),r&&i.setMeshoptDecoder((()=>{let e;if(t)return t;let r=new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,3,2,0,0,5,3,1,0,1,12,1,0,10,22,2,12,0,65,0,65,0,65,0,252,10,0,0,11,7,0,65,0,253,15,26,11]),n=new Uint8Array([32,0,65,253,3,1,2,34,4,106,6,5,11,8,7,20,13,33,12,16,128,9,116,64,19,113,127,15,10,21,22,14,255,66,24,54,136,107,18,23,192,26,114,118,132,17,77,101,130,144,27,87,131,44,45,74,156,154,70,167]);if("object"!=typeof WebAssembly)return{supported:!1};let i="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";WebAssembly.validate(r)&&(i="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");let a=WebAssembly.instantiate(function(e){let t=new Uint8Array(e.length);for(let r=0;r<e.length;++r){let n=e.charCodeAt(r);t[r]=n>96?n-71:n>64?n-65:n>47?n+4:n>46?63:62}let r=0;for(let i=0;i<e.length;++i)t[r++]=t[i]<60?n[t[i]]:(t[i]-60)*64+t[++i];return t.buffer.slice(0,r)}(i),{}).then(t=>{(e=t.instance).exports.__wasm_call_ctors()});function s(t,r,n,i,a,s){let o=e.exports.sbrk,l=n+3&-4,u=o(l*i),c=o(a.length),d=new Uint8Array(e.exports.memory.buffer);d.set(a,c);let f=t(u,n,i,c,a.length);if(0===f&&s&&s(u,l,i),r.set(d.subarray(u,u+n*i)),o(u-o(0)),0!==f)throw Error("Malformed buffer data: ".concat(f))}let o={0:"",1:"meshopt_decodeFilterOct",2:"meshopt_decodeFilterQuat",3:"meshopt_decodeFilterExp",NONE:"",OCTAHEDRAL:"meshopt_decodeFilterOct",QUATERNION:"meshopt_decodeFilterQuat",EXPONENTIAL:"meshopt_decodeFilterExp"},l={0:"meshopt_decodeVertexBuffer",1:"meshopt_decodeIndexBuffer",2:"meshopt_decodeIndexSequence",ATTRIBUTES:"meshopt_decodeVertexBuffer",TRIANGLES:"meshopt_decodeIndexBuffer",INDICES:"meshopt_decodeIndexSequence"};return t={ready:a,supported:!0,decodeVertexBuffer(t,r,n,i,a){s(e.exports.meshopt_decodeVertexBuffer,t,r,n,i,e.exports[o[a]])},decodeIndexBuffer(t,r,n,i){s(e.exports.meshopt_decodeIndexBuffer,t,r,n,i)},decodeIndexSequence(t,r,n,i){s(e.exports.meshopt_decodeIndexSequence,t,r,n,i)},decodeGltfBuffer(t,r,n,i,a,u){s(e.exports[l[a]],t,r,n,i,e.exports[o[u]])}}})())}}let an=(e,t,r,n)=>(0,eQ.useLoader)(id,e,ar(t,r,n));an.preload=(e,t,r,n)=>eQ.useLoader.preload(id,e,ar(t,r,n)),an.clear=e=>eQ.useLoader.clear(id,e),an.setDecoderPath=e=>{at=e};var ai=e.i(89887);function aa(e){var t,r;let{materialName:n,material:i,lightMap:a}=e,s=(0,nZ.textureToUrl)(n),o=(0,nq.useTexture)(s,e=>(0,n_.setupColor)(e));return new Set(null!=(r=null==i||null==(t=i.userData)?void 0:t.flag_names)?r:[]).has("SelfIlluminating")?(0,eI.jsx)("meshBasicMaterial",{map:o,side:2,toneMapped:!1}):(0,eI.jsx)("meshLambertMaterial",{map:o,lightMap:null!=a?a:void 0,lightMapIntensity:a?4:void 0,side:2})}function as(e){var t;return e&&null!=(t=e.emissiveMap)?t:null}function ao(e){let{node:t}=e,r=(0,eP.useMemo)(()=>t.material?Array.isArray(t.material)?t.material.map(as):[as(t.material)]:[],[t.material]);return(0,eI.jsx)("mesh",{geometry:t.geometry,castShadow:!0,receiveShadow:!0,children:t.material?(0,eI.jsx)(eP.Suspense,{fallback:(0,eI.jsx)("meshStandardMaterial",{color:"yellow",wireframe:!0}),children:Array.isArray(t.material)?t.material.map((e,t)=>(0,eI.jsx)(aa,{materialName:e.userData.resource_path,material:e,lightMap:r[t]},t)):(0,eI.jsx)(aa,{materialName:t.material.userData.resource_path,material:t.material,lightMap:r[0]})}):null})}let al=(0,eP.memo)(e=>{let{interiorFile:t}=e,{nodes:r}=an((0,nZ.interiorToUrl)(t)),{debugMode:n}=(0,n$.useDebug)();return(0,eI.jsxs)("group",{rotation:[0,-Math.PI/2,0],children:[Object.entries(r).filter(e=>{let[,t]=e;return t.isMesh}).map(e=>{let[t,r]=e;return(0,eI.jsx)(ao,{node:r},t)}),n?(0,eI.jsx)(ai.FloatingLabel,{children:t}):null]})});function au(e){let{color:t,label:r}=e;return(0,eI.jsxs)("mesh",{children:[(0,eI.jsx)("boxGeometry",{args:[10,10,10]}),(0,eI.jsx)("meshStandardMaterial",{color:t,wireframe:!0}),r?(0,eI.jsx)(ai.FloatingLabel,{color:t,children:r}):null]})}function ac(e){let{label:t}=e,{debugMode:r}=(0,n$.useDebug)();return r?(0,eI.jsx)(au,{color:"red",label:t}):null}let ad=(0,eP.memo)(function(e){let{object:t}=e,r=(0,nY.getProperty)(t,"interiorFile"),n=(0,eP.useMemo)(()=>(0,nY.getPosition)(t),[t]),i=(0,eP.useMemo)(()=>(0,nY.getScale)(t),[t]),a=(0,eP.useMemo)(()=>(0,nY.getRotation)(t),[t]);return(0,eI.jsx)("group",{position:n,quaternion:a,scale:i,children:(0,eI.jsx)(ir,{fallback:(0,eI.jsx)(ac,{label:r}),children:(0,eI.jsx)(eP.Suspense,{fallback:(0,eI.jsx)(au,{color:"orange"}),children:(0,eI.jsx)(al,{interiorFile:r})})})})});function af(e,t){let{path:r}=t,[n]=(0,eQ.useLoader)(eO.CubeTextureLoader,[e],e=>e.setPath(r));return n}af.preload=(e,t)=>{let{path:r}=t;return eQ.useLoader.preload(eO.CubeTextureLoader,[e],e=>e.setPath(r))};function ah(e){return e.wrapS=eO.RepeatWrapping,e.wrapT=eO.RepeatWrapping,e.minFilter=eO.LinearFilter,e.magFilter=eO.LinearFilter,e.colorSpace=eO.SRGBColorSpace,e.needsUpdate=!0,e}function ap(e){let{textureUrl:t,radius:r,heightPercent:n,speed:i,windDirection:a,layerIndex:s,debugMode:o,animationEnabled:l}=e,u=(0,eP.useRef)(null),c=(0,eP.useRef)(new eO.Vector2(0,0)),d=(0,nq.useTexture)(t,ah),f=(0,eP.useMemo)(()=>{let e=n-.05;return function(e,t,r,n){let i=new eO.BufferGeometry,a=new Float32Array(75),s=new Float32Array(50),o=[.05,.05,.05,.05,.05,.05,r,r,r,.05,.05,r,t,r,.05,.05,r,r,r,.05,.05,.05,.05,.05,.05],l=2*e/4;for(let t=0;t<5;t++)for(let r=0;r<5;r++){let n=5*t+r,i=-e+r*l,u=e-t*l,c=e*o[n];a[3*n]=i,a[3*n+1]=c,a[3*n+2]=u,s[2*n]=r/4,s[2*n+1]=t/4}!function(e){let t=t=>({x:e[3*t],y:e[3*t+1],z:e[3*t+2]}),r=(t,r,n,i)=>{e[3*t]=r,e[3*t+1]=n,e[3*t+2]=i},n=t(1),i=t(3),a=t(5),s=t(6),o=t(8),l=t(9),u=t(15),c=t(16),d=t(18),f=t(19),h=t(21),p=t(23),m=a.x+(n.x-a.x)*.5,g=a.y+(n.y-a.y)*.5,A=a.z+(n.z-a.z)*.5;r(0,s.x+(m-s.x)*2,s.y+(g-s.y)*2,s.z+(A-s.z)*2),m=l.x+(i.x-l.x)*.5,g=l.y+(i.y-l.y)*.5,A=l.z+(i.z-l.z)*.5,r(4,o.x+(m-o.x)*2,o.y+(g-o.y)*2,o.z+(A-o.z)*2),m=h.x+(u.x-h.x)*.5,g=h.y+(u.y-h.y)*.5,A=h.z+(u.z-h.z)*.5,r(20,c.x+(m-c.x)*2,c.y+(g-c.y)*2,c.z+(A-c.z)*2),m=p.x+(f.x-p.x)*.5,g=p.y+(f.y-p.y)*.5,A=p.z+(f.z-p.z)*.5,r(24,d.x+(m-d.x)*2,d.y+(g-d.y)*2,d.z+(A-d.z)*2)}(a);let u=function(e,t){let r=new Float32Array(25);for(let n=0;n<25;n++){let i=e[3*n],a=e[3*n+2],s=1.3-Math.sqrt(i*i+a*a)/t;s<.4?s=0:s>.8&&(s=1),r[n]=s}return r}(a,e),c=[];for(let e=0;e<4;e++)for(let t=0;t<4;t++){let r=5*e+t,n=r+1,i=r+5,a=i+1;c.push(r,i,a),c.push(r,a,n)}return i.setIndex(c),i.setAttribute("position",new eO.Float32BufferAttribute(a,3)),i.setAttribute("uv",new eO.Float32BufferAttribute(s,2)),i.setAttribute("alpha",new eO.Float32BufferAttribute(u,1)),i.computeBoundingSphere(),i}(r,n,e,0)},[r,n]),h=(0,eP.useMemo)(()=>new eO.ShaderMaterial({uniforms:{cloudTexture:{value:d},uvOffset:{value:new eO.Vector2(0,0)},debugMode:{value:+!!o},layerIndex:{value:s}},vertexShader:"\n attribute float alpha;\n\n uniform vec2 uvOffset;\n\n varying vec2 vUv;\n varying float vAlpha;\n\n void main() {\n // Apply UV offset for scrolling\n vUv = uv + uvOffset;\n vAlpha = alpha;\n\n vec4 pos = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n // Set depth to far plane so clouds are always visible and behind other geometry\n gl_Position = pos.xyww;\n }\n",fragmentShader:"\n uniform sampler2D cloudTexture;\n uniform float debugMode;\n uniform int layerIndex;\n\n varying vec2 vUv;\n varying float vAlpha;\n\n void main() {\n vec4 texColor = texture2D(cloudTexture, vUv);\n\n // Debug mode: show layer-colored clouds (red, green, blue for layers 0, 1, 2)\n if (debugMode > 0.5) {\n vec3 debugColor;\n if (layerIndex == 0) {\n debugColor = vec3(1.0, 0.3, 0.3); // Red\n } else if (layerIndex == 1) {\n debugColor = vec3(0.3, 1.0, 0.3); // Green\n } else {\n debugColor = vec3(0.3, 0.3, 1.0); // Blue\n }\n // Use same alpha calculation as normal mode\n gl_FragColor = vec4(debugColor, texColor.a * vAlpha);\n return;\n }\n\n // Tribes 2 uses GL_MODULATE: final = texture × vertex color\n // Vertex color is white with varying alpha, so:\n // Final RGB = Texture RGB × 1.0 = Texture RGB\n // Final Alpha = Texture Alpha × Vertex Alpha\n float finalAlpha = texColor.a * vAlpha;\n\n // Output clouds with texture color and combined alpha\n gl_FragColor = vec4(texColor.rgb, finalAlpha);\n }\n",transparent:!0,depthWrite:!1,side:eO.DoubleSide}),[d,o,s]);return(0,eV.useFrame)((e,t)=>{if(!u.current||!l)return;let r=1e3*t/32;c.current.x+=a.x*i*r,c.current.y+=a.y*i*r,c.current.x=c.current.x-Math.floor(c.current.x),c.current.y=c.current.y-Math.floor(c.current.y),u.current.uniforms.uvOffset.value.copy(c.current)}),(0,eP.useEffect)(()=>()=>{f.dispose(),h.dispose()},[f,h]),(0,eI.jsx)("mesh",{geometry:f,frustumCulled:!1,renderOrder:10,children:(0,eI.jsx)("primitive",{ref:u,object:h,attach:"material"})})}function am(e){var t,r;let{object:n}=e,{debugMode:i}=(0,n$.useDebug)(),{animationEnabled:a}=(0,n$.useSettings)(),{data:s}=nW({queryKey:["detailMapList",r=(0,nY.getProperty)(n,"materialList")],queryFn:()=>(0,nZ.loadDetailMapList)(r),enabled:!!r},nD,void 0),o=.95*(null!=(t=(0,nY.getFloat)(n,"visibleDistance"))?t:500),l=(0,eP.useMemo)(()=>{var e,t,r;return[null!=(e=(0,nY.getFloat)(n,"cloudSpeed1"))?e:1e-4,null!=(t=(0,nY.getFloat)(n,"cloudSpeed2"))?t:2e-4,null!=(r=(0,nY.getFloat)(n,"cloudSpeed3"))?r:3e-4]},[n]),u=(0,eP.useMemo)(()=>{let e=[.35,.25,.2],t=[];for(let i=0;i<3;i++){var r;let a=null!=(r=(0,nY.getFloat)(n,"cloudHeightPer".concat(i)))?r:e[i];t.push(a)}return t},[n]),c=(0,eP.useMemo)(()=>{let e=(0,nY.getProperty)(n,"windVelocity");if(e){let[t,r]=e.split(" ").map(e=>parseFloat(e));if(0!==t||0!==r)return new eO.Vector2(t,r).normalize()}return new eO.Vector2(1,0)},[n]),d=(0,eP.useMemo)(()=>{if(!s)return[];let e=[];for(let n=7;n<s.length;n++){let i=s[n];if(i){var t,r;let a=n-7;e.push({texture:i,height:null!=(t=u[a])?t:0,speed:null!=(r=l[a])?r:1e-4*(a+1)})}}return e},[s,l,u]),f=(0,eP.useRef)(null);return((0,eV.useFrame)(e=>{let{camera:t}=e;f.current&&f.current.position.copy(t.position)}),d&&0!==d.length)?(0,eI.jsx)("group",{ref:f,children:d.map((e,t)=>{let r=(0,nZ.textureToUrl)(e.texture);return(0,eI.jsx)(eP.Suspense,{fallback:null,children:(0,eI.jsx)(ap,{textureUrl:r,radius:o,heightPercent:e.height,speed:e.speed,windDirection:c,layerIndex:t,debugMode:i,animationEnabled:a})},t)})}):null}let av="".concat(nZ.BASE_URL,"/black.png");function ag(e){if(!e)return;let[t,r,n]=e.split(" ").map(e=>parseFloat(e));return[new eO.Color().setRGB(t,r,n),new eO.Color().setRGB(t,r,n).convertSRGBToLinear()]}function aA(e){let{materialList:t,fogColor:r}=e,{data:n}=nW({queryKey:["detailMapList",t],queryFn:()=>(0,nZ.loadDetailMapList)(t)},nD,void 0),i=af((0,eP.useMemo)(()=>n?[(0,nZ.textureToUrl)(n[1]),(0,nZ.textureToUrl)(n[3]),(0,nZ.textureToUrl)(n[4]),(0,nZ.textureToUrl)(n[5]),(0,nZ.textureToUrl)(n[0]),(0,nZ.textureToUrl)(n[2])]:[av,av,av,av,av,av],[n]),{path:""}),a=(0,eP.useRef)(null),s=(0,eP.useMemo)(()=>new eO.ShaderMaterial({uniforms:{skybox:{value:i},fogColor:{value:null!=r?r:new eO.Color(0,0,0)},enableFog:{value:!!r}},vertexShader:"\n varying vec3 vDirection;\n\n void main() {\n vDirection = position;\n vec4 pos = projectionMatrix * mat4(mat3(modelViewMatrix)) * vec4(position, 1.0);\n gl_Position = pos.xyww;\n }\n ",fragmentShader:"\n uniform samplerCube skybox;\n uniform vec3 fogColor;\n uniform bool enableFog;\n\n varying vec3 vDirection;\n\n void main() {\n vec3 direction = normalize(vDirection);\n // Swap X and Z, negate X to mirror across X axis\n direction = vec3(direction.z, direction.y, -direction.x);\n vec4 skyColor = textureCube(skybox, direction);\n\n if (enableFog) {\n // Fog increases toward and below horizon\n // direction.y: -1 = straight down, 0 = horizon, 1 = straight up\n // Use smoothstep for gradual transition (matches Three.js linear fog feel)\n float fogFactor = 1.0 - smoothstep(-0.1, 0.5, direction.y);\n vec3 finalColor = mix(skyColor.rgb, fogColor, fogFactor);\n gl_FragColor = vec4(finalColor, 1.0);\n } else {\n gl_FragColor = skyColor;\n }\n }\n ",side:eO.BackSide,depthWrite:!1}),[i,r]);return(0,eP.useEffect)(()=>{a.current&&(a.current.uniforms.skybox.value=i,a.current.uniforms.fogColor.value=null!=r?r:new eO.Color(0,0,0),a.current.uniforms.enableFog.value=!!r)},[i,r]),(0,eI.jsxs)("mesh",{scale:5e3,frustumCulled:!1,children:[(0,eI.jsx)("sphereGeometry",{args:[1,60,40]}),(0,eI.jsx)("primitive",{ref:a,object:s,attach:"material"})]})}let ay=/borg|xorg|porg|dorg|plant|tree|bush|fern|vine|grass|leaf|flower|frond|palm|foliage/i;function ax(e){return ay.test(e)}let aB=(0,eP.createContext)(null);function aC(e){let{children:t,shapeName:r,type:n}=e,i=(0,eP.useMemo)(()=>ax(r),[r]),a=(0,eP.useMemo)(()=>({shapeName:r,type:n,isOrganic:i}),[r,n,i]);return(0,eI.jsx)(aB.Provider,{value:a,children:t})}var aS=e.i(51475);let aE=new Map;function aT(e,t,r,n){let i=r.has("Translucent"),a=r.has("Additive"),s=r.has("SelfIlluminating");if(r.has("NeverEnvMap"),s)return new eO.MeshBasicMaterial({map:t,side:2,transparent:a,alphaTest:.5*!a,blending:a?eO.AdditiveBlending:void 0,fog:!0});if(n||i){let e={map:t,transparent:!1,alphaTest:.5,reflectivity:0};return[new eO.MeshLambertMaterial({...e,side:1,polygonOffset:!0,polygonOffsetFactor:1,polygonOffsetUnits:1}),new eO.MeshLambertMaterial({...e,side:0})]}return new eO.MeshLambertMaterial({map:t,side:2,reflectivity:0})}let ab=(0,eP.memo)(function(e){var t;let{material:r,shapeName:n,geometry:i,backGeometry:a,castShadow:s=!1,receiveShadow:o=!1}=e,l=r.userData.resource_path,u=new Set(null!=(t=r.userData.flag_names)?t:[]),c=function(e){let{animationEnabled:t}=(0,n$.useSettings)(),{data:r}=nW({queryKey:["ifl",e],queryFn:()=>(0,nZ.loadImageFrameList)(e),enabled:!0,suspense:!0,throwOnError:nV,placeholderData:void 0},nD,void 0),n=(0,eP.useMemo)(()=>r.map(t=>(0,nZ.iflTextureToUrl)(t.name,e)),[r,e]),i=(0,nq.useTexture)(n),a=(0,eP.useMemo)(()=>{var t;let n,a=aE.get(e);return a||(a=function(e){let t=e[0].image.width,r=e[0].image.height,n=e.length,i=Math.ceil(Math.sqrt(n)),a=Math.ceil(n/i),s=document.createElement("canvas");s.width=t*i,s.height=r*a;let o=s.getContext("2d");e.forEach((e,n)=>{let a=Math.floor(n/i);o.drawImage(e.image,n%i*t,a*r)});let l=new eO.CanvasTexture(s);return l.colorSpace=eO.SRGBColorSpace,l.generateMipmaps=!1,l.minFilter=eO.NearestFilter,l.magFilter=eO.NearestFilter,l.wrapS=eO.ClampToEdgeWrapping,l.wrapT=eO.ClampToEdgeWrapping,l.repeat.set(1/i,1/a),{texture:l,columns:i,rows:a,frameCount:n,frameStartTicks:[],totalTicks:0,lastFrame:-1}}(i),aE.set(e,a)),n=0,(t=a).frameStartTicks=r.map(e=>{let t=n;return n+=e.frameCount,t}),t.totalTicks=n,a},[e,i,r]);return(0,aS.useTick)(e=>{let r=t?function(e,t){if(0===e.totalTicks)return 0;let r=t%e.totalTicks,{frameStartTicks:n}=e;for(let e=n.length-1;e>=0;e--)if(r>=n[e])return e;return 0}(a,e):0;!function(e,t){if(t===e.lastFrame)return;e.lastFrame=t;let r=t%e.columns,n=e.rows-1-Math.floor(t/e.columns);e.texture.offset.set(r/e.columns,n/e.rows)}(a,r)}),a.texture}("textures/".concat(l,".ifl")),d=n&&ax(n),f=(0,eP.useMemo)(()=>aT(r,c,u,d),[r,c,u,d]);return Array.isArray(f)?(0,eI.jsxs)(eI.Fragment,{children:[(0,eI.jsx)("mesh",{geometry:a||i,castShadow:s,receiveShadow:o,children:(0,eI.jsx)("primitive",{object:f[0],attach:"material"})}),(0,eI.jsx)("mesh",{geometry:i,castShadow:s,receiveShadow:o,children:(0,eI.jsx)("primitive",{object:f[1],attach:"material"})})]}):(0,eI.jsx)("mesh",{geometry:i,castShadow:s,receiveShadow:o,children:(0,eI.jsx)("primitive",{object:f,attach:"material"})})}),aD=(0,eP.memo)(function(e){var t;let{material:r,shapeName:n,geometry:i,backGeometry:a,castShadow:s=!1,receiveShadow:o=!1}=e,l=r.userData.resource_path,u=new Set(null!=(t=r.userData.flag_names)?t:[]),c=(0,eP.useMemo)(()=>(l||console.warn('No resource_path was found on "'.concat(n,'" - rendering fallback.')),l?(0,nZ.textureToUrl)(l):nZ.FALLBACK_TEXTURE_URL),[l,n]),d=n&&ax(n),f=u.has("Translucent"),h=(0,nq.useTexture)(c,e=>d||f?(0,n_.setupAlphaTestedTexture)(e):(0,n_.setupColor)(e)),p=(0,eP.useMemo)(()=>aT(r,h,u,d),[r,h,u,d]);return Array.isArray(p)?(0,eI.jsxs)(eI.Fragment,{children:[(0,eI.jsx)("mesh",{geometry:a||i,castShadow:s,receiveShadow:o,children:(0,eI.jsx)("primitive",{object:p[0],attach:"material"})}),(0,eI.jsx)("mesh",{geometry:i,castShadow:s,receiveShadow:o,children:(0,eI.jsx)("primitive",{object:p[1],attach:"material"})})]}):(0,eI.jsx)("mesh",{geometry:i,castShadow:s,receiveShadow:o,children:(0,eI.jsx)("primitive",{object:p,attach:"material"})})}),aM=(0,eP.memo)(function(e){var t;let{material:r,shapeName:n,geometry:i,backGeometry:a,castShadow:s=!1,receiveShadow:o=!1}=e,l=new Set(null!=(t=r.userData.flag_names)?t:[]).has("IflMaterial"),u=r.userData.resource_path;return l&&u?(0,eI.jsx)(ab,{material:r,shapeName:n,geometry:i,backGeometry:a,castShadow:s,receiveShadow:o}):r.name?(0,eI.jsx)(aD,{material:r,shapeName:n,geometry:i,backGeometry:a,castShadow:s,receiveShadow:o}):null});function aw(e){let{color:t,label:r}=e;return(0,eI.jsxs)("mesh",{children:[(0,eI.jsx)("boxGeometry",{args:[10,10,10]}),(0,eI.jsx)("meshStandardMaterial",{color:t,wireframe:!0}),r?(0,eI.jsx)(ai.FloatingLabel,{color:t,children:r}):null]})}function aF(e){let{color:t,label:r}=e,{debugMode:n}=(0,n$.useDebug)();return n?(0,eI.jsx)(aw,{color:t,label:r}):null}function aR(e){let{shapeName:t,loadingColor:r="yellow",children:n}=e;return t?(0,eI.jsx)(ir,{fallback:(0,eI.jsx)(aF,{color:"red",label:t}),children:(0,eI.jsxs)(eP.Suspense,{fallback:(0,eI.jsx)(aw,{color:r}),children:[(0,eI.jsx)(aI,{}),n]})}):(0,eI.jsx)(aF,{color:"orange"})}let aI=(0,eP.memo)(function(){let{shapeName:e,isOrganic:t}=(0,eP.useContext)(aB),{debugMode:r}=(0,n$.useDebug)(),{nodes:n}=an((0,nZ.shapeToUrl)(e)),i=(0,eP.useMemo)(()=>{let e=Object.values(n).filter(e=>e.skeleton);if(e.length>0){var t=e[0].skeleton;let r=new Set;return t.bones.forEach((e,t)=>{e.name.match(/^Hulk/i)&&r.add(t)}),r}return new Set},[n]),a=(0,eP.useMemo)(()=>Object.entries(n).filter(e=>{let[t,r]=e;return r.material&&"Unassigned"!==r.material.name&&!r.name.match(/^Hulk/i)}).map(e=>{let[r,n]=e,a=function(e,t){if(0===t.size||!e.attributes.skinIndex)return e;let r=e.attributes.skinIndex,n=e.attributes.skinWeight,i=e.index,a=Array(r.count).fill(!1);for(let e=0;e<r.count;e++)for(let i=0;i<4;i++){let s=r.array[4*e+i];if(n.array[4*e+i]>.01&&t.has(s)){a[e]=!0;break}}if(i){let t=[],r=i.array;for(let e=0;e<r.length;e+=3){let n=r[e],i=r[e+1],s=r[e+2];a[n]||a[i]||a[s]||t.push(n,i,s)}let n=e.clone();return n.setIndex(t),n}return e}(n.geometry,i),s=null;if(a){(a=a.clone()).computeVertexNormals();let e=a.attributes.position,r=a.attributes.normal,n=e.array,i=r.array,o=new Map;for(let t=0;t<e.count;t++){let e="".concat(n[3*t].toFixed(4),",").concat(n[3*t+1].toFixed(4),",").concat(n[3*t+2].toFixed(4));o.has(e)||o.set(e,[]),o.get(e).push(t)}for(let e of o.values())if(e.length>1){let t=0,r=0,n=0;for(let a of e)t+=i[3*a],r+=i[3*a+1],n+=i[3*a+2];let a=Math.sqrt(t*t+r*r+n*n);for(let s of(a>0&&(t/=a,r/=a,n/=a),e))i[3*s]=t,i[3*s+1]=r,i[3*s+2]=n}if(r.needsUpdate=!0,t){let e=(s=a.clone()).attributes.normal,t=e.array;for(let e=0;e<t.length;e++)t[e]=-t[e];e.needsUpdate=!0}}return{node:n,geometry:a,backGeometry:s}}),[n,i,t]),s=!t;return(0,eI.jsxs)("group",{rotation:[0,Math.PI/2,0],children:[a.map(t=>{let{node:r,geometry:n,backGeometry:i}=t;return(0,eI.jsx)(eP.Suspense,{fallback:(0,eI.jsx)("mesh",{geometry:n,children:(0,eI.jsx)("meshStandardMaterial",{color:"gray",wireframe:!0})}),children:r.material?Array.isArray(r.material)?r.material.map((t,r)=>(0,eI.jsx)(aM,{material:t,shapeName:e,geometry:n,backGeometry:i,castShadow:s,receiveShadow:s},r)):(0,eI.jsx)(aM,{material:r.material,shapeName:e,geometry:n,backGeometry:i,castShadow:s,receiveShadow:s}):null},r.id)}),r?(0,eI.jsx)(ai.FloatingLabel,{children:e}):null]})});var aP=e.i(6112);let aL={1:"Storm",2:"Inferno"},aU=(0,eP.createContext)(null);function aG(){let e=(0,eP.useContext)(aU);if(!e)throw Error("useCameras must be used within CamerasProvider");return e}function aO(e){let{children:t}=e,{camera:r}=(0,eJ.useThree)(),[n,i]=(0,eP.useState)(0),[a,s]=(0,eP.useState)({}),o=(0,eP.useCallback)(e=>{s(t=>({...t,[e.id]:e}))},[]),l=(0,eP.useCallback)(e=>{s(t=>{let{[e.id]:r,...n}=t;return n})},[]),u=Object.keys(a).length,c=(0,eP.useCallback)(()=>{i(e=>0===u?0:(e+1)%u)},[u]),d=(0,eP.useCallback)(e=>{e>=0&&e<u&&i(e)},[u]);(0,eP.useEffect)(()=>{if(n<Object.keys(a).length){let e=Object.keys(a)[n],t=a[e];r.position.copy(t.position);let i=new eO.Quaternion().setFromAxisAngle(new eO.Vector3(0,1,0),-Math.PI/2);r.quaternion.copy(t.rotation).multiply(i)}},[n,a,r]);let f=(0,eP.useMemo)(()=>({registerCamera:o,unregisterCamera:l,nextCamera:c,setCameraIndex:d,cameraCount:u}),[o,l,c,d,u]);return(0,eI.jsx)(aU.Provider,{value:f,children:t})}let aH=(0,eP.lazy)(()=>e.A(61921).then(e=>({default:e.AudioEmitter}))),aN={AudioEmitter:function(e){let{audioEnabled:t}=(0,n$.useSettings)();return t?(0,eI.jsx)(aH,{...e}):null},Camera:function(e){let{object:t}=e,{registerCamera:r,unregisterCamera:n}=aG(),i=(0,eP.useId)(),a=(0,nY.getProperty)(t,"dataBlock"),s=(0,eP.useMemo)(()=>(0,nY.getPosition)(t),[t]),o=(0,eP.useMemo)(()=>(0,nY.getRotation)(t),[t]);return(0,eP.useEffect)(()=>{if("Observer"===a){let e={id:i,position:new eO.Vector3(...s),rotation:o};return r(e),()=>{n(e)}}},[i,a,r,n,s,o]),null},ForceFieldBare:(0,eP.lazy)(()=>e.A(25147).then(e=>({default:e.ForceFieldBare}))),InteriorInstance:ad,Item:function(e){var t,r;let{object:n}=e,i=n6(),a=null!=(t=(0,nY.getProperty)(n,"dataBlock"))?t:"",s=(0,aP.useDatablock)(a),o=(0,eP.useMemo)(()=>(0,nY.getPosition)(n),[n]),l=(0,eP.useMemo)(()=>(0,nY.getScale)(n),[n]),u=(0,eP.useMemo)(()=>(0,nY.getRotation)(n),[n]),c=(0,nY.getProperty)(s,"shapeFile");c||console.error("<Item> missing shape for datablock: ".concat(a));let d=(null==a?void 0:a.toLowerCase())==="flag",f=null!=(r=null==i?void 0:i.team)?r:null,h=f&&f>0?aL[f]:null,p=d&&h?"".concat(h," Flag"):null;return(0,eI.jsx)(aC,{shapeName:c,type:"Item",children:(0,eI.jsx)("group",{position:o,quaternion:u,scale:l,children:(0,eI.jsx)(aR,{shapeName:c,loadingColor:"pink",children:p?(0,eI.jsx)(ai.FloatingLabel,{opacity:.6,children:p}):null})})})},SimGroup:function(e){var t;let{object:r}=e,n=n6(),i=(0,eP.useMemo)(()=>{let e=null,t=!1;if(n&&n.hasTeams){if(t=!0,null!=n.team)e=n.team;else if(r._name){let t=r._name.match(/^team(\d+)$/i);t&&(e=parseInt(t[1],10))}}else r._name&&(t="teams"===r._name.toLowerCase());return{object:r,parent:n,hasTeams:t,team:e}},[r,n]);return(0,eI.jsx)(n5.Provider,{value:i,children:(null!=(t=r._children)?t:[]).map((e,t)=>ak(e,t))})},Sky:function(e){var t;let{object:r}=e,{fogEnabled:n}=(0,n$.useSettings)(),i=(0,nY.getProperty)(r,"materialList"),a=(0,eP.useMemo)(()=>ag((0,nY.getProperty)(r,"SkySolidColor")),[r]),s=null!=(t=(0,nY.getInt)(r,"useSkyTextures"))?t:1,o=(0,nY.getFloat)(r,"fogDistance"),l=(0,nY.getFloat)(r,"visibleDistance"),u=(0,nY.getFloat)(r,"high_fogDistance"),c=(0,nY.getFloat)(r,"high_visibleDistance"),d=(0,eP.useMemo)(()=>{let e=(0,nY.getProperty)(r,"fogVolume1");if(e){let[t,r,n]=e.split(" ").map(e=>parseFloat(e));if(t>0&&n>r)return{visibleDistance:t,minHeight:r,maxHeight:n}}return null},[r]),f=null!=u&&u>0?u:o,h=null!=c&&c>0?c:l,p=d?Math.min(null!=f?f:1/0,.25*d.visibleDistance):f,m=d?Math.min(null!=h?h:1/0,.9*d.visibleDistance):h,g=(0,eP.useMemo)(()=>ag((0,nY.getProperty)(r,"fogColor")),[r]),A=a||g,y=A?(0,eI.jsx)("color",{attach:"background",args:[A[0]]}):null,x=null!=p&&null!=m&&m>p;return(0,eI.jsxs)(eI.Fragment,{children:[i&&s?(0,eI.jsx)(eP.Suspense,{fallback:y,children:(0,eI.jsx)(aA,{materialList:i,fogColor:n&&x?null==g?void 0:g[1]:void 0})}):y,(0,eI.jsx)(eP.Suspense,{children:(0,eI.jsx)(am,{object:r})}),n&&x&&g?(0,eI.jsx)("fog",{attach:"fog",color:g[1],near:p,far:m}):null]})},StaticShape:function(e){var t;let{object:r}=e,n=null!=(t=(0,nY.getProperty)(r,"dataBlock"))?t:"",i=(0,aP.useDatablock)(n),a=(0,eP.useMemo)(()=>(0,nY.getPosition)(r),[r]),s=(0,eP.useMemo)(()=>(0,nY.getRotation)(r),[r]),o=(0,eP.useMemo)(()=>(0,nY.getScale)(r),[r]),l=(0,nY.getProperty)(i,"shapeFile");return l||console.error("<StaticShape> missing shape for datablock: ".concat(n)),(0,eI.jsx)(aC,{shapeName:l,type:"StaticShape",children:(0,eI.jsx)("group",{position:a,quaternion:s,scale:o,children:(0,eI.jsx)(aR,{shapeName:l})})})},Sun:function(e){let{object:t}=e,r=(0,eP.useMemo)(()=>{var e;let[r,n,i]=(null!=(e=(0,nY.getProperty)(t,"direction"))?e:"0.57735 0.57735 -0.57735").split(" ").map(e=>parseFloat(e)),a=Math.sqrt(r*r+i*i+n*n);return new eO.Vector3(r/a,i/a,n/a)},[t]),n=(0,eP.useMemo)(()=>new eO.Vector3(-(5e3*r.x),-(5e3*r.y),-(5e3*r.z)),[r]),i=(0,eP.useMemo)(()=>{var e;let[r,n,i]=(null!=(e=(0,nY.getProperty)(t,"color"))?e:"0.7 0.7 0.7 1").split(" ").map(e=>parseFloat(e));return new eO.Color(r,n,i)},[t]),a=(0,eP.useMemo)(()=>{var e;let[r,n,i]=(null!=(e=(0,nY.getProperty)(t,"ambient"))?e:"0.5 0.5 0.5 1").split(" ").map(e=>parseFloat(e));return new eO.Color(r,n,i)},[t]);return(0,eI.jsxs)(eI.Fragment,{children:[(0,eI.jsx)("directionalLight",{position:n,color:i,intensity:1.8,castShadow:!0,"shadow-mapSize-width":4096,"shadow-mapSize-height":4096,"shadow-camera-left":-4096,"shadow-camera-right":4096,"shadow-camera-top":4096,"shadow-camera-bottom":-4096,"shadow-camera-near":100,"shadow-camera-far":12e3,"shadow-bias":-.001}),(0,eI.jsx)("ambientLight",{color:a,intensity:1})]})},TerrainBlock:n8,TSStatic:function(e){let{object:t}=e,r=(0,nY.getProperty)(t,"shapeName"),n=(0,eP.useMemo)(()=>(0,nY.getPosition)(t),[t]),i=(0,eP.useMemo)(()=>(0,nY.getRotation)(t),[t]),a=(0,eP.useMemo)(()=>(0,nY.getScale)(t),[t]);return r||console.error("<TSStatic> missing shapeName for object",t),(0,eI.jsx)(aC,{shapeName:r,type:"TSStatic",children:(0,eI.jsx)("group",{position:n,quaternion:i,scale:a,children:(0,eI.jsx)(aR,{shapeName:r})})})},Turret:function(e){var t;let{object:r}=e,n=null!=(t=(0,nY.getProperty)(r,"dataBlock"))?t:"",i=(0,nY.getProperty)(r,"initialBarrel"),a=(0,aP.useDatablock)(n),s=(0,aP.useDatablock)(i),o=(0,eP.useMemo)(()=>(0,nY.getPosition)(r),[r]),l=(0,eP.useMemo)(()=>(0,nY.getRotation)(r),[r]),u=(0,eP.useMemo)(()=>(0,nY.getScale)(r),[r]),c=(0,nY.getProperty)(a,"shapeFile"),d=(0,nY.getProperty)(s,"shapeFile");return c||console.error("<Turret> missing shape for datablock: ".concat(n)),i&&!d&&console.error("<Turret> missing shape for barrel datablock: ".concat(i)),(0,eI.jsx)(aC,{shapeName:c,type:"Turret",children:(0,eI.jsxs)("group",{position:o,quaternion:l,scale:u,children:[(0,eI.jsx)(aR,{shapeName:c}),d?(0,eI.jsx)(aC,{shapeName:d,type:"Turret",children:(0,eI.jsx)("group",{position:[0,1.5,0],children:(0,eI.jsx)(aR,{shapeName:d})})}):null]})})},WaterBlock:(0,eP.lazy)(()=>e.A(18599).then(e=>({default:e.WaterBlock}))),WayPoint:function(e){let{object:t}=e;n6();let r=(0,eP.useMemo)(()=>(0,nY.getPosition)(t),[t]),n=(0,nY.getProperty)(t,"name");return n?(0,eI.jsx)(ai.FloatingLabel,{position:r,opacity:.6,children:n}):null}};function ak(e,t){let r=aN[e._className];return r?(0,eI.jsx)(eP.Suspense,{children:(0,eI.jsx)(r,{object:e})},t):null}var az=e.i(86608),aj=e.i(38433),aK=e.i(33870),aJ=e.i(91996);let aV=async e=>{let t;try{t=(0,nZ.getUrlForPath)(e)}catch(t){return console.warn("Script not in manifest: ".concat(e," (").concat(t,")")),null}try{let r=await fetch(t);if(!r.ok)return console.error("Script fetch failed: ".concat(e," (").concat(r.status,")")),null;return await r.text()}catch(t){return console.error("Script fetch error: ".concat(e)),console.error(t),null}},aQ=(0,aK.createScriptCache)(),aW={findFiles:e=>{let t=(0,nX.default)(e,{nocase:!0});return(0,aJ.getResourceList)().filter(e=>t(e)).map(e=>{let[t,r]=(0,aJ.getSourceAndPath)(e);return r})},isFile:e=>null!=(0,aJ.getResourceMap)()[(0,aJ.getResourceKey)(e)]},aX=(0,eP.memo)(function(e){let{name:t,onLoadingChange:r}=e,{data:n}=nW({queryKey:["parsedMission",t],queryFn:()=>(0,nZ.loadMission)(t)},nD,void 0),{missionGroup:i,runtime:a,progress:s}=function(e,t){let[r,n]=(0,eP.useState)({missionGroup:void 0,runtime:void 0,progress:0});return(0,eP.useEffect)(()=>{if(!t)return;let r=new AbortController,i=t.missionTypes[0],a=(0,aj.createProgressTracker)(),s=()=>{n(e=>({...e,progress:a.progress}))};a.on("update",s);let{runtime:o}=(0,az.runServer)({missionName:e,missionType:i,runtimeOptions:{loadScript:aV,fileSystem:aW,cache:aQ,signal:r.signal,progress:a,ignoreScripts:["scripts/admin.cs","scripts/ai.cs","scripts/aiBotProfiles.cs","scripts/aiBountyGame.cs","scripts/aiChat.cs","scripts/aiCnH.cs","scripts/aiCTF.cs","scripts/aiDeathMatch.cs","scripts/aiDebug.cs","scripts/aiDefaultTasks.cs","scripts/aiDnD.cs","scripts/aiHumanTasks.cs","scripts/aiHunters.cs","scripts/aiInventory.cs","scripts/aiObjectiveBuilder.cs","scripts/aiObjectives.cs","scripts/aiRabbit.cs","scripts/aiSiege.cs","scripts/aiTDM.cs","scripts/aiTeamHunters.cs","scripts/deathMessages.cs","scripts/graphBuild.cs","scripts/navGraph.cs","scripts/serverTasks.cs","scripts/spdialog.cs"]},onMissionLoadDone:()=>{n({missionGroup:o.getObjectByName("MissionGroup"),runtime:o,progress:1})}});return()=>{a.off("update",s),r.abort(),o.destroy()}},[e,t]),r}(t,n),o=!i||!a;return((0,eP.useEffect)(()=>{null==r||r(o,s)},[o,s,r]),o)?null:(0,eI.jsx)(n3.RuntimeProvider,{runtime:a,children:ak(i)})});function aZ(e,t){var r=rV(e,t,"update");if(r.set){if(!r.get)throw TypeError("attempted to read set only private field");return"__destrWrapper"in r||(r.__destrWrapper={set value(v){r.set.call(e,v)},get value(){return r.get.call(e)}}),r.__destrWrapper}if(!r.writable)throw TypeError("attempted to set read only private field");return r}var aY=(em=new WeakMap,class extends rq{build(e,t,r){var n;let i=t.queryKey,a=null!=(n=t.queryHash)?n:r7(i,t),s=this.get(a);return s||(s=new nC({client:e,queryKey:i,queryHash:a,options:e.defaultQueryOptions(t),state:r,defaultOptions:e.getQueryDefaults(i)}),this.add(s)),s}add(e){rQ(this,em).has(e.queryHash)||(rQ(this,em).set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){let t=rQ(this,em).get(e.queryHash);t&&(e.destroy(),t===e&&rQ(this,em).delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){np.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return rQ(this,em).get(e)}getAll(){return[...rQ(this,em).values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>r5(t,e))}findAll(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this.getAll();return Object.keys(e).length>0?t.filter(t=>r5(e,t)):t}notify(e){np.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){np.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){np.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}constructor(e={}){super(),rX(this,em,{writable:!0,value:void 0}),this.config=e,rZ(this,em,new Map)}}),a_=(ev=new WeakMap,eg=new WeakMap,eA=new WeakMap,ey=new WeakMap,ex=new WeakSet,class extends nB{setOptions(e){this.options=e,this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){rQ(this,eg).includes(e)||(rQ(this,eg).push(e),this.clearGcTimeout(),rQ(this,eA).notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){rZ(this,eg,rQ(this,eg).filter(t=>t!==e)),this.scheduleGc(),rQ(this,eA).notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){rQ(this,eg).length||("pending"===this.state.status?this.scheduleGc():rQ(this,eA).remove(this))}continue(){var e,t;return null!=(t=null==(e=rQ(this,ey))?void 0:e.continue())?t:this.execute(this.state.variables)}async execute(e){var t,r,n,i,a,s,o,l,u,c,d,f,h,p,m,g,A,y,x,B,C;let S=()=>{rY(this,ex,aq).call(this,{type:"continue"})},E={client:rQ(this,ev),meta:this.options.meta,mutationKey:this.options.mutationKey};rZ(this,ey,nx({fn:()=>this.options.mutationFn?this.options.mutationFn(e,E):Promise.reject(Error("No mutationFn found")),onFail:(e,t)=>{rY(this,ex,aq).call(this,{type:"failed",failureCount:e,error:t})},onPause:()=>{rY(this,ex,aq).call(this,{type:"pause"})},onContinue:S,retry:null!=(t=this.options.retry)?t:0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode,canRun:()=>rQ(this,eA).canRun(this)}));let T="pending"===this.state.status,b=!rQ(this,ey).canStart();try{if(T)S();else{rY(this,ex,aq).call(this,{type:"pending",variables:e,isPaused:b}),await (null==(c=(d=rQ(this,eA).config).onMutate)?void 0:c.call(d,e,this,E));let t=await (null==(f=(h=this.options).onMutate)?void 0:f.call(h,e,E));t!==this.state.context&&rY(this,ex,aq).call(this,{type:"pending",context:t,variables:e,isPaused:b})}let t=await rQ(this,ey).start();return await (null==(r=(n=rQ(this,eA).config).onSuccess)?void 0:r.call(n,t,e,this.state.context,this,E)),await (null==(i=(a=this.options).onSuccess)?void 0:i.call(a,t,e,this.state.context,E)),await (null==(s=(o=rQ(this,eA).config).onSettled)?void 0:s.call(o,t,null,this.state.variables,this.state.context,this,E)),await (null==(l=(u=this.options).onSettled)?void 0:l.call(u,t,null,e,this.state.context,E)),rY(this,ex,aq).call(this,{type:"success",data:t}),t}catch(t){try{throw await (null==(p=(m=rQ(this,eA).config).onError)?void 0:p.call(m,t,e,this.state.context,this,E)),await (null==(g=(A=this.options).onError)?void 0:g.call(A,t,e,this.state.context,E)),await (null==(y=(x=rQ(this,eA).config).onSettled)?void 0:y.call(x,void 0,t,this.state.variables,this.state.context,this,E)),await (null==(B=(C=this.options).onSettled)?void 0:B.call(C,void 0,t,e,this.state.context,E)),t}finally{rY(this,ex,aq).call(this,{type:"error",error:t})}}finally{rQ(this,eA).runNext(this)}}constructor(e){super(),r_(this,ex),rX(this,ev,{writable:!0,value:void 0}),rX(this,eg,{writable:!0,value:void 0}),rX(this,eA,{writable:!0,value:void 0}),rX(this,ey,{writable:!0,value:void 0}),rZ(this,ev,e.client),this.mutationId=e.mutationId,rZ(this,eA,e.mutationCache),rZ(this,eg,[]),this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0},this.setOptions(e.options),this.scheduleGc()}});function aq(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:e.isPaused,status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),np.batch(()=>{rQ(this,eg).forEach(t=>{t.onMutationUpdate(e)}),rQ(this,eA).notify({mutation:this,type:"updated",action:e})})}var a$=(eB=new WeakMap,eC=new WeakMap,eS=new WeakMap,class extends rq{build(e,t,r){let n=new a_({client:e,mutationCache:this,mutationId:++aZ(this,eS).value,options:e.defaultMutationOptions(t),state:r});return this.add(n),n}add(e){rQ(this,eB).add(e);let t=a0(e);if("string"==typeof t){let r=rQ(this,eC).get(t);r?r.push(e):rQ(this,eC).set(t,[e])}this.notify({type:"added",mutation:e})}remove(e){if(rQ(this,eB).delete(e)){let t=a0(e);if("string"==typeof t){let r=rQ(this,eC).get(t);if(r)if(r.length>1){let t=r.indexOf(e);-1!==t&&r.splice(t,1)}else r[0]===e&&rQ(this,eC).delete(t)}}this.notify({type:"removed",mutation:e})}canRun(e){let t=a0(e);if("string"!=typeof t)return!0;{let r=rQ(this,eC).get(t),n=null==r?void 0:r.find(e=>"pending"===e.state.status);return!n||n===e}}runNext(e){let t=a0(e);if("string"!=typeof t)return Promise.resolve();{var r,n;let i=null==(r=rQ(this,eC).get(t))?void 0:r.find(t=>t!==e&&t.state.isPaused);return null!=(n=null==i?void 0:i.continue())?n:Promise.resolve()}}clear(){np.batch(()=>{rQ(this,eB).forEach(e=>{this.notify({type:"removed",mutation:e})}),rQ(this,eB).clear(),rQ(this,eC).clear()})}getAll(){return Array.from(rQ(this,eB))}find(e){let t={exact:!0,...e};return this.getAll().find(e=>r6(t,e))}findAll(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this.getAll().filter(t=>r6(e,t))}notify(e){np.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){let e=this.getAll().filter(e=>e.state.isPaused);return np.batch(()=>Promise.all(e.map(e=>e.continue().catch(r2))))}constructor(e={}){super(),rX(this,eB,{writable:!0,value:void 0}),rX(this,eC,{writable:!0,value:void 0}),rX(this,eS,{writable:!0,value:void 0}),this.config=e,rZ(this,eB,new Set),rZ(this,eC,new Map),rZ(this,eS,0)}});function a0(e){var t;return null==(t=e.options.scope)?void 0:t.id}function a1(e){return{onFetch:(t,r)=>{var n,i,a,s,o;let l=t.options,u=null==(a=t.fetchOptions)||null==(i=a.meta)||null==(n=i.fetchMore)?void 0:n.direction,c=(null==(s=t.state.data)?void 0:s.pages)||[],d=(null==(o=t.state.data)?void 0:o.pageParams)||[],f={pages:[],pageParams:[]},h=0,p=async()=>{let r=!1,n=nd(t.options,t.fetchOptions),i=async(e,i,a)=>{if(r)return Promise.reject();if(null==i&&e.pages.length)return Promise.resolve(e);let s=(()=>{let e={client:t.client,queryKey:t.queryKey,pageParam:i,direction:a?"backward":"forward",meta:t.options.meta};return Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(t.signal.aborted?r=!0:t.signal.addEventListener("abort",()=>{r=!0}),t.signal)}),e})(),o=await n(s),{maxPages:l}=t.options,u=a?nu:nl;return{pages:u(e.pages,o,l),pageParams:u(e.pageParams,i,l)}};if(u&&c.length){let e="backward"===u,t={pages:c,pageParams:d},r=(e?function(e,t){var r;let{pages:n,pageParams:i}=t;return n.length>0?null==(r=e.getPreviousPageParam)?void 0:r.call(e,n[0],n,i[0],i):void 0}:a2)(l,t);f=await i(t,r,e)}else{let t=null!=e?e:c.length;do{var a;let e=0===h?null!=(a=d[0])?a:l.initialPageParam:a2(l,f);if(h>0&&null==e)break;f=await i(f,e),h++}while(h<t)}return f};t.options.persister?t.fetchFn=()=>{var e,n;return null==(e=(n=t.options).persister)?void 0:e.call(n,p,{client:t.client,queryKey:t.queryKey,meta:t.options.meta,signal:t.signal},r)}:t.fetchFn=p}}}function a2(e,t){let{pages:r,pageParams:n}=t,i=r.length-1;return r.length>0?e.getNextPageParam(r[i],r,n[i],n):void 0}var a9=(eE=new WeakMap,eT=new WeakMap,eb=new WeakMap,eD=new WeakMap,eM=new WeakMap,ew=new WeakMap,eF=new WeakMap,eR=new WeakMap,class{mount(){aZ(this,ew).value++,1===rQ(this,ew)&&(rZ(this,eF,nf.subscribe(async e=>{e&&(await this.resumePausedMutations(),rQ(this,eE).onFocus())})),rZ(this,eR,nm.subscribe(async e=>{e&&(await this.resumePausedMutations(),rQ(this,eE).onOnline())})))}unmount(){var e,t;aZ(this,ew).value--,0===rQ(this,ew)&&(null==(e=rQ(this,eF))||e.call(this),rZ(this,eF,void 0),null==(t=rQ(this,eR))||t.call(this),rZ(this,eR,void 0))}isFetching(e){return rQ(this,eE).findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return rQ(this,eT).findAll({...e,status:"pending"}).length}getQueryData(e){var t;let r=this.defaultQueryOptions({queryKey:e});return null==(t=rQ(this,eE).get(r.queryHash))?void 0:t.state.data}ensureQueryData(e){let t=this.defaultQueryOptions(e),r=rQ(this,eE).build(this,t),n=r.state.data;return void 0===n?this.fetchQuery(e):(e.revalidateIfStale&&r.isStaleByTime(r4(t.staleTime,r))&&this.prefetchQuery(t),Promise.resolve(n))}getQueriesData(e){return rQ(this,eE).findAll(e).map(e=>{let{queryKey:t,state:r}=e;return[t,r.data]})}setQueryData(e,t,r){let n=this.defaultQueryOptions({queryKey:e}),i=rQ(this,eE).get(n.queryHash),a=null==i?void 0:i.state.data,s="function"==typeof t?t(a):t;if(void 0!==s)return rQ(this,eE).build(this,n).setData(s,{...r,manual:!0})}setQueriesData(e,t,r){return np.batch(()=>rQ(this,eE).findAll(e).map(e=>{let{queryKey:n}=e;return[n,this.setQueryData(n,t,r)]}))}getQueryState(e){var t;let r=this.defaultQueryOptions({queryKey:e});return null==(t=rQ(this,eE).get(r.queryHash))?void 0:t.state}removeQueries(e){let t=rQ(this,eE);np.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let r=rQ(this,eE);return np.batch(()=>(r.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries({type:"active",...e},t)))}cancelQueries(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r={revert:!0,...t};return Promise.all(np.batch(()=>rQ(this,eE).findAll(e).map(e=>e.cancel(r)))).then(r2).catch(r2)}invalidateQueries(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return np.batch(()=>{var r,n;return(rQ(this,eE).findAll(e).forEach(e=>{e.invalidate()}),(null==e?void 0:e.refetchType)==="none")?Promise.resolve():this.refetchQueries({...e,type:null!=(n=null!=(r=null==e?void 0:e.refetchType)?r:null==e?void 0:e.type)?n:"active"},t)})}refetchQueries(e){var t;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={...r,cancelRefetch:null==(t=r.cancelRefetch)||t};return Promise.all(np.batch(()=>rQ(this,eE).findAll(e).filter(e=>!e.isDisabled()&&!e.isStatic()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(r2)),"paused"===e.state.fetchStatus?Promise.resolve():t}))).then(r2)}fetchQuery(e){let t=this.defaultQueryOptions(e);void 0===t.retry&&(t.retry=!1);let r=rQ(this,eE).build(this,t);return r.isStaleByTime(r4(t.staleTime,r))?r.fetch(t):Promise.resolve(r.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(r2).catch(r2)}fetchInfiniteQuery(e){return e.behavior=a1(e.pages),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(r2).catch(r2)}ensureInfiniteQueryData(e){return e.behavior=a1(e.pages),this.ensureQueryData(e)}resumePausedMutations(){return nm.isOnline()?rQ(this,eT).resumePausedMutations():Promise.resolve()}getQueryCache(){return rQ(this,eE)}getMutationCache(){return rQ(this,eT)}getDefaultOptions(){return rQ(this,eb)}setDefaultOptions(e){rZ(this,eb,e)}setQueryDefaults(e,t){rQ(this,eD).set(ne(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...rQ(this,eD).values()],r={};return t.forEach(t=>{nt(e,t.queryKey)&&Object.assign(r,t.defaultOptions)}),r}setMutationDefaults(e,t){rQ(this,eM).set(ne(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...rQ(this,eM).values()],r={};return t.forEach(t=>{nt(e,t.mutationKey)&&Object.assign(r,t.defaultOptions)}),r}defaultQueryOptions(e){if(e._defaulted)return e;let t={...rQ(this,eb).queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=r7(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.throwOnError&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),t.queryFn===nc&&(t.enabled=!1),t}defaultMutationOptions(e){return(null==e?void 0:e._defaulted)?e:{...rQ(this,eb).mutations,...(null==e?void 0:e.mutationKey)&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){rQ(this,eE).clear(),rQ(this,eT).clear()}constructor(e={}){rX(this,eE,{writable:!0,value:void 0}),rX(this,eT,{writable:!0,value:void 0}),rX(this,eb,{writable:!0,value:void 0}),rX(this,eD,{writable:!0,value:void 0}),rX(this,eM,{writable:!0,value:void 0}),rX(this,ew,{writable:!0,value:void 0}),rX(this,eF,{writable:!0,value:void 0}),rX(this,eR,{writable:!0,value:void 0}),rZ(this,eE,e.queryCache||new aY),rZ(this,eT,e.mutationCache||new a$),rZ(this,eb,e.defaultOptions||{}),rZ(this,eD,new Map),rZ(this,eM,new Map),rZ(this,ew,0)}}),a3=e.i(8155);let a4=e=>e,a8=e=>{let t=(0,a3.createStore)(e),r=e=>(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a4,r=eP.default.useSyncExternalStore(e.subscribe,eP.default.useCallback(()=>t(e.getState()),[e,t]),eP.default.useCallback(()=>t(e.getInitialState()),[e,t]));return eP.default.useDebugValue(r),r})(t,e);return Object.assign(r,t),r},a5=eP.createContext(null);function a6(e){let{map:t,children:r,onChange:n,domElement:i}=e,a=t.map(e=>e.name+e.keys).join("-"),s=eP.useMemo(()=>{let e,r;return e=()=>t.reduce((e,t)=>({...e,[t.name]:!1}),{}),(r=(t,r,n)=>{let i=n.subscribe;return n.subscribe=(e,t,r)=>{let a=e;if(t){let i=(null==r?void 0:r.equalityFn)||Object.is,s=e(n.getState());a=r=>{let n=e(r);if(!i(s,n)){let e=s;t(s=n,e)}},(null==r?void 0:r.fireImmediately)&&t(s,s)}return i(a)},e(t,r,n)})?a8(r):a8},[a]),o=eP.useMemo(()=>[s.subscribe,s.getState,s],[a]),l=s.setState;return eP.useEffect(()=>{let e=t.map(e=>{let{name:t,keys:r,up:i}=e;return{keys:r,up:i,fn:e=>{l({[t]:e}),n&&n(t,e,o[1]())}}}).reduce((e,t)=>{let{keys:r,fn:n,up:i=!0}=t;return r.forEach(t=>e[t]={fn:n,pressed:!1,up:i}),e},{}),r=t=>{let{key:r,code:n}=t,i=e[r]||e[n];if(!i)return;let{fn:a,pressed:s,up:o}=i;i.pressed=!0,(o||!s)&&a(!0)},a=t=>{let{key:r,code:n}=t,i=e[r]||e[n];if(!i)return;let{fn:a,up:s}=i;i.pressed=!1,s&&a(!1)},s=i||window;return s.addEventListener("keydown",r,{passive:!0}),s.addEventListener("keyup",a,{passive:!0}),()=>{s.removeEventListener("keydown",r),s.removeEventListener("keyup",a)}},[i,a]),eP.createElement(a5.Provider,{value:o,children:r})}var a7=Object.defineProperty;class se{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let r=this._listeners;void 0===r[e]&&(r[e]=[]),-1===r[e].indexOf(t)&&r[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let r=this._listeners;return void 0!==r[e]&&-1!==r[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let r=this._listeners[e];if(void 0!==r){let e=r.indexOf(t);-1!==e&&r.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let r=t.slice(0);for(let t=0,n=r.length;t<n;t++)r[t].call(this,e);e.target=null}}constructor(){((e,t,r)=>((e,t,r)=>t in e?a7(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r)(e,"symbol"!=typeof t?t+"":t,r))(this,"_listeners")}}var st=Object.defineProperty,sr=(e,t,r)=>(((e,t,r)=>t in e?st(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r)(e,"symbol"!=typeof t?t+"":t,r),r);let sn=new eO.Euler(0,0,0,"YXZ"),si=new eO.Vector3,sa={type:"change"},ss={type:"lock"},so={type:"unlock"},sl=Math.PI/2;class su extends se{constructor(e,t){super(),sr(this,"camera"),sr(this,"domElement"),sr(this,"isLocked"),sr(this,"minPolarAngle"),sr(this,"maxPolarAngle"),sr(this,"pointerSpeed"),sr(this,"onMouseMove",e=>{this.domElement&&!1!==this.isLocked&&(sn.setFromQuaternion(this.camera.quaternion),sn.y-=.002*e.movementX*this.pointerSpeed,sn.x-=.002*e.movementY*this.pointerSpeed,sn.x=Math.max(sl-this.maxPolarAngle,Math.min(sl-this.minPolarAngle,sn.x)),this.camera.quaternion.setFromEuler(sn),this.dispatchEvent(sa))}),sr(this,"onPointerlockChange",()=>{this.domElement&&(this.domElement.ownerDocument.pointerLockElement===this.domElement?(this.dispatchEvent(ss),this.isLocked=!0):(this.dispatchEvent(so),this.isLocked=!1))}),sr(this,"onPointerlockError",()=>{console.error("THREE.PointerLockControls: Unable to use Pointer Lock API")}),sr(this,"connect",e=>{this.domElement=e||this.domElement,this.domElement&&(this.domElement.ownerDocument.addEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.addEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.addEventListener("pointerlockerror",this.onPointerlockError))}),sr(this,"disconnect",()=>{this.domElement&&(this.domElement.ownerDocument.removeEventListener("mousemove",this.onMouseMove),this.domElement.ownerDocument.removeEventListener("pointerlockchange",this.onPointerlockChange),this.domElement.ownerDocument.removeEventListener("pointerlockerror",this.onPointerlockError))}),sr(this,"dispose",()=>{this.disconnect()}),sr(this,"getObject",()=>this.camera),sr(this,"direction",new eO.Vector3(0,0,-1)),sr(this,"getDirection",e=>e.copy(this.direction).applyQuaternion(this.camera.quaternion)),sr(this,"moveForward",e=>{si.setFromMatrixColumn(this.camera.matrix,0),si.crossVectors(this.camera.up,si),this.camera.position.addScaledVector(si,e)}),sr(this,"moveRight",e=>{si.setFromMatrixColumn(this.camera.matrix,0),this.camera.position.addScaledVector(si,e)}),sr(this,"lock",()=>{this.domElement&&this.domElement.requestPointerLock()}),sr(this,"unlock",()=>{this.domElement&&this.domElement.ownerDocument.exitPointerLock()}),this.camera=e,this.domElement=t,this.isLocked=!1,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.pointerSpeed=1,t&&this.connect(t)}}var sc=function(e){return e.forward="forward",e.backward="backward",e.left="left",e.right="right",e.up="up",e.down="down",e.camera1="camera1",e.camera2="camera2",e.camera3="camera3",e.camera4="camera4",e.camera5="camera5",e.camera6="camera6",e.camera7="camera7",e.camera8="camera8",e.camera9="camera9",e}(sc||{});function sd(){let{speedMultiplier:e,setSpeedMultiplier:t}=(0,n$.useControls)(),[r,n]=function(e){let[t,r,n]=eP.useContext(a5);return[t,r]}(),{camera:i,gl:a}=(0,eJ.useThree)(),{nextCamera:s,setCameraIndex:o,cameraCount:l}=aG(),u=(0,eP.useRef)(null),c=(0,eP.useRef)(new eO.Vector3),d=(0,eP.useRef)(new eO.Vector3),f=(0,eP.useRef)(new eO.Vector3);return(0,eP.useEffect)(()=>{let e=new su(i,a.domElement);u.current=e;let t=t=>{e.isLocked?s():t.target===a.domElement&&e.lock()};return document.addEventListener("click",t),()=>{document.removeEventListener("click",t),e.dispose()}},[i,a,s]),(0,eP.useEffect)(()=>{let e=["camera1","camera2","camera3","camera4","camera5","camera6","camera7","camera8","camera9"];return r(t=>{for(let r=0;r<e.length;r++)if(t[e[r]]&&r<l){o(r);break}})},[r,o,l]),(0,eP.useEffect)(()=>{let e=e=>{e.preventDefault();let r=e.deltaY>0?-1:1,n=Math.max(.05,Math.min(.5,Math.abs(.01*e.deltaY)))*r;t(e=>Math.max(.1,Math.min(5,Math.round((e+n)*20)/20)))},r=a.domElement;return r.addEventListener("wheel",e,{passive:!1}),()=>{r.removeEventListener("wheel",e)}},[a]),(0,eV.useFrame)((t,r)=>{let{forward:a,backward:s,left:o,right:l,up:u,down:h}=n();(a||s||o||l||u||h)&&(i.getWorldDirection(c.current),c.current.normalize(),d.current.crossVectors(i.up,c.current).normalize(),f.current.set(0,0,0),a&&f.current.add(c.current),s&&f.current.sub(c.current),o&&f.current.add(d.current),l&&f.current.sub(d.current),u&&(f.current.y+=1),h&&(f.current.y-=1),f.current.lengthSq()>0&&(f.current.normalize().multiplyScalar(80*e*r),i.position.add(f.current)))}),null}let sf=[{name:"forward",keys:["KeyW"]},{name:"backward",keys:["KeyS"]},{name:"left",keys:["KeyA"]},{name:"right",keys:["KeyD"]},{name:"up",keys:["Space"]},{name:"down",keys:["ShiftLeft","ShiftRight"]},{name:"camera1",keys:["Digit1"]},{name:"camera2",keys:["Digit2"]},{name:"camera3",keys:["Digit3"]},{name:"camera4",keys:["Digit4"]},{name:"camera5",keys:["Digit5"]},{name:"camera6",keys:["Digit6"]},{name:"camera7",keys:["Digit7"]},{name:"camera8",keys:["Digit8"]},{name:"camera9",keys:["Digit9"]}];function sh(){return(0,eP.useEffect)(()=>{let e=e=>{(e.metaKey||e.ctrlKey)&&"k"===e.key||e.metaKey&&e.stopImmediatePropagation()};return window.addEventListener("keydown",e,{capture:!0}),window.addEventListener("keyup",e,{capture:!0}),()=>{window.removeEventListener("keydown",e,{capture:!0}),window.removeEventListener("keyup",e,{capture:!0})}},[]),(0,eI.jsx)(a6,{map:sf,children:(0,eI.jsx)(sd,{})})}var sp=function(){var e;return"undefined"!=typeof window&&!!(null==(e=window.document)?void 0:e.createElement)}();function sm(e){return e?"self"in e?e.document:e.ownerDocument||document:document}function sv(e){return e?"self"in e?e.self:sm(e).defaultView||window:self}function sg(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],{activeElement:r}=sm(e);if(!(null==r?void 0:r.nodeName))return null;if(sy(r)&&r.contentDocument)return sg(r.contentDocument.body,t);if(t){let e=r.getAttribute("aria-activedescendant");if(e){let t=sm(r).getElementById(e);if(t)return t}}return r}function sA(e,t){return e===t||e.contains(t)}function sy(e){return"IFRAME"===e.tagName}function sx(e){let t=e.tagName.toLowerCase();return"button"===t||"input"===t&&!!e.type&&-1!==sB.indexOf(e.type)}var sB=["button","color","file","image","reset","submit"];function sC(e){return"function"==typeof e.checkVisibility?e.checkVisibility():e.offsetWidth>0||e.offsetHeight>0||e.getClientRects().length>0}function sS(e){try{let t=e instanceof HTMLInputElement&&null!==e.selectionStart,r="TEXTAREA"===e.tagName;return t||r||!1}catch(e){return!1}}function sE(e){return e.isContentEditable||sS(e)}function sT(e){let t=0,r=0;if(sS(e))t=e.selectionStart||0,r=e.selectionEnd||0;else if(e.isContentEditable){let n=sm(e).getSelection();if((null==n?void 0:n.rangeCount)&&n.anchorNode&&sA(e,n.anchorNode)&&n.focusNode&&sA(e,n.focusNode)){let i=n.getRangeAt(0),a=i.cloneRange();a.selectNodeContents(e),a.setEnd(i.startContainer,i.startOffset),t=a.toString().length,a.setEnd(i.endContainer,i.endOffset),r=a.toString().length}}return{start:t,end:r}}function sb(e,t){let r=null==e?void 0:e.getAttribute("role");return r&&-1!==["dialog","menu","listbox","tree","grid"].indexOf(r)?r:t}function sD(e){if(!e)return null;let t=e=>"auto"===e||"scroll"===e;if(e.clientHeight&&e.scrollHeight>e.clientHeight){let{overflowY:r}=getComputedStyle(e);if(t(r))return e}else if(e.clientWidth&&e.scrollWidth>e.clientWidth){let{overflowX:r}=getComputedStyle(e);if(t(r))return e}return sD(e.parentElement)||document.scrollingElement||document.body}function sM(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];/text|search|password|tel|url/i.test(e.type)&&e.setSelectionRange(...r)}function sw(e,t){return t&&e.item(t)||null}var sF=Symbol("FOCUS_SILENTLY");function sR(e,t,r){if(!t||t===r)return!1;let n=e.item(t.id);return!!n&&(!r||n.element!==r)}function sI(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r]}function sP(e,t){return"function"==typeof Object.hasOwn?Object.hasOwn(e,t):Object.prototype.hasOwnProperty.call(e,t)}function sL(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return function(){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];for(let e of t)"function"==typeof e&&e(...r)}}function sU(e){return e}function sG(e,t){if(!e){if("string"!=typeof t)throw Error("Invariant failed");throw Error(t)}}function sO(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];let i="function"==typeof e?e(...r):e;return null!=i&&!i}function sH(e){return e.disabled||!0===e["aria-disabled"]||"true"===e["aria-disabled"]}function sN(e){let t={};for(let r in e)void 0!==e[r]&&(t[r]=e[r]);return t}function sk(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];for(let e of t)if(void 0!==e)return e}function sz(e,t){"function"==typeof e?e(t):e&&(e.current=t)}function sj(){return sp&&!!navigator.maxTouchPoints}function sK(){return!!sp&&/mac|iphone|ipad|ipod/i.test(navigator.platform)}function sJ(){return sp&&sK()&&/apple/i.test(navigator.vendor)}function sV(e){return!!(e.currentTarget&&!sA(e.currentTarget,e.target))}function sQ(e){return e.target===e.currentTarget}function sW(e,t){let r=new FocusEvent("blur",t),n=e.dispatchEvent(r),i={...t,bubbles:!0};return e.dispatchEvent(new FocusEvent("focusout",i)),n}function sX(e,t){let r=new MouseEvent("click",t);return e.dispatchEvent(r)}function sZ(e,t){let r=t||e.currentTarget,n=e.relatedTarget;return!n||!sA(r,n)}function sY(e,t,r,n){let i=(e=>{if(n){let t=setTimeout(e,n);return()=>clearTimeout(t)}let t=requestAnimationFrame(e);return()=>cancelAnimationFrame(t)})(()=>{e.removeEventListener(t,a,!0),r()}),a=()=>{i(),r()};return e.addEventListener(t,a,{once:!0,capture:!0}),i}function s_(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:window,i=[];try{for(let a of(n.document.addEventListener(e,t,r),Array.from(n.frames)))i.push(s_(e,t,r,a))}catch(e){}return()=>{try{n.document.removeEventListener(e,t,r)}catch(e){}for(let e of i)e()}}var sq={...eP},s$=sq.useId;sq.useDeferredValue;var s0=sq.useInsertionEffect,s1=sp?eP.useLayoutEffect:eP.useEffect;function s2(e){let t=(0,eP.useRef)(()=>{throw Error("Cannot call an event handler while rendering.")});return s0?s0(()=>{t.current=e}):t.current=e,(0,eP.useCallback)(function(){for(var e,r=arguments.length,n=Array(r),i=0;i<r;i++)n[i]=arguments[i];return null==(e=t.current)?void 0:e.call(t,...n)},[])}function s9(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,eP.useMemo)(()=>{if(t.some(Boolean))return e=>{for(let r of t)sz(r,e)}},t)}function s3(e){if(s$){let t=s$();return e||t}let[t,r]=(0,eP.useState)(e);return s1(()=>{if(e||t)return;let n=Math.random().toString(36).slice(2,8);r("id-".concat(n))},[e,t]),e||t}function s4(e,t){let r=(0,eP.useRef)(!1);(0,eP.useEffect)(()=>{if(r.current)return e();r.current=!0},t),(0,eP.useEffect)(()=>()=>{r.current=!1},[])}function s8(){return(0,eP.useReducer)(()=>[],[])}function s5(e){return s2("function"==typeof e?e:()=>e)}function s6(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=(0,eP.useCallback)(r=>(e.wrapElement&&(r=e.wrapElement(r)),t(r)),[...r,e.wrapElement]);return{...e,wrapElement:n}}function s7(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1?arguments[1]:void 0,[r,n]=(0,eP.useState)(null);return{portalRef:s9(n,t),portalNode:r,domReady:!e||r}}var oe=!1,ot=!1,or=0,on=0;function oi(e){(function(e){let t=e.movementX||e.screenX-or,r=e.movementY||e.screenY-on;return or=e.screenX,on=e.screenY,t||r||!1})(e)&&(ot=!0)}function oa(){ot=!1}function os(e){let t=eP.forwardRef((t,r)=>e({...t,ref:r}));return t.displayName=e.displayName||e.name,t}function oo(e,t){return eP.memo(e,t)}function ol(e,t){let r,{wrapElement:n,render:i,...a}=t,s=s9(t.ref,i&&(0,eP.isValidElement)(i)&&("ref"in i.props||"ref"in i)?({...i.props}).ref||i.ref:null);if(eP.isValidElement(i)){let e={...i.props,ref:s};r=eP.cloneElement(i,function(e,t){let r={...e};for(let n in t){if(!sP(t,n))continue;if("className"===n){let n="className";r[n]=e[n]?"".concat(e[n]," ").concat(t[n]):t[n];continue}if("style"===n){let n="style";r[n]=e[n]?{...e[n],...t[n]}:t[n];continue}let i=t[n];if("function"==typeof i&&n.startsWith("on")){let t=e[n];if("function"==typeof t){r[n]=function(){for(var e=arguments.length,r=Array(e),n=0;n<e;n++)r[n]=arguments[n];i(...r),t(...r)};continue}}r[n]=i}return r}(a,e))}else r=i?i(a):(0,eI.jsx)(e,{...a});return n?n(r):r}function ou(e){let t=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e(t)};return t.displayName=e.name,t}function oc(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=eP.createContext(void 0),n=eP.createContext(void 0),i=()=>eP.useContext(r),a=t=>e.reduceRight((e,r)=>(0,eI.jsx)(r,{...t,children:e}),(0,eI.jsx)(r.Provider,{...t}));return{context:r,scopedContext:n,useContext:i,useScopedContext:function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=eP.useContext(n),r=i();return e?t:t||r},useProviderContext:()=>{let e=eP.useContext(n),t=i();if(!e||e!==t)return t},ContextProvider:a,ScopedContextProvider:e=>(0,eI.jsx)(a,{...e,children:t.reduceRight((t,r)=>(0,eI.jsx)(r,{...e,children:t}),(0,eI.jsx)(n.Provider,{...e}))})}}var od=oc(),of=od.useContext;od.useScopedContext,od.useProviderContext;var oh=oc([od.ContextProvider],[od.ScopedContextProvider]),op=oh.useContext;oh.useScopedContext;var om=oh.useProviderContext,ov=oh.ContextProvider,og=oh.ScopedContextProvider,oA=(0,eP.createContext)(void 0),oy=(0,eP.createContext)(void 0),ox=(0,eP.createContext)(!0),oB="input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], summary, iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false'])";function oC(e){return!(!e.matches(oB)||!sC(e)||e.closest("[inert]"))}function oS(e){if(!oC(e)||0>Number.parseInt(e.getAttribute("tabindex")||"0",10))return!1;if(!("form"in e)||!e.form||e.checked||"radio"!==e.type)return!0;let t=e.form.elements.namedItem(e.name);if(!t||!("length"in t))return!0;let r=sg(e);return!r||r===e||!("form"in r)||r.form!==e.form||r.name!==e.name}function oE(e,t){let r=Array.from(e.querySelectorAll(oB));t&&r.unshift(e);let n=r.filter(oC);return n.forEach((e,t)=>{if(sy(e)&&e.contentDocument){let r=e.contentDocument.body;n.splice(t,1,...oE(r))}}),n}function oT(e,t,r){let n=Array.from(e.querySelectorAll(oB)),i=n.filter(oS);return(t&&oS(e)&&i.unshift(e),i.forEach((e,t)=>{if(sy(e)&&e.contentDocument){let n=oT(e.contentDocument.body,!1,r);i.splice(t,1,...n)}}),!i.length&&r)?n:i}function ob(e,t){return function(e,t,r,n){let i=sg(e),a=oE(e,t),s=a.indexOf(i),o=a.slice(s+1);return o.find(oS)||(r?a.find(oS):null)||(n?o[0]:null)||null}(document.body,!1,e,t)}function oD(e,t){return function(e,t,r,n){let i=sg(e),a=oE(e,t).reverse(),s=a.indexOf(i),o=a.slice(s+1);return o.find(oS)||(r?a.find(oS):null)||(n?o[0]:null)||null}(document.body,!1,e,t)}function oM(e){let t=sg(e);if(!t)return!1;if(t===e)return!0;let r=t.getAttribute("aria-activedescendant");return!!r&&r===e.id}function ow(e){let t=sg(e);if(!t)return!1;if(sA(e,t))return!0;let r=t.getAttribute("aria-activedescendant");return!!r&&"id"in e&&(r===e.id||!!e.querySelector("#".concat(CSS.escape(r))))}function oF(e){!ow(e)&&oC(e)&&e.focus()}var oR=sJ(),oI=["text","search","url","tel","email","password","number","date","month","week","time","datetime","datetime-local"],oP=Symbol("safariFocusAncestor");function oL(e){return"input"===e.tagName.toLowerCase()&&!!e.type&&("radio"===e.type||"checkbox"===e.type)}function oU(e,t){return s2(r=>{null==e||e(r),!r.defaultPrevented&&t&&(r.stopPropagation(),r.preventDefault())})}var oG=!1,oO=!0;function oH(e){let t=e.target;t&&"hasAttribute"in t&&!t.hasAttribute("data-focus-visible")&&(oO=!1)}function oN(e){e.metaKey||e.ctrlKey||e.altKey||(oO=!0)}var ok=ou(function(e){var t,r,n,i,a;let{focusable:s=!0,accessibleWhenDisabled:o,autoFocus:l,onFocusVisible:u,...c}=e,d=(0,eP.useRef)(null);(0,eP.useEffect)(()=>{s&&(oG||(s_("mousedown",oH,!0),s_("keydown",oN,!0),oG=!0))},[s]),oR&&(0,eP.useEffect)(()=>{if(!s)return;let e=d.current;if(!e||!oL(e))return;let t="labels"in e?e.labels:null;if(!t)return;let r=()=>queueMicrotask(()=>e.focus());for(let e of t)e.addEventListener("mouseup",r);return()=>{for(let e of t)e.removeEventListener("mouseup",r)}},[s]);let f=s&&sH(c),h=!!f&&!o,[p,m]=(0,eP.useState)(!1);(0,eP.useEffect)(()=>{s&&h&&p&&m(!1)},[s,h,p]),(0,eP.useEffect)(()=>{if(!s||!p)return;let e=d.current;if(!e||"undefined"==typeof IntersectionObserver)return;let t=new IntersectionObserver(()=>{oC(e)||m(!1)});return t.observe(e),()=>t.disconnect()},[s,p]);let g=oU(c.onKeyPressCapture,f),A=oU(c.onMouseDownCapture,f),y=oU(c.onClickCapture,f),x=c.onMouseDown,B=s2(e=>{if(null==x||x(e),e.defaultPrevented||!s)return;let t=e.currentTarget;if(!oR||sV(e)||!sx(t)&&!oL(t))return;let r=!1,n=()=>{r=!0};t.addEventListener("focusin",n,{capture:!0,once:!0});let i=function(e){for(;e&&!oC(e);)e=e.closest(oB);return e||null}(t.parentElement);i&&(i[oP]=!0),sY(t,"mouseup",()=>{t.removeEventListener("focusin",n,!0),i&&(i[oP]=!1),r||oF(t)})}),C=(e,t)=>{if(t&&(e.currentTarget=t),!s)return;let r=e.currentTarget;r&&oM(r)&&(null==u||u(e),e.defaultPrevented||(r.dataset.focusVisible="true",m(!0)))},S=c.onKeyDownCapture,E=s2(e=>{if(null==S||S(e),e.defaultPrevented||!s||p||e.metaKey||e.altKey||e.ctrlKey||!sQ(e))return;let t=e.currentTarget;sY(t,"focusout",()=>C(e,t))}),T=c.onFocusCapture,b=s2(e=>{if(null==T||T(e),e.defaultPrevented||!s)return;if(!sQ(e))return void m(!1);let t=e.currentTarget;oO||function(e){let{tagName:t,readOnly:r,type:n}=e;return"TEXTAREA"===t&&!r||"SELECT"===t&&!r||("INPUT"!==t||r?!!e.isContentEditable||"combobox"===e.getAttribute("role")&&!!e.dataset.name:oI.includes(n))}(e.target)?sY(e.target,"focusout",()=>C(e,t)):m(!1)}),D=c.onBlur,M=s2(e=>{null==D||D(e),s&&sZ(e)&&(e.currentTarget.removeAttribute("data-focus-visible"),m(!1))}),w=(0,eP.useContext)(ox),F=s2(e=>{s&&l&&e&&w&&queueMicrotask(()=>{!oM(e)&&oC(e)&&e.focus()})}),R=function(e,t){let r=e=>{if("string"==typeof e)return e},[n,i]=(0,eP.useState)(()=>r(void 0));return s1(()=>{let t=e&&"current"in e?e.current:e;i((null==t?void 0:t.tagName.toLowerCase())||r(void 0))},[e,t]),n}(d),I=s&&(!R||"button"===R||"summary"===R||"input"===R||"select"===R||"textarea"===R||"a"===R),P=s&&(!R||"button"===R||"input"===R||"select"===R||"textarea"===R),L=c.style,U=(0,eP.useMemo)(()=>h?{pointerEvents:"none",...L}:L,[h,L]);return c={"data-focus-visible":s&&p||void 0,"data-autofocus":l||void 0,"aria-disabled":f||void 0,...c,ref:s9(d,F,c.ref),style:U,tabIndex:(t=s,r=h,n=I,i=P,a=c.tabIndex,t?r?n&&!i?-1:void 0:n?a:a||0:a),disabled:!!P&&!!h||void 0,contentEditable:f?void 0:c.contentEditable,onKeyPressCapture:g,onClickCapture:y,onMouseDownCapture:A,onMouseDown:B,onKeyDownCapture:E,onFocusCapture:b,onBlur:M},sN(c)});function oz(e){let t=[];for(let r of e)t.push(...r);return t}function oj(e){return e.slice().reverse()}function oK(e,t,r){return s2(n=>{var i;if(null==t||t(n),n.defaultPrevented||n.isPropagationStopped()||!sQ(n)||"Shift"===n.key||"Control"===n.key||"Alt"===n.key||"Meta"===n.key||function(e){let t=e.target;return(!t||!!sS(t))&&1===e.key.length&&!e.ctrlKey&&!e.metaKey}(n))return;let a=e.getState(),s=null==(i=sw(e,a.activeId))?void 0:i.element;if(!s)return;let{view:o,...l}=n;s!==(null==r?void 0:r.current)&&s.focus(),!function(e,t,r){let n=new KeyboardEvent(t,r);return e.dispatchEvent(n)}(s,n.type,l)&&n.preventDefault(),n.currentTarget.contains(s)&&n.stopPropagation()})}os(function(e){return ol("div",ok(e))});var oJ=ou(function(e){let{store:t,composite:r=!0,focusOnMove:n=r,moveOnKeyPress:i=!0,...a}=e,s=om();sG(t=t||s,!1);let o=(0,eP.useRef)(null),l=(0,eP.useRef)(null),u=function(e){let[t,r]=(0,eP.useState)(!1),n=(0,eP.useCallback)(()=>r(!0),[]),i=e.useState(t=>sw(e,t.activeId));return(0,eP.useEffect)(()=>{let e=null==i?void 0:i.element;t&&e&&(r(!1),e.focus({preventScroll:!0}))},[i,t]),n}(t),c=t.useState("moves"),[,d]=function(e){let[t,r]=(0,eP.useState)(null);return s1(()=>{if(null==t||!e)return;let r=null;return e(e=>(r=e,t)),()=>{e(r)}},[t,e]),[t,r]}(r?t.setBaseElement:null);(0,eP.useEffect)(()=>{var e;if(!t||!c||!r||!n)return;let{activeId:i}=t.getState(),a=null==(e=sw(t,i))?void 0:e.element;a&&("scrollIntoView"in a?(a.focus({preventScroll:!0}),a.scrollIntoView({block:"nearest",inline:"nearest",...void 0})):a.focus())},[t,c,r,n]),s1(()=>{if(!t||!c||!r)return;let{baseElement:e,activeId:n}=t.getState();if(null!==n||!e)return;let i=l.current;l.current=null,i&&sW(i,{relatedTarget:e}),oM(e)||e.focus()},[t,c,r]);let f=t.useState("activeId"),h=t.useState("virtualFocus");s1(()=>{var e;if(!t||!r||!h)return;let n=l.current;if(l.current=null,!n)return;let i=(null==(e=sw(t,f))?void 0:e.element)||sg(n);i!==n&&sW(n,{relatedTarget:i})},[t,f,h,r]);let p=oK(t,a.onKeyDownCapture,l),m=oK(t,a.onKeyUpCapture,l),g=a.onFocusCapture,A=s2(e=>{if(null==g||g(e),e.defaultPrevented||!t)return;let{virtualFocus:r}=t.getState();if(!r)return;let n=e.relatedTarget,i=function(e){let t=e[sF];return delete e[sF],t}(e.currentTarget);sQ(e)&&i&&(e.stopPropagation(),l.current=n)}),y=a.onFocus,x=s2(e=>{if(null==y||y(e),e.defaultPrevented||!r||!t)return;let{relatedTarget:n}=e,{virtualFocus:i}=t.getState();i?sQ(e)&&!sR(t,n)&&queueMicrotask(u):sQ(e)&&t.setActiveId(null)}),B=a.onBlurCapture,C=s2(e=>{var r;if(null==B||B(e),e.defaultPrevented||!t)return;let{virtualFocus:n,activeId:i}=t.getState();if(!n)return;let a=null==(r=sw(t,i))?void 0:r.element,s=e.relatedTarget,o=sR(t,s),u=l.current;l.current=null,sQ(e)&&o?(s===a?u&&u!==s&&sW(u,e):a?sW(a,e):u&&sW(u,e),e.stopPropagation()):!sR(t,e.target)&&a&&sW(a,e)}),S=a.onKeyDown,E=s5(i),T=s2(e=>{var r;if(null==S||S(e),e.nativeEvent.isComposing||e.defaultPrevented||!t||!sQ(e))return;let{orientation:n,renderedItems:i,activeId:a}=t.getState(),s=sw(t,a);if(null==(r=null==s?void 0:s.element)?void 0:r.isConnected)return;let o="horizontal"!==n,l="vertical"!==n,u=i.some(e=>!!e.rowId);if(("ArrowLeft"===e.key||"ArrowRight"===e.key||"Home"===e.key||"End"===e.key)&&sS(e.currentTarget))return;let c={ArrowUp:(u||o)&&(()=>{if(u){let e=oz(oj(function(e){let t=[];for(let r of e){let e=t.find(e=>{var t;return(null==(t=e[0])?void 0:t.rowId)===r.rowId});e?e.push(r):t.push([r])}return t}(i))).find(e=>!e.disabled);return null==e?void 0:e.id}return null==t?void 0:t.last()}),ArrowRight:(u||l)&&t.first,ArrowDown:(u||o)&&t.first,ArrowLeft:(u||l)&&t.last,Home:t.first,End:t.last,PageUp:t.first,PageDown:t.last}[e.key];if(c){let r=c();if(void 0!==r){if(!E(e))return;e.preventDefault(),t.move(r)}}});return a=s6(a,e=>(0,eI.jsx)(ov,{value:t,children:e}),[t]),a={"aria-activedescendant":t.useState(e=>{var n;if(t&&r&&e.virtualFocus)return null==(n=sw(t,e.activeId))?void 0:n.id}),...a,ref:s9(o,d,a.ref),onKeyDownCapture:p,onKeyUpCapture:m,onFocusCapture:A,onFocus:x,onBlurCapture:C,onKeyDown:T},a=ok({focusable:t.useState(e=>r&&(e.virtualFocus||null===e.activeId)),...a})});os(function(e){return ol("div",oJ(e))});var oV=oc();oV.useContext,oV.useScopedContext;var oQ=oV.useProviderContext,oW=oc([oV.ContextProvider],[oV.ScopedContextProvider]);oW.useContext,oW.useScopedContext;var oX=oW.useProviderContext,oZ=oW.ContextProvider,oY=oW.ScopedContextProvider,o_=(0,eP.createContext)(void 0),oq=(0,eP.createContext)(void 0),o$=oc([oZ],[oY]);o$.useContext,o$.useScopedContext;var o0=o$.useProviderContext,o1=o$.ContextProvider,o2=o$.ScopedContextProvider,o9=ou(function(e){let{store:t,...r}=e,n=o0();return t=t||n,r={...r,ref:s9(null==t?void 0:t.setAnchorElement,r.ref)}});os(function(e){return ol("div",o9(e))});var o3=(0,eP.createContext)(void 0),o4=oc([o1,ov],[o2,og]),o8=o4.useContext,o5=o4.useScopedContext,o6=o4.useProviderContext,o7=o4.ContextProvider,le=o4.ScopedContextProvider,lt=(0,eP.createContext)(void 0),lr=(0,eP.createContext)(!1);function ln(e,t){let r=e.__unstableInternals;return sG(r,"Invalid store"),r[t]}function li(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];let i=e,a=i,s=Symbol(),o=sI,l=new Set,u=new Set,c=new Set,d=new Set,f=new Set,h=new WeakMap,p=new WeakMap,m=function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:d;return r.add(t),p.set(t,e),()=>{var e;null==(e=h.get(t))||e(),h.delete(t),p.delete(t),r.delete(t)}},g=function(e,t){var n,o;let l=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(!sP(i,e))return;let c=(o=i[e],"function"==typeof t?t("function"==typeof o?o():o):t);if(c===i[e])return;if(!l)for(let t of r)null==(n=null==t?void 0:t.setState)||n.call(t,e,c);let m=i;i={...i,[e]:c};let g=Symbol();s=g,u.add(e);let A=(t,r,n)=>{var a;let s=p.get(t);(!s||s.some(t=>n?n.has(t):t===e))&&(null==(a=h.get(t))||a(),h.set(t,t(i,r)))};for(let e of d)A(e,m);queueMicrotask(()=>{if(s!==g)return;let e=i;for(let e of f)A(e,a,u);a=e,u.clear()})},A={getState:()=>i,setState:g,__unstableInternals:{setup:e=>(c.add(e),()=>c.delete(e)),init:()=>{let e=l.size,t=Symbol();l.add(t);let n=()=>{l.delete(t),l.size||o()};if(e)return n;let a=Object.keys(i).map(e=>sL(...r.map(t=>{var r;let n=null==(r=null==t?void 0:t.getState)?void 0:r.call(t);if(n&&sP(n,e))return ll(t,[e],t=>{g(e,t[e],!0)})}))),s=[];for(let e of c)s.push(e());return o=sL(...a,...s,...r.map(ls)),n},subscribe:(e,t)=>m(e,t),sync:(e,t)=>(h.set(t,t(i,i)),m(e,t)),batch:(e,t)=>(h.set(t,t(i,a)),m(e,t,f)),pick:e=>li(function(e,t){let r={};for(let n of t)sP(e,n)&&(r[n]=e[n]);return r}(i,e),A),omit:e=>li(function(e,t){let r={...e};for(let e of t)sP(r,e)&&delete r[e];return r}(i,e),A)}};return A}function la(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(e)return ln(e,"setup")(...r)}function ls(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(e)return ln(e,"init")(...r)}function lo(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(e)return ln(e,"subscribe")(...r)}function ll(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(e)return ln(e,"sync")(...r)}function lu(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(e)return ln(e,"batch")(...r)}function lc(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(e)return ln(e,"omit")(...r)}function ld(){for(var e,t=arguments.length,r=Array(t),n=0;n<t;n++)r[n]=arguments[n];let i={};for(let t of r){let r=null==(e=null==t?void 0:t.getState)?void 0:e.call(t);r&&Object.assign(i,r)}let a=li(i,...r);return Object.assign({},...r,a)}function lf(e,t){}function lh(e,t,r){if(!r)return!1;let n=e.find(e=>!e.disabled&&e.value);return(null==n?void 0:n.value)===t}function lp(e,t){return!!t&&null!=e&&(e=e.normalize("NFD").replace(/[\u0300-\u036f]/g,""),t.length>e.length&&0===t.toLowerCase().indexOf(e.toLowerCase()))}var lm=ou(function(e){let{store:t,focusable:r=!0,autoSelect:n=!1,getAutoSelectId:i,setValueOnChange:a,showMinLength:s=0,showOnChange:o,showOnMouseDown:l,showOnClick:u=l,showOnKeyDown:c,showOnKeyPress:d=c,blurActiveItemOnClick:f,setValueOnClick:h=!0,moveOnKeyPress:p=!0,autoComplete:m="list",...g}=e,A=o6();sG(t=t||A,!1);let y=(0,eP.useRef)(null),[x,B]=s8(),C=(0,eP.useRef)(!1),S=(0,eP.useRef)(!1),E=t.useState(e=>e.virtualFocus&&n),T="inline"===m||"both"===m,[b,D]=(0,eP.useState)(T);!function(e,t){let r=(0,eP.useRef)(!1);s1(()=>{if(r.current)return e();r.current=!0},t),s1(()=>()=>{r.current=!1},[])}(()=>{T&&D(!0)},[T]);let M=t.useState("value"),w=(0,eP.useRef)();(0,eP.useEffect)(()=>ll(t,["selectedValue","activeId"],(e,t)=>{w.current=t.selectedValue}),[]);let F=t.useState(e=>{var t;if(T&&b){if(e.activeValue&&Array.isArray(e.selectedValue)&&(e.selectedValue.includes(e.activeValue)||(null==(t=w.current)?void 0:t.includes(e.activeValue))))return;return e.activeValue}}),R=t.useState("renderedItems"),I=t.useState("open"),P=t.useState("contentElement"),L=(0,eP.useMemo)(()=>{if(!T||!b)return M;if(lh(R,F,E)){if(lp(M,F)){let e=(null==F?void 0:F.slice(M.length))||"";return M+e}return M}return F||M},[T,b,R,F,E,M]);(0,eP.useEffect)(()=>{let e=y.current;if(!e)return;let t=()=>D(!0);return e.addEventListener("combobox-item-move",t),()=>{e.removeEventListener("combobox-item-move",t)}},[]),(0,eP.useEffect)(()=>{if(!T||!b||!F||!lh(R,F,E)||!lp(M,F))return;let e=sI;return queueMicrotask(()=>{let t=y.current;if(!t)return;let{start:r,end:n}=sT(t),i=M.length,a=F.length;sM(t,i,a),e=()=>{if(!oM(t))return;let{start:e,end:s}=sT(t);e===i&&s===a&&sM(t,r,n)}}),()=>e()},[x,T,b,F,R,E,M]);let U=(0,eP.useRef)(null),G=s2(i),O=(0,eP.useRef)(null);(0,eP.useEffect)(()=>{if(!I||!P)return;let e=sD(P);if(!e)return;U.current=e;let r=()=>{C.current=!1},n=()=>{if(!t||!C.current)return;let{activeId:e}=t.getState();null!==e&&e!==O.current&&(C.current=!1)},i={passive:!0,capture:!0};return e.addEventListener("wheel",r,i),e.addEventListener("touchmove",r,i),e.addEventListener("scroll",n,i),()=>{e.removeEventListener("wheel",r,!0),e.removeEventListener("touchmove",r,!0),e.removeEventListener("scroll",n,!0)}},[I,P,t]),s1(()=>{M&&(S.current||(C.current=!0))},[M]),s1(()=>{"always"!==E&&I||(C.current=I)},[E,I]);let H=t.useState("resetValueOnSelect");s4(()=>{var e,r;let n=C.current;if(!t||!I||!n&&!H)return;let{baseElement:i,contentElement:a,activeId:s}=t.getState();if(!i||oM(i)){if(null==a?void 0:a.hasAttribute("data-placing")){let e=new MutationObserver(B);return e.observe(a,{attributeFilter:["data-placing"]}),()=>e.disconnect()}if(E&&n){let r=G(R),n=void 0!==r?r:null!=(e=function(e){let t=e.find(e=>{var t;return!e.disabled&&(null==(t=e.element)?void 0:t.getAttribute("role"))!=="tab"});return null==t?void 0:t.id}(R))?e:t.first();O.current=n,t.move(null!=n?n:null)}else{let e=null==(r=t.item(s||t.first()))?void 0:r.element;e&&"scrollIntoView"in e&&e.scrollIntoView({block:"nearest",inline:"nearest"})}}},[t,I,x,M,E,H,G,R]),(0,eP.useEffect)(()=>{if(!T)return;let e=y.current;if(!e)return;let r=[e,P].filter(e=>!!e),n=e=>{r.every(t=>sZ(e,t))&&(null==t||t.setValue(L))};for(let e of r)e.addEventListener("focusout",n);return()=>{for(let e of r)e.removeEventListener("focusout",n)}},[T,P,t,L]);let N=e=>e.currentTarget.value.length>=s,k=g.onChange,z=s5(null!=o?o:N),j=s5(null!=a?a:!t.tag),K=s2(e=>{if(null==k||k(e),e.defaultPrevented||!t)return;let r=e.currentTarget,{value:n,selectionStart:i,selectionEnd:a}=r,s=e.nativeEvent;if(C.current=!0,"input"===s.type&&(s.isComposing&&(C.current=!1,S.current=!0),T)){let e="insertText"===s.inputType||"insertCompositionText"===s.inputType,t=i===n.length;D(e&&t)}if(j(e)){let e=n===t.getState().value;t.setValue(n),queueMicrotask(()=>{sM(r,i,a)}),T&&E&&e&&B()}z(e)&&t.show(),E&&C.current||t.setActiveId(null)}),J=g.onCompositionEnd,V=s2(e=>{C.current=!0,S.current=!1,null==J||J(e),!e.defaultPrevented&&E&&B()}),Q=g.onMouseDown,W=s5(null!=f?f:()=>!!(null==t?void 0:t.getState().includesBaseElement)),X=s5(h),Z=s5(null!=u?u:N),Y=s2(e=>{null==Q||Q(e),e.defaultPrevented||e.button||e.ctrlKey||t&&(W(e)&&t.setActiveId(null),X(e)&&t.setValue(L),Z(e)&&sY(e.currentTarget,"mouseup",t.show))}),_=g.onKeyDown,q=s5(null!=d?d:N),$=s2(e=>{if(null==_||_(e),e.repeat||(C.current=!1),e.defaultPrevented||e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||!t)return;let{open:r}=t.getState();!r&&("ArrowUp"===e.key||"ArrowDown"===e.key)&&q(e)&&(e.preventDefault(),t.show())}),ee=g.onBlur,et=s2(e=>{if(C.current=!1,null==ee||ee(e),e.defaultPrevented)return}),er=s3(g.id),en=t.useState(e=>null===e.activeId);return g={id:er,role:"combobox","aria-autocomplete":"inline"===m||"list"===m||"both"===m||"none"===m?m:void 0,"aria-haspopup":sb(P,"listbox"),"aria-expanded":I,"aria-controls":null==P?void 0:P.id,"data-active-item":en||void 0,value:L,...g,ref:s9(y,g.ref),onChange:K,onCompositionEnd:V,onMouseDown:Y,onKeyDown:$,onBlur:et},g=oJ({store:t,focusable:r,...g,moveOnKeyPress:e=>!sO(p,e)&&(T&&D(!0),!0)}),{autoComplete:"off",...g=o9({store:t,...g})}}),lv=os(function(e){return ol("input",lm(e))});function lg(e){let t=e.relatedTarget;return(null==t?void 0:t.nodeType)===Node.ELEMENT_NODE?t:null}var lA=Symbol("composite-hover"),ly=ou(function(e){let{store:t,focusOnHover:r=!0,blurOnHoverEnd:n=!!r,...i}=e,a=op();sG(t=t||a,!1);let s=((0,eP.useEffect)(()=>{oe||(s_("mousemove",oi,!0),s_("mousedown",oa,!0),s_("mouseup",oa,!0),s_("keydown",oa,!0),s_("scroll",oa,!0),oe=!0)},[]),s2(()=>ot)),o=i.onMouseMove,l=s5(r),u=s2(e=>{if((null==o||o(e),!e.defaultPrevented&&s())&&l(e)){if(!ow(e.currentTarget)){let e=null==t?void 0:t.getState().baseElement;e&&!oM(e)&&e.focus()}null==t||t.setActiveId(e.currentTarget.id)}}),c=i.onMouseLeave,d=s5(n),f=s2(e=>{var r;null==c||c(e),!(e.defaultPrevented||!s()||function(e){let t=lg(e);return!!t&&sA(e.currentTarget,t)}(e)||function(e){let t=lg(e);if(!t)return!1;do{if(sP(t,lA)&&t[lA])return!0;t=t.parentElement}while(t)return!1}(e))&&l(e)&&d(e)&&(null==t||t.setActiveId(null),null==(r=null==t?void 0:t.getState().baseElement)||r.focus())}),h=(0,eP.useCallback)(e=>{e&&(e[lA]=!0)},[]);return sN(i={...i,ref:s9(h,i.ref),onMouseMove:u,onMouseLeave:f})});oo(os(function(e){return ol("div",ly(e))}));var lx=ou(function(e){let{store:t,shouldRegisterItem:r=!0,getItem:n=sU,element:i,...a}=e,s=of();t=t||s;let o=s3(a.id),l=(0,eP.useRef)(i);return(0,eP.useEffect)(()=>{let e=l.current;if(!o||!e||!r)return;let i=n({id:o,element:e});return null==t?void 0:t.renderItem(i)},[o,r,n,t]),sN(a={...a,ref:s9(l,a.ref)})});function lB(e){if(!e.isTrusted)return!1;let t=e.currentTarget;return"Enter"===e.key?sx(t)||"SUMMARY"===t.tagName||"A"===t.tagName:" "===e.key&&(sx(t)||"SUMMARY"===t.tagName||"INPUT"===t.tagName||"SELECT"===t.tagName)}os(function(e){return ol("div",lx(e))});var lC=Symbol("command"),lS=ou(function(e){let{clickOnEnter:t=!0,clickOnSpace:r=!0,...n}=e,i=(0,eP.useRef)(null),[a,s]=(0,eP.useState)(!1);(0,eP.useEffect)(()=>{i.current&&s(sx(i.current))},[]);let[o,l]=(0,eP.useState)(!1),u=(0,eP.useRef)(!1),c=sH(n),[d,f]=function(e,t,r){let n=e.onLoadedMetadataCapture,i=(0,eP.useMemo)(()=>Object.assign(()=>{},{...n,[t]:r}),[n,t,r]);return[null==n?void 0:n[t],{onLoadedMetadataCapture:i}]}(n,lC,!0),h=n.onKeyDown,p=s2(e=>{null==h||h(e);let n=e.currentTarget;if(e.defaultPrevented||d||c||!sQ(e)||sS(n)||n.isContentEditable)return;let i=t&&"Enter"===e.key,a=r&&" "===e.key,s="Enter"===e.key&&!t,o=" "===e.key&&!r;if(s||o)return void e.preventDefault();if(i||a){let t=lB(e);if(i){if(!t){e.preventDefault();let{view:t,...r}=e,i=()=>sX(n,r);sp&&/firefox\//i.test(navigator.userAgent)?sY(n,"keyup",i):queueMicrotask(i)}}else a&&(u.current=!0,t||(e.preventDefault(),l(!0)))}}),m=n.onKeyUp,g=s2(e=>{if(null==m||m(e),e.defaultPrevented||d||c||e.metaKey)return;let t=r&&" "===e.key;if(u.current&&t&&(u.current=!1,!lB(e))){e.preventDefault(),l(!1);let t=e.currentTarget,{view:r,...n}=e;queueMicrotask(()=>sX(t,n))}});return ok(n={"data-active":o||void 0,type:a?"button":void 0,...f,...n,ref:s9(i,n.ref),onKeyDown:p,onKeyUp:g})});os(function(e){return ol("button",lS(e))});var{useSyncExternalStore:lE}=e.i(2239).default,lT=()=>()=>{};function lb(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:sU,r=eP.useCallback(t=>e?lo(e,null,t):lT(),[e]),n=()=>{let r="string"==typeof t?t:null,n="function"==typeof t?t:null,i=null==e?void 0:e.getState();return n?n(i):i&&r&&sP(i,r)?i[r]:void 0};return lE(r,n,n)}function lD(e,t){let r=eP.useRef({}),n=eP.useCallback(t=>e?lo(e,null,t):lT(),[e]),i=()=>{let n=null==e?void 0:e.getState(),i=!1,a=r.current;for(let e in t){let r=t[e];if("function"==typeof r){let t=r(n);t!==a[e]&&(a[e]=t,i=!0)}if("string"==typeof r){if(!n||!sP(n,r))continue;let t=n[r];t!==a[e]&&(a[e]=t,i=!0)}}return i&&(r.current={...a}),r.current};return lE(n,i,i)}function lM(e,t,r,n){let i=sP(t,r)?t[r]:void 0,a=function(e){let t=(0,eP.useRef)(e);return s1(()=>{t.current=e}),t}({value:i,setValue:n?t[n]:void 0});s1(()=>ll(e,[r],(e,t)=>{let{value:n,setValue:i}=a.current;i&&e[r]!==t[r]&&e[r]!==n&&i(e[r])}),[e,r]),s1(()=>{if(void 0!==i)return e.setState(r,i),lu(e,[r],()=>{void 0!==i&&e.setState(r,i)})})}function lw(e,t){let[r,n]=eP.useState(()=>e(t));s1(()=>ls(r),[r]);let i=eP.useCallback(e=>lb(r,e),[r]);return[eP.useMemo(()=>({...r,useState:i}),[r,i]),s2(()=>{n(r=>e({...t,...r.getState()}))})]}function lF(e,t,r){var n;let i,a,s=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!t||!r)return;let{renderedItems:o}=t.getState(),l=sD(e);if(!l)return;let u=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=e.clientHeight,{top:n}=e.getBoundingClientRect(),i=1.5*Math.max(.875*r,r-40),a=t?r-i+n:i+n;return"HTML"===e.tagName?a+e.scrollTop:a}(l,s);for(let e=0;e<o.length;e+=1){let o=i;if(!(i=r(e)))break;if(i===o)continue;let l=null==(n=sw(t,i))?void 0:n.element;if(!l)continue;let c=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],{top:r}=e.getBoundingClientRect();return t?r+e.clientHeight:r}(l,s)-u,d=Math.abs(c);if(s&&c<=0||!s&&c>=0){void 0!==a&&a<d&&(i=o);break}a=d}return i}var lR=ou(function(e){let{store:t,rowId:r,preventScrollOnKeyDown:n=!1,moveOnKeyPress:i=!0,tabbable:a=!1,getItem:s,"aria-setsize":o,"aria-posinset":l,...u}=e,c=op();t=t||c;let d=s3(u.id),f=(0,eP.useRef)(null),h=(0,eP.useContext)(oy),p=sH(u)&&!u.accessibleWhenDisabled,{rowId:m,baseElement:g,isActiveItem:A,ariaSetSize:y,ariaPosInSet:x,isTabbable:B}=lD(t,{rowId:e=>r||(e&&(null==h?void 0:h.baseElement)&&h.baseElement===e.baseElement?h.id:void 0),baseElement:e=>(null==e?void 0:e.baseElement)||void 0,isActiveItem:e=>!!e&&e.activeId===d,ariaSetSize:e=>null!=o?o:e&&(null==h?void 0:h.ariaSetSize)&&h.baseElement===e.baseElement?h.ariaSetSize:void 0,ariaPosInSet(e){if(null!=l)return l;if(!e||!(null==h?void 0:h.ariaPosInSet)||h.baseElement!==e.baseElement)return;let t=e.renderedItems.filter(e=>e.rowId===m);return h.ariaPosInSet+t.findIndex(e=>e.id===d)},isTabbable(e){if(!(null==e?void 0:e.renderedItems.length))return!0;if(e.virtualFocus)return!1;if(a)return!0;if(null===e.activeId)return!1;let r=null==t?void 0:t.item(e.activeId);return null!=r&&!!r.disabled||null==r||!r.element||e.activeId===d}}),C=(0,eP.useCallback)(e=>{var t;let r={...e,id:d||e.id,rowId:m,disabled:!!p,children:null==(t=e.element)?void 0:t.textContent};return s?s(r):r},[d,m,p,s]),S=u.onFocus,E=(0,eP.useRef)(!1),T=s2(e=>{var r,n;if(null==S||S(e),e.defaultPrevented||sV(e)||!d||!t||(r=t,!sQ(e)&&sR(r,e.target)))return;let{virtualFocus:i,baseElement:a}=t.getState();if(t.setActiveId(d),sE(e.currentTarget)&&function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(sS(e))e.setSelectionRange(t?e.value.length:0,e.value.length);else if(e.isContentEditable){let r=sm(e).getSelection();null==r||r.selectAllChildren(e),t&&(null==r||r.collapseToEnd())}}(e.currentTarget),i&&sQ(e))!sE(n=e.currentTarget)&&("INPUT"!==n.tagName||sx(n))&&(null==a?void 0:a.isConnected)&&((sJ()&&e.currentTarget.hasAttribute("data-autofocus")&&e.currentTarget.scrollIntoView({block:"nearest",inline:"nearest"}),E.current=!0,e.relatedTarget===a||sR(t,e.relatedTarget))?(a[sF]=!0,a.focus({preventScroll:!0})):a.focus())}),b=u.onBlurCapture,D=s2(e=>{if(null==b||b(e),e.defaultPrevented)return;let r=null==t?void 0:t.getState();(null==r?void 0:r.virtualFocus)&&E.current&&(E.current=!1,e.preventDefault(),e.stopPropagation())}),M=u.onKeyDown,w=s5(n),F=s5(i),R=s2(e=>{if(null==M||M(e),e.defaultPrevented||!sQ(e)||!t)return;let{currentTarget:r}=e,n=t.getState(),i=t.item(d),a=!!(null==i?void 0:i.rowId),s="horizontal"!==n.orientation,o="vertical"!==n.orientation,l=()=>!(!a&&!o&&n.baseElement&&sS(n.baseElement)),u={ArrowUp:(a||s)&&t.up,ArrowRight:(a||o)&&t.next,ArrowDown:(a||s)&&t.down,ArrowLeft:(a||o)&&t.previous,Home:()=>{if(l())return!a||e.ctrlKey?null==t?void 0:t.first():null==t?void 0:t.previous(-1)},End:()=>{if(l())return!a||e.ctrlKey?null==t?void 0:t.last():null==t?void 0:t.next(-1)},PageUp:()=>lF(r,t,null==t?void 0:t.up,!0),PageDown:()=>lF(r,t,null==t?void 0:t.down)}[e.key];if(u){if(sE(r)){let t=sT(r),n=o&&"ArrowLeft"===e.key,i=o&&"ArrowRight"===e.key,a=s&&"ArrowUp"===e.key,l=s&&"ArrowDown"===e.key;if(i||l){let{length:e}=function(e){if(sS(e))return e.value;if(e.isContentEditable){let t=sm(e).createRange();return t.selectNodeContents(e),t.toString()}return""}(r);if(t.end!==e)return}else if((n||a)&&0!==t.start)return}let n=u();if(w(e)||void 0!==n){if(!F(e))return;e.preventDefault(),t.move(n)}}}),I=(0,eP.useMemo)(()=>({id:d,baseElement:g}),[d,g]);return u={id:d,"data-active-item":A||void 0,...u=s6(u,e=>(0,eI.jsx)(oA.Provider,{value:I,children:e}),[I]),ref:s9(f,u.ref),tabIndex:B?u.tabIndex:-1,onFocus:T,onBlurCapture:D,onKeyDown:R},u=lS(u),sN({...u=lx({store:t,...u,getItem:C,shouldRegisterItem:!!d&&u.shouldRegisterItem}),"aria-setsize":y,"aria-posinset":x})});oo(os(function(e){return ol("button",lR(e))}));var lI=ou(function(e){var t,r;let{store:n,value:i,hideOnClick:a,setValueOnClick:s,selectValueOnClick:o=!0,resetValueOnSelect:l,focusOnHover:u=!1,moveOnKeyPress:c=!0,getItem:d,...f}=e,h=o5();sG(n=n||h,!1);let{resetValueOnSelectState:p,multiSelectable:m,selected:g}=lD(n,{resetValueOnSelectState:"resetValueOnSelect",multiSelectable:e=>Array.isArray(e.selectedValue),selected:e=>(function(e,t){if(null!=t)return null!=e&&(Array.isArray(e)?e.includes(t):e===t)})(e.selectedValue,i)}),A=(0,eP.useCallback)(e=>{let t={...e,value:i};return d?d(t):t},[i,d]);s=null!=s?s:!m,a=null!=a?a:null!=i&&!m;let y=f.onClick,x=s5(s),B=s5(o),C=s5(null!=(t=null!=l?l:p)?t:m),S=s5(a),E=s2(e=>{null==y||y(e),!(e.defaultPrevented||function(e){let t=e.currentTarget;if(!t)return!1;let r=t.tagName.toLowerCase();return!!e.altKey&&("a"===r||"button"===r&&"submit"===t.type||"input"===r&&"submit"===t.type)}(e))&&!function(e){let t=e.currentTarget;if(!t)return!1;let r=sK();if(r&&!e.metaKey||!r&&!e.ctrlKey)return!1;let n=t.tagName.toLowerCase();return"a"===n||"button"===n&&"submit"===t.type||"input"===n&&"submit"===t.type}(e)&&(null!=i&&(B(e)&&(C(e)&&(null==n||n.resetValue()),null==n||n.setSelectedValue(e=>Array.isArray(e)?e.includes(i)?e.filter(e=>e!==i):[...e,i]:i)),x(e)&&(null==n||n.setValue(i))),S(e)&&(null==n||n.hide()))}),T=f.onKeyDown,b=s2(e=>{if(null==T||T(e),e.defaultPrevented)return;let t=null==n?void 0:n.getState().baseElement;!(!t||oM(t))&&(1===e.key.length||"Backspace"===e.key||"Delete"===e.key)&&(queueMicrotask(()=>t.focus()),sS(t)&&(null==n||n.setValue(t.value)))});m&&null!=g&&(f={"aria-selected":g,...f}),f=s6(f,e=>(0,eI.jsx)(lt.Provider,{value:i,children:(0,eI.jsx)(lr.Provider,{value:null!=g&&g,children:e})}),[i,g]),f={role:null!=(r=({menu:"menuitem",listbox:"option",tree:"treeitem"})[(0,eP.useContext)(o3)])?r:"option",children:i,...f,onClick:E,onKeyDown:b};let D=s5(c);return f=lR({store:n,...f,getItem:A,moveOnKeyPress:e=>{if(!D(e))return!1;let t=new Event("combobox-item-move"),r=null==n?void 0:n.getState().baseElement;return null==r||r.dispatchEvent(t),!0}}),f=ly({store:n,focusOnHover:u,...f})}),lP=oo(os(function(e){return ol("div",lI(e))})),lL=e.i(74080);function lU(e,t){let r=setTimeout(t,e);return()=>clearTimeout(r)}function lG(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return t.join(", ").split(", ").reduce((e,t)=>{let r=t.endsWith("ms")?1:1e3,n=Number.parseFloat(t||"0s")*r;return n>e?n:e},0)}function lO(e,t,r){return!r&&!1!==t&&(!e||!!t)}var lH=ou(function(e){let{store:t,alwaysVisible:r,...n}=e,i=oQ();sG(t=t||i,!1);let a=(0,eP.useRef)(null),s=s3(n.id),[o,l]=(0,eP.useState)(null),u=t.useState("open"),c=t.useState("mounted"),d=t.useState("animated"),f=t.useState("contentElement"),h=lb(t.disclosure,"contentElement");s1(()=>{a.current&&(null==t||t.setContentElement(a.current))},[t]),s1(()=>{let e;return null==t||t.setState("animated",t=>(e=t,!0)),()=>{void 0!==e&&(null==t||t.setState("animated",e))}},[t]),s1(()=>{if(d){var e;let t;return(null==f?void 0:f.isConnected)?(e=()=>{l(u?"enter":c?"leave":null)},t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)}),()=>cancelAnimationFrame(t)):void l(null)}},[d,f,u,c]),s1(()=>{if(!t||!d||!o||!f)return;let e=()=>null==t?void 0:t.setState("animating",!1),r=()=>(0,lL.flushSync)(e);if("leave"===o&&u||"enter"===o&&!u)return;if("number"==typeof d)return lU(d,r);let{transitionDuration:n,animationDuration:i,transitionDelay:a,animationDelay:s}=getComputedStyle(f),{transitionDuration:l="0",animationDuration:c="0",transitionDelay:p="0",animationDelay:m="0"}=h?getComputedStyle(h):{},g=lG(a,s,p,m)+lG(n,i,l,c);if(!g){"enter"===o&&t.setState("animated",!1),e();return}return lU(Math.max(g-1e3/60,0),r)},[t,d,f,h,u,o]);let p=lO(c,(n=s6(n,e=>(0,eI.jsx)(oY,{value:t,children:e}),[t])).hidden,r),m=n.style,g=(0,eP.useMemo)(()=>p?{...m,display:"none"}:m,[p,m]);return sN(n={id:s,"data-open":u||void 0,"data-enter":"enter"===o||void 0,"data-leave":"leave"===o||void 0,hidden:p,...n,ref:s9(s?t.setContentElement:null,a,n.ref),style:g})}),lN=os(function(e){return ol("div",lH(e))});os(function(e){let{unmountOnHide:t,...r}=e,n=oQ();return!1===lb(r.store||n,e=>!t||(null==e?void 0:e.mounted))?null:(0,eI.jsx)(lN,{...r})});var lk=ou(function(e){let{store:t,alwaysVisible:r,...n}=e,i=o5(!0),a=o8(),s=!!(t=t||a)&&t===i;sG(t,!1);let o=(0,eP.useRef)(null),l=s3(n.id),u=t.useState("mounted"),c=lO(u,n.hidden,r),d=c?{...n.style,display:"none"}:n.style,f=t.useState(e=>Array.isArray(e.selectedValue)),h=function(e,t,r){let n=function(e){let[t]=(0,eP.useState)(e);return t}(r),[i,a]=(0,eP.useState)(n);return(0,eP.useEffect)(()=>{let r=e&&"current"in e?e.current:e;if(!r)return;let i=()=>{let e=r.getAttribute(t);a(null==e?n:e)},s=new MutationObserver(i);return s.observe(r,{attributeFilter:[t]}),i(),()=>s.disconnect()},[e,t,n]),i}(o,"role",n.role),p="listbox"===h||"tree"===h||"grid"===h,[m,g]=(0,eP.useState)(!1),A=t.useState("contentElement");s1(()=>{if(!u)return;let e=o.current;if(!e||A!==e)return;let t=()=>{g(!!e.querySelector("[role='listbox']"))},r=new MutationObserver(t);return r.observe(e,{subtree:!0,childList:!0,attributeFilter:["role"]}),t(),()=>r.disconnect()},[u,A]),m||(n={role:"listbox","aria-multiselectable":p&&f||void 0,...n}),n=s6(n,e=>(0,eI.jsx)(le,{value:t,children:(0,eI.jsx)(o3.Provider,{value:h,children:e})}),[t,h]);let y=!l||i&&s?null:t.setContentElement;return sN(n={id:l,hidden:c,...n,ref:s9(y,o,n.ref),style:d})}),lz=os(function(e){return ol("div",lk(e))}),lj=(0,eP.createContext)(null),lK=ou(function(e){return{...e,style:{border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px",...e.style}}});os(function(e){return ol("span",lK(e))});var lJ=ou(function(e){return lK(e={"data-focus-trap":"",tabIndex:0,"aria-hidden":!0,...e,style:{position:"fixed",top:0,left:0,...e.style}})}),lV=os(function(e){return ol("span",lJ(e))});function lQ(e){queueMicrotask(()=>{null==e||e.focus()})}var lW=ou(function(e){let{preserveTabOrder:t,preserveTabOrderAnchor:r,portalElement:n,portalRef:i,portal:a=!0,...s}=e,o=(0,eP.useRef)(null),l=s9(o,s.ref),u=(0,eP.useContext)(lj),[c,d]=(0,eP.useState)(null),[f,h]=(0,eP.useState)(null),p=(0,eP.useRef)(null),m=(0,eP.useRef)(null),g=(0,eP.useRef)(null),A=(0,eP.useRef)(null);return s1(()=>{let e=o.current;if(!e||!a)return void d(null);let t=n?"function"==typeof n?n(e):n:sm(e).createElement("div");if(!t)return void d(null);let r=t.isConnected;if(r||(u||sm(e).body).appendChild(t),t.id||(t.id=e.id?"portal/".concat(e.id):function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"id";return"".concat(e?"".concat(e,"-"):"").concat(Math.random().toString(36).slice(2,8))}()),d(t),sz(i,t),!r)return()=>{t.remove(),sz(i,null)}},[a,n,u,i]),s1(()=>{if(!a||!t||!r)return;let e=sm(r).createElement("span");return e.style.position="fixed",r.insertAdjacentElement("afterend",e),h(e),()=>{e.remove(),h(null)}},[a,t,r]),(0,eP.useEffect)(()=>{if(!c||!t)return;let e=0,r=t=>{if(!sZ(t))return;let r="focusin"===t.type;if(cancelAnimationFrame(e),r){let e=c.querySelectorAll("[data-tabindex]"),t=e=>{let t=e.getAttribute("data-tabindex");e.removeAttribute("data-tabindex"),t?e.setAttribute("tabindex",t):e.removeAttribute("tabindex")};for(let r of(c.hasAttribute("data-tabindex")&&t(c),e))t(r);return}e=requestAnimationFrame(()=>{for(let e of oT(c,!0))!function(e){var t;let r=null!=(t=e.getAttribute("tabindex"))?t:"";e.setAttribute("data-tabindex",r),e.setAttribute("tabindex","-1")}(e)})};return c.addEventListener("focusin",r,!0),c.addEventListener("focusout",r,!0),()=>{cancelAnimationFrame(e),c.removeEventListener("focusin",r,!0),c.removeEventListener("focusout",r,!0)}},[c,t]),s={...s=s6(s,e=>{if(e=(0,eI.jsx)(lj.Provider,{value:c||u,children:e}),!a)return e;if(!c)return(0,eI.jsx)("span",{ref:l,id:s.id,style:{position:"fixed"},hidden:!0});e=(0,eI.jsxs)(eI.Fragment,{children:[t&&c&&(0,eI.jsx)(lV,{ref:m,"data-focus-trap":s.id,className:"__focus-trap-inner-before",onFocus:e=>{sZ(e,c)?lQ(ob()):lQ(p.current)}}),e,t&&c&&(0,eI.jsx)(lV,{ref:g,"data-focus-trap":s.id,className:"__focus-trap-inner-after",onFocus:e=>{sZ(e,c)?lQ(oD()):lQ(A.current)}})]}),c&&(e=(0,lL.createPortal)(e,c));let r=(0,eI.jsxs)(eI.Fragment,{children:[t&&c&&(0,eI.jsx)(lV,{ref:p,"data-focus-trap":s.id,className:"__focus-trap-outer-before",onFocus:e=>{e.relatedTarget!==A.current&&sZ(e,c)?lQ(m.current):lQ(oD())}}),t&&(0,eI.jsx)("span",{"aria-owns":null==c?void 0:c.id,style:{position:"fixed"}}),t&&c&&(0,eI.jsx)(lV,{ref:A,"data-focus-trap":s.id,className:"__focus-trap-outer-after",onFocus:e=>{if(sZ(e,c))lQ(g.current);else{let e=ob();if(e===m.current)return void requestAnimationFrame(()=>{var e;return null==(e=ob())?void 0:e.focus()});lQ(e)}}})]});return f&&t&&(r=(0,lL.createPortal)(r,f)),(0,eI.jsxs)(eI.Fragment,{children:[r,e]})},[c,u,a,s.id,t,f]),ref:l}});os(function(e){return ol("div",lW(e))});var lX=(0,eP.createContext)(0);function lZ(e){let{level:t,children:r}=e,n=(0,eP.useContext)(lX),i=Math.max(Math.min(t||n+1,6),1);return(0,eI.jsx)(lX.Provider,{value:i,children:r})}var lY=ou(function(e){let{autoFocusOnShow:t=!0,...r}=e;return s6(r,e=>(0,eI.jsx)(ox.Provider,{value:t,children:e}),[t])});os(function(e){return ol("div",lY(e))});var l_=new WeakMap;function lq(e,t,r){l_.has(e)||l_.set(e,new Map);let n=l_.get(e),i=n.get(t);if(!i)return n.set(t,r()),()=>{var e;null==(e=n.get(t))||e(),n.delete(t)};let a=r(),s=()=>{a(),i(),n.delete(t)};return n.set(t,s),()=>{n.get(t)===s&&(a(),n.set(t,i))}}function l$(e,t,r){return lq(e,t,()=>{let n=e.getAttribute(t);return e.setAttribute(t,r),()=>{null==n?e.removeAttribute(t):e.setAttribute(t,n)}})}function l0(e,t,r){return lq(e,t,()=>{let n=t in e,i=e[t];return e[t]=r,()=>{n?e[t]=i:delete e[t]}})}function l1(e,t){return e?lq(e,"style",()=>{let r=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=r}}):()=>{}}var l2=["SCRIPT","STYLE"];function l9(e){return"__ariakit-dialog-snapshot-".concat(e)}function l3(e,t,r,n){for(let i of t){if(!(null==i?void 0:i.isConnected))continue;let a=t.some(e=>!!e&&e!==i&&e.contains(i)),s=sm(i),o=i;for(;i.parentElement&&i!==s.body;){if(null==n||n(i.parentElement,o),!a)for(let n of i.parentElement.children)(function(e,t,r){return!l2.includes(t.tagName)&&!!function(e,t){let r=sm(t),n=l9(e);if(!r.body[n])return!0;for(;;){if(t===r.body)return!1;if(t[n])return!0;if(!t.parentElement)return!1;t=t.parentElement}}(e,t)&&!r.some(e=>e&&sA(t,e))})(e,n,t)&&r(n,o);i=i.parentElement}}}function l4(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(!e)return!1;let i=e.getAttribute("data-backdrop");return null!=i&&(""===i||"true"===i||!r.length||r.some(e=>i===e))}function l8(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return"__ariakit-dialog-".concat(t?"ancestor":"outside").concat(e?"-".concat(e):"")}function l5(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return sL(l0(e,l8("",!0),!0),l0(e,l8(t,!0),!0))}function l6(e,t){if(e[l8(t,!0)])return!0;let r=l8(t);for(;;){if(e[r])return!0;if(!e.parentElement)return!1;e=e.parentElement}}function l7(e,t){let r=[],n=t.map(e=>null==e?void 0:e.id);return l3(e,t,t=>{l4(t,...n)||r.unshift(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return sL(l0(e,l8(),!0),l0(e,l8(t),!0))}(t,e))},(t,n)=>{n.hasAttribute("data-dialog")&&n.id!==e||r.unshift(l5(t,e))}),()=>{for(let e of r)e()}}function ue(e){let{store:t,type:r,listener:n,capture:i,domReady:a}=e,s=s2(n),o=lb(t,"open"),l=(0,eP.useRef)(!1);s1(()=>{if(!o||!a)return;let{contentElement:e}=t.getState();if(!e)return;let r=()=>{l.current=!0};return e.addEventListener("focusin",r,!0),()=>e.removeEventListener("focusin",r,!0)},[t,o,a]),(0,eP.useEffect)(()=>{if(o)return s_(r,e=>{let{contentElement:r,disclosureElement:n}=t.getState(),i=e.target;if(r&&i)!(!("HTML"===i.tagName||sA(sm(i).body,i))||sA(r,i)||function(e,t){if(!e)return!1;if(sA(e,t))return!0;let r=t.getAttribute("aria-activedescendant");if(r){let t=sm(e).getElementById(r);if(t)return sA(e,t)}return!1}(n,i)||i.hasAttribute("data-focus-trap")||function(e,t){if(!("clientY"in e))return!1;let r=t.getBoundingClientRect();return 0!==r.width&&0!==r.height&&r.top<=e.clientY&&e.clientY<=r.top+r.height&&r.left<=e.clientX&&e.clientX<=r.left+r.width}(e,r))&&(!l.current||l6(i,r.id))&&(i&&i[oP]||s(e))},i)},[o,i])}function ut(e,t){return"function"==typeof e?e(t):!!e}var ur=(0,eP.createContext)({});function un(){return"inert"in HTMLElement.prototype}function ui(e,t){if(!("style"in e))return sI;if(un())return l0(e,"inert",!0);let r=oT(e,!0).map(e=>{if(null==t?void 0:t.some(t=>t&&sA(t,e)))return sI;let r=lq(e,"focus",()=>(e.focus=sI,()=>{delete e.focus}));return sL(l$(e,"tabindex","-1"),r)});return sL(...r,l$(e,"aria-hidden","true"),l1(e,{pointerEvents:"none",userSelect:"none",cursor:"default"}))}function ua(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=ld(e.store,lc(e.disclosure,["contentElement","disclosureElement"]));lf(e,t);let r=null==t?void 0:t.getState(),n=sk(e.open,null==r?void 0:r.open,e.defaultOpen,!1),i=sk(e.animated,null==r?void 0:r.animated,!1),a=li({open:n,animated:i,animating:!!i&&n,mounted:n,contentElement:sk(null==r?void 0:r.contentElement,null),disclosureElement:sk(null==r?void 0:r.disclosureElement,null)},t);return la(a,()=>ll(a,["animated","animating"],e=>{e.animated||a.setState("animating",!1)})),la(a,()=>lo(a,["open"],()=>{a.getState().animated&&a.setState("animating",!0)})),la(a,()=>ll(a,["open","animating"],e=>{a.setState("mounted",e.open||e.animating)})),{...a,disclosure:e.disclosure,setOpen:e=>a.setState("open",e),show:()=>a.setState("open",!0),hide:()=>a.setState("open",!1),toggle:()=>a.setState("open",e=>!e),stopAnimation:()=>a.setState("animating",!1),setContentElement:e=>a.setState("contentElement",e),setDisclosureElement:e=>a.setState("disclosureElement",e)}}function us(e,t,r){return s4(t,[r.store,r.disclosure]),lM(e,r,"open","setOpen"),lM(e,r,"mounted","setMounted"),lM(e,r,"animated"),Object.assign(e,{disclosure:r.disclosure})}ou(function(e){return e});var uo=os(function(e){return ol("div",e)});function ul(e){let{store:t,backdrop:r,alwaysVisible:n,hidden:i}=e,a=(0,eP.useRef)(null),s=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},[t,r]=lw(ua,e);return us(t,r,e)}({disclosure:t}),o=lb(t,"contentElement");(0,eP.useEffect)(()=>{let e=a.current;e&&o&&(e.style.zIndex=getComputedStyle(o).zIndex)},[o]),s1(()=>{let e=null==o?void 0:o.id;if(!e)return;let t=a.current;if(t)return l5(t,e)},[o]);let l=lH({ref:a,store:s,role:"presentation","data-backdrop":(null==o?void 0:o.id)||"",alwaysVisible:n,hidden:null!=i?i:void 0,style:{position:"fixed",top:0,right:0,bottom:0,left:0}});if(!r)return null;if((0,eP.isValidElement)(r))return(0,eI.jsx)(uo,{...l,render:r});let u="boolean"!=typeof r?r:"div";return(0,eI.jsx)(uo,{...l,render:(0,eI.jsx)(u,{})})}function uu(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return ua(e)}Object.assign(uo,["a","button","details","dialog","div","form","h1","h2","h3","h4","h5","h6","header","img","input","label","li","nav","ol","p","section","select","span","summary","textarea","ul","svg"].reduce((e,t)=>(e[t]=os(function(e){return ol(t,e)}),e),{}));var uc=sJ();function ud(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return null;let r="current"in e?e.current:e;return r?t?oC(r)?r:null:r:null}var uf=ou(function(e){let{store:t,open:r,onClose:n,focusable:i=!0,modal:a=!0,portal:s=!!a,backdrop:o=!!a,hideOnEscape:l=!0,hideOnInteractOutside:u=!0,getPersistentElements:c,preventBodyScroll:d=!!a,autoFocusOnShow:f=!0,autoFocusOnHide:h=!0,initialFocus:p,finalFocus:m,unmountOnHide:g,unstable_treeSnapshotKey:A,...y}=e,x=oX(),B=(0,eP.useRef)(null),C=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},[t,r]=lw(uu,e);return us(t,r,e)}({store:t||x,open:r,setOpen(e){if(e)return;let t=B.current;if(!t)return;let r=new Event("close",{bubbles:!1,cancelable:!0});n&&t.addEventListener("close",n,{once:!0}),t.dispatchEvent(r),r.defaultPrevented&&C.setOpen(!0)}}),{portalRef:S,domReady:E}=s7(s,y.portalRef),T=y.preserveTabOrder,b=lb(C,e=>T&&!a&&e.mounted),D=s3(y.id),M=lb(C,"open"),w=lb(C,"mounted"),F=lb(C,"contentElement"),R=lO(w,y.hidden,y.alwaysVisible),I=function(e){let{attribute:t,contentId:r,contentElement:n,enabled:i}=e,[a,s]=s8(),o=(0,eP.useCallback)(()=>{if(!i||!n)return!1;let{body:e}=sm(n),a=e.getAttribute(t);return!a||a===r},[a,i,n,t,r]);return(0,eP.useEffect)(()=>{if(!i||!r||!n)return;let{body:e}=sm(n);if(o())return e.setAttribute(t,r),()=>e.removeAttribute(t);let a=new MutationObserver(()=>(0,lL.flushSync)(s));return a.observe(e,{attributeFilter:[t]}),()=>a.disconnect()},[a,i,r,n,o,t]),o}({attribute:"data-dialog-prevent-body-scroll",contentElement:F,contentId:D,enabled:d&&!R});(0,eP.useEffect)(()=>{var e,t;if(!I()||!F)return;let r=sm(F),n=sv(F),{documentElement:i,body:a}=r,s=i.style.getPropertyValue("--scrollbar-width"),o=s?Number.parseInt(s,10):n.innerWidth-i.clientWidth,l=Math.round(i.getBoundingClientRect().left)+i.scrollLeft?"paddingLeft":"paddingRight",u=sK()&&!(sp&&navigator.platform.startsWith("Mac")&&!sj());return sL((e="--scrollbar-width",t="".concat(o,"px"),i?lq(i,e,()=>{let r=i.style.getPropertyValue(e);return i.style.setProperty(e,t),()=>{r?i.style.setProperty(e,r):i.style.removeProperty(e)}}):()=>{}),u?(()=>{var e,t;let{scrollX:r,scrollY:i,visualViewport:s}=n,u=null!=(e=null==s?void 0:s.offsetLeft)?e:0,c=null!=(t=null==s?void 0:s.offsetTop)?t:0,d=l1(a,{position:"fixed",overflow:"hidden",top:"".concat(-(i-Math.floor(c)),"px"),left:"".concat(-(r-Math.floor(u)),"px"),right:"0",[l]:"".concat(o,"px")});return()=>{d(),n.scrollTo({left:r,top:i,behavior:"instant"})}})():l1(a,{overflow:"hidden",[l]:"".concat(o,"px")}))},[I,F]);let P=function(e){let t=(0,eP.useRef)();return(0,eP.useEffect)(()=>{if(!e){t.current=null;return}return s_("mousedown",e=>{t.current=e.target},!0)},[e]),t}(lb(C,"open")),L={store:C,domReady:E,capture:!0};ue({...L,type:"click",listener:e=>{let{contentElement:t}=C.getState(),r=P.current;r&&sC(r)&&l6(r,null==t?void 0:t.id)&&ut(u,e)&&C.hide()}}),ue({...L,type:"focusin",listener:e=>{let{contentElement:t}=C.getState();t&&e.target!==sm(t)&&ut(u,e)&&C.hide()}}),ue({...L,type:"contextmenu",listener:e=>{ut(u,e)&&C.hide()}});let{wrapElement:U,nestedDialogs:G}=function(e){let t=(0,eP.useContext)(ur),[r,n]=(0,eP.useState)([]),i=(0,eP.useCallback)(e=>{var r;return n(t=>[...t,e]),sL(null==(r=t.add)?void 0:r.call(t,e),()=>{n(t=>t.filter(t=>t!==e))})},[t]);s1(()=>ll(e,["open","contentElement"],r=>{var n;if(r.open&&r.contentElement)return null==(n=t.add)?void 0:n.call(t,e)}),[e,t]);let a=(0,eP.useMemo)(()=>({store:e,add:i}),[e,i]);return{wrapElement:(0,eP.useCallback)(e=>(0,eI.jsx)(ur.Provider,{value:a,children:e}),[a]),nestedDialogs:r}}(C);y=s6(y,U,[U]),s1(()=>{if(!M)return;let e=B.current,t=sg(e,!0);t&&"BODY"!==t.tagName&&(e&&sA(e,t)||C.setDisclosureElement(t))},[C,M]),uc&&(0,eP.useEffect)(()=>{if(!w)return;let{disclosureElement:e}=C.getState();if(!e||!sx(e))return;let t=()=>{let t=!1,r=()=>{t=!0};e.addEventListener("focusin",r,{capture:!0,once:!0}),sY(e,"mouseup",()=>{e.removeEventListener("focusin",r,!0),t||oF(e)})};return e.addEventListener("mousedown",t),()=>{e.removeEventListener("mousedown",t)}},[C,w]),(0,eP.useEffect)(()=>{if(!w||!E)return;let e=B.current;if(!e)return;let t=sv(e),r=t.visualViewport||t,n=()=>{var r,n;let i=null!=(n=null==(r=t.visualViewport)?void 0:r.height)?n:t.innerHeight;e.style.setProperty("--dialog-viewport-height","".concat(i,"px"))};return n(),r.addEventListener("resize",n),()=>{r.removeEventListener("resize",n)}},[w,E]),(0,eP.useEffect)(()=>{if(!a||!w||!E)return;let e=B.current;if(e&&!e.querySelector("[data-dialog-dismiss]")){var t=C.hide;let r=sm(e).createElement("button");return r.type="button",r.tabIndex=-1,r.textContent="Dismiss popup",Object.assign(r.style,{border:"0px",clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0px",position:"absolute",whiteSpace:"nowrap",width:"1px"}),r.addEventListener("click",t),e.prepend(r),()=>{r.removeEventListener("click",t),r.remove()}}},[C,a,w,E]),s1(()=>{if(!un()||M||!w||!E)return;let e=B.current;if(e)return ui(e)},[M,w,E]);let O=M&&E;s1(()=>{if(!D||!O)return;var e=[B.current];let{body:t}=sm(e[0]),r=[];return l3(D,e,e=>{r.push(l0(e,l9(D),!0))}),sL(l0(t,l9(D),!0),()=>{for(let e of r)e()})},[D,O,A]);let H=s2(c);s1(()=>{if(!D||!O)return;let{disclosureElement:e}=C.getState(),t=[B.current,...H()||[],...G.map(e=>e.getState().contentElement)];return a?sL(l7(D,t),function(e,t){let r=[],n=t.map(e=>null==e?void 0:e.id);return l3(e,t,e=>{l4(e,...n)||!function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(!e)return!1;let i=e.getAttribute("data-focus-trap");return null!=i&&(!r.length||""!==i&&r.some(e=>i===e))}(e,...n)&&r.unshift(ui(e,t))},e=>{e.hasAttribute("role")&&(t.some(t=>t&&sA(t,e))||r.unshift(l$(e,"role","none")))}),()=>{for(let e of r)e()}}(D,t)):l7(D,[e,...t])},[D,C,O,H,G,a,A]);let N=!!f,k=s5(f),[z,j]=(0,eP.useState)(!1);(0,eP.useEffect)(()=>{if(!M||!N||!E||!(null==F?void 0:F.isConnected))return;let e=ud(p,!0)||F.querySelector("[data-autofocus=true],[autofocus]")||function(e,t,r){let[n]=oT(e,t,r);return n||null}(F,!0,s&&b)||F,t=oC(e);k(t?e:null)&&(j(!0),queueMicrotask(()=>{e.focus(),uc&&t&&e.scrollIntoView({block:"nearest",inline:"nearest"})}))},[M,N,E,F,p,s,b,k]);let K=!!h,J=s5(h),[V,Q]=(0,eP.useState)(!1);(0,eP.useEffect)(()=>{if(M)return Q(!0),()=>Q(!1)},[M]);let W=(0,eP.useCallback)(function(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],{disclosureElement:r}=C.getState();if(function(e){let t=sg();return!(!t||e&&sA(e,t))&&!!oC(t)}(e))return;let n=ud(m)||r;if(null==n?void 0:n.id){let e=sm(n),t='[aria-activedescendant="'.concat(n.id,'"]'),r=e.querySelector(t);r&&(n=r)}if(n&&!oC(n)){let e=n.closest("[data-dialog]");if(null==e?void 0:e.id){let t=sm(e),r='[aria-controls~="'.concat(e.id,'"]'),i=t.querySelector(r);i&&(n=i)}}let i=n&&oC(n);if(!i&&t)return void requestAnimationFrame(()=>W(e,!1));J(i?n:null)&&i&&(null==n||n.focus({preventScroll:!0}))},[C,m,J]),X=(0,eP.useRef)(!1);s1(()=>{if(M||!V||!K)return;let e=B.current;X.current=!0,W(e)},[M,V,E,K,W]),(0,eP.useEffect)(()=>{if(!V||!K)return;let e=B.current;return()=>{if(X.current){X.current=!1;return}W(e)}},[V,K,W]);let Z=s5(l);(0,eP.useEffect)(()=>{if(E&&w)return s_("keydown",e=>{if("Escape"!==e.key||e.defaultPrevented)return;let t=B.current;if(!t||l6(t))return;let r=e.target;if(!r)return;let{disclosureElement:n}=C.getState();("BODY"===r.tagName||sA(t,r)||!n||sA(n,r))&&Z(e)&&C.hide()},!0)},[C,E,w,Z]);let Y=(y=s6(y,e=>(0,eI.jsx)(lZ,{level:a?1:void 0,children:e}),[a])).hidden,_=y.alwaysVisible;y=s6(y,e=>o?(0,eI.jsxs)(eI.Fragment,{children:[(0,eI.jsx)(ul,{store:C,backdrop:o,hidden:Y,alwaysVisible:_}),e]}):e,[C,o,Y,_]);let[q,$]=(0,eP.useState)(),[ee,et]=(0,eP.useState)();return y=lY({...y={id:D,"data-dialog":"",role:"dialog",tabIndex:i?-1:void 0,"aria-labelledby":q,"aria-describedby":ee,...y=s6(y,e=>(0,eI.jsx)(oY,{value:C,children:(0,eI.jsx)(o_.Provider,{value:$,children:(0,eI.jsx)(oq.Provider,{value:et,children:e})})}),[C]),ref:s9(B,y.ref)},autoFocusOnShow:z}),y=lW({portal:s,...y=ok({...y=lH({store:C,...y}),focusable:i}),portalRef:S,preserveTabOrder:b})});function uh(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:oX;return os(function(r){let n=t();return lb(r.store||n,e=>!r.unmountOnHide||(null==e?void 0:e.mounted)||!!r.open)?(0,eI.jsx)(e,{...r}):null})}uh(os(function(e){return ol("div",uf(e))}),oX);let up=Math.min,um=Math.max,uv=Math.round,ug=Math.floor,uA=e=>({x:e,y:e}),uy={left:"right",right:"left",bottom:"top",top:"bottom"},ux={start:"end",end:"start"};function uB(e,t){return"function"==typeof e?e(t):e}function uC(e){return e.split("-")[0]}function uS(e){return e.split("-")[1]}function uE(e){return"x"===e?"y":"x"}function uT(e){return"y"===e?"height":"width"}let ub=new Set(["top","bottom"]);function uD(e){return ub.has(uC(e))?"y":"x"}function uM(e){return e.replace(/start|end/g,e=>ux[e])}let uw=["left","right"],uF=["right","left"],uR=["top","bottom"],uI=["bottom","top"];function uP(e){return e.replace(/left|right|bottom|top/g,e=>uy[e])}function uL(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function uU(e){let{x:t,y:r,width:n,height:i}=e;return{width:n,height:i,top:r,left:t,right:t+n,bottom:r+i,x:t,y:r}}function uG(e,t,r){let n,{reference:i,floating:a}=e,s=uD(t),o=uE(uD(t)),l=uT(o),u=uC(t),c="y"===s,d=i.x+i.width/2-a.width/2,f=i.y+i.height/2-a.height/2,h=i[l]/2-a[l]/2;switch(u){case"top":n={x:d,y:i.y-a.height};break;case"bottom":n={x:d,y:i.y+i.height};break;case"right":n={x:i.x+i.width,y:f};break;case"left":n={x:i.x-a.width,y:f};break;default:n={x:i.x,y:i.y}}switch(uS(t)){case"start":n[o]-=h*(r&&c?-1:1);break;case"end":n[o]+=h*(r&&c?-1:1)}return n}let uO=async(e,t,r)=>{let{placement:n="bottom",strategy:i="absolute",middleware:a=[],platform:s}=r,o=a.filter(Boolean),l=await (null==s.isRTL?void 0:s.isRTL(t)),u=await s.getElementRects({reference:e,floating:t,strategy:i}),{x:c,y:d}=uG(u,n,l),f=n,h={},p=0;for(let r=0;r<o.length;r++){let{name:a,fn:m}=o[r],{x:g,y:A,data:y,reset:x}=await m({x:c,y:d,initialPlacement:n,placement:f,strategy:i,middlewareData:h,rects:u,platform:s,elements:{reference:e,floating:t}});c=null!=g?g:c,d=null!=A?A:d,h={...h,[a]:{...h[a],...y}},x&&p<=50&&(p++,"object"==typeof x&&(x.placement&&(f=x.placement),x.rects&&(u=!0===x.rects?await s.getElementRects({reference:e,floating:t,strategy:i}):x.rects),{x:c,y:d}=uG(u,f,l)),r=-1)}return{x:c,y:d,placement:f,strategy:i,middlewareData:h}};async function uH(e,t){var r;void 0===t&&(t={});let{x:n,y:i,platform:a,rects:s,elements:o,strategy:l}=e,{boundary:u="clippingAncestors",rootBoundary:c="viewport",elementContext:d="floating",altBoundary:f=!1,padding:h=0}=uB(t,e),p=uL(h),m=o[f?"floating"===d?"reference":"floating":d],g=uU(await a.getClippingRect({element:null==(r=await (null==a.isElement?void 0:a.isElement(m)))||r?m:m.contextElement||await (null==a.getDocumentElement?void 0:a.getDocumentElement(o.floating)),boundary:u,rootBoundary:c,strategy:l})),A="floating"===d?{x:n,y:i,width:s.floating.width,height:s.floating.height}:s.reference,y=await (null==a.getOffsetParent?void 0:a.getOffsetParent(o.floating)),x=await (null==a.isElement?void 0:a.isElement(y))&&await (null==a.getScale?void 0:a.getScale(y))||{x:1,y:1},B=uU(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:A,offsetParent:y,strategy:l}):A);return{top:(g.top-B.top+p.top)/x.y,bottom:(B.bottom-g.bottom+p.bottom)/x.y,left:(g.left-B.left+p.left)/x.x,right:(B.right-g.right+p.right)/x.x}}let uN=new Set(["left","top"]);async function uk(e,t){let{placement:r,platform:n,elements:i}=e,a=await (null==n.isRTL?void 0:n.isRTL(i.floating)),s=uC(r),o=uS(r),l="y"===uD(r),u=uN.has(s)?-1:1,c=a&&l?-1:1,d=uB(t,e),{mainAxis:f,crossAxis:h,alignmentAxis:p}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return o&&"number"==typeof p&&(h="end"===o?-1*p:p),l?{x:h*c,y:f*u}:{x:f*u,y:h*c}}function uz(){return"undefined"!=typeof window}function uj(e){return uV(e)?(e.nodeName||"").toLowerCase():"#document"}function uK(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function uJ(e){var t;return null==(t=(uV(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function uV(e){return!!uz()&&(e instanceof Node||e instanceof uK(e).Node)}function uQ(e){return!!uz()&&(e instanceof Element||e instanceof uK(e).Element)}function uW(e){return!!uz()&&(e instanceof HTMLElement||e instanceof uK(e).HTMLElement)}function uX(e){return!!uz()&&"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof uK(e).ShadowRoot)}let uZ=new Set(["inline","contents"]);function uY(e){let{overflow:t,overflowX:r,overflowY:n,display:i}=u5(e);return/auto|scroll|overlay|hidden|clip/.test(t+n+r)&&!uZ.has(i)}let u_=new Set(["table","td","th"]),uq=[":popover-open",":modal"];function u$(e){return uq.some(t=>{try{return e.matches(t)}catch(e){return!1}})}let u0=["transform","translate","scale","rotate","perspective"],u1=["transform","translate","scale","rotate","perspective","filter"],u2=["paint","layout","strict","content"];function u9(e){let t=u3(),r=uQ(e)?u5(e):e;return u0.some(e=>!!r[e]&&"none"!==r[e])||!!r.containerType&&"normal"!==r.containerType||!t&&!!r.backdropFilter&&"none"!==r.backdropFilter||!t&&!!r.filter&&"none"!==r.filter||u1.some(e=>(r.willChange||"").includes(e))||u2.some(e=>(r.contain||"").includes(e))}function u3(){return"undefined"!=typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}let u4=new Set(["html","body","#document"]);function u8(e){return u4.has(uj(e))}function u5(e){return uK(e).getComputedStyle(e)}function u6(e){return uQ(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function u7(e){if("html"===uj(e))return e;let t=e.assignedSlot||e.parentNode||uX(e)&&e.host||uJ(e);return uX(t)?t.host:t}function ce(e,t,r){var n;void 0===t&&(t=[]),void 0===r&&(r=!0);let i=function e(t){let r=u7(t);return u8(r)?t.ownerDocument?t.ownerDocument.body:t.body:uW(r)&&uY(r)?r:e(r)}(e),a=i===(null==(n=e.ownerDocument)?void 0:n.body),s=uK(i);if(a){let e=ct(s);return t.concat(s,s.visualViewport||[],uY(i)?i:[],e&&r?ce(e):[])}return t.concat(i,ce(i,[],r))}function ct(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function cr(e){let t=u5(e),r=parseFloat(t.width)||0,n=parseFloat(t.height)||0,i=uW(e),a=i?e.offsetWidth:r,s=i?e.offsetHeight:n,o=uv(r)!==a||uv(n)!==s;return o&&(r=a,n=s),{width:r,height:n,$:o}}function cn(e){return uQ(e)?e:e.contextElement}function ci(e){let t=cn(e);if(!uW(t))return uA(1);let r=t.getBoundingClientRect(),{width:n,height:i,$:a}=cr(t),s=(a?uv(r.width):r.width)/n,o=(a?uv(r.height):r.height)/i;return s&&Number.isFinite(s)||(s=1),o&&Number.isFinite(o)||(o=1),{x:s,y:o}}let ca=uA(0);function cs(e){let t=uK(e);return u3()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:ca}function co(e,t,r,n){var i;void 0===t&&(t=!1),void 0===r&&(r=!1);let a=e.getBoundingClientRect(),s=cn(e),o=uA(1);t&&(n?uQ(n)&&(o=ci(n)):o=ci(e));let l=(void 0===(i=r)&&(i=!1),n&&(!i||n===uK(s))&&i)?cs(s):uA(0),u=(a.left+l.x)/o.x,c=(a.top+l.y)/o.y,d=a.width/o.x,f=a.height/o.y;if(s){let e=uK(s),t=n&&uQ(n)?uK(n):n,r=e,i=ct(r);for(;i&&n&&t!==r;){let e=ci(i),t=i.getBoundingClientRect(),n=u5(i),a=t.left+(i.clientLeft+parseFloat(n.paddingLeft))*e.x,s=t.top+(i.clientTop+parseFloat(n.paddingTop))*e.y;u*=e.x,c*=e.y,d*=e.x,f*=e.y,u+=a,c+=s,i=ct(r=uK(i))}}return uU({width:d,height:f,x:u,y:c})}function cl(e,t){let r=u6(e).scrollLeft;return t?t.left+r:co(uJ(e)).left+r}function cu(e,t){let r=e.getBoundingClientRect();return{x:r.left+t.scrollLeft-cl(e,r),y:r.top+t.scrollTop}}let cc=new Set(["absolute","fixed"]);function cd(e,t,r){let n;if("viewport"===t)n=function(e,t){let r=uK(e),n=uJ(e),i=r.visualViewport,a=n.clientWidth,s=n.clientHeight,o=0,l=0;if(i){a=i.width,s=i.height;let e=u3();(!e||e&&"fixed"===t)&&(o=i.offsetLeft,l=i.offsetTop)}let u=cl(n);if(u<=0){let e=n.ownerDocument,t=e.body,r=getComputedStyle(t),i="CSS1Compat"===e.compatMode&&parseFloat(r.marginLeft)+parseFloat(r.marginRight)||0,s=Math.abs(n.clientWidth-t.clientWidth-i);s<=25&&(a-=s)}else u<=25&&(a+=u);return{width:a,height:s,x:o,y:l}}(e,r);else if("document"===t)n=function(e){let t=uJ(e),r=u6(e),n=e.ownerDocument.body,i=um(t.scrollWidth,t.clientWidth,n.scrollWidth,n.clientWidth),a=um(t.scrollHeight,t.clientHeight,n.scrollHeight,n.clientHeight),s=-r.scrollLeft+cl(e),o=-r.scrollTop;return"rtl"===u5(n).direction&&(s+=um(t.clientWidth,n.clientWidth)-i),{width:i,height:a,x:s,y:o}}(uJ(e));else if(uQ(t))n=function(e,t){let r=co(e,!0,"fixed"===t),n=r.top+e.clientTop,i=r.left+e.clientLeft,a=uW(e)?ci(e):uA(1),s=e.clientWidth*a.x,o=e.clientHeight*a.y;return{width:s,height:o,x:i*a.x,y:n*a.y}}(t,r);else{let r=cs(e);n={x:t.x-r.x,y:t.y-r.y,width:t.width,height:t.height}}return uU(n)}function cf(e){return"static"===u5(e).position}function ch(e,t){if(!uW(e)||"fixed"===u5(e).position)return null;if(t)return t(e);let r=e.offsetParent;return uJ(e)===r&&(r=r.ownerDocument.body),r}function cp(e,t){var r;let n=uK(e);if(u$(e))return n;if(!uW(e)){let t=u7(e);for(;t&&!u8(t);){if(uQ(t)&&!cf(t))return t;t=u7(t)}return n}let i=ch(e,t);for(;i&&(r=i,u_.has(uj(r)))&&cf(i);)i=ch(i,t);return i&&u8(i)&&cf(i)&&!u9(i)?n:i||function(e){let t=u7(e);for(;uW(t)&&!u8(t);){if(u9(t))return t;if(u$(t))break;t=u7(t)}return null}(e)||n}let cm=async function(e){let t=this.getOffsetParent||cp,r=this.getDimensions,n=await r(e.floating);return{reference:function(e,t,r){let n=uW(t),i=uJ(t),a="fixed"===r,s=co(e,!0,a,t),o={scrollLeft:0,scrollTop:0},l=uA(0);if(n||!n&&!a)if(("body"!==uj(t)||uY(i))&&(o=u6(t)),n){let e=co(t,!0,a,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else i&&(l.x=cl(i));a&&!n&&i&&(l.x=cl(i));let u=!i||n||a?uA(0):cu(i,o);return{x:s.left+o.scrollLeft-l.x-u.x,y:s.top+o.scrollTop-l.y-u.y,width:s.width,height:s.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:n.width,height:n.height}}},cv={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:r,offsetParent:n,strategy:i}=e,a="fixed"===i,s=uJ(n),o=!!t&&u$(t.floating);if(n===s||o&&a)return r;let l={scrollLeft:0,scrollTop:0},u=uA(1),c=uA(0),d=uW(n);if((d||!d&&!a)&&(("body"!==uj(n)||uY(s))&&(l=u6(n)),uW(n))){let e=co(n);u=ci(n),c.x=e.x+n.clientLeft,c.y=e.y+n.clientTop}let f=!s||d||a?uA(0):cu(s,l);return{width:r.width*u.x,height:r.height*u.y,x:r.x*u.x-l.scrollLeft*u.x+c.x+f.x,y:r.y*u.y-l.scrollTop*u.y+c.y+f.y}},getDocumentElement:uJ,getClippingRect:function(e){let{element:t,boundary:r,rootBoundary:n,strategy:i}=e,a=[..."clippingAncestors"===r?u$(t)?[]:function(e,t){let r=t.get(e);if(r)return r;let n=ce(e,[],!1).filter(e=>uQ(e)&&"body"!==uj(e)),i=null,a="fixed"===u5(e).position,s=a?u7(e):e;for(;uQ(s)&&!u8(s);){let t=u5(s),r=u9(s);r||"fixed"!==t.position||(i=null),(a?!r&&!i:!r&&"static"===t.position&&!!i&&cc.has(i.position)||uY(s)&&!r&&function e(t,r){let n=u7(t);return!(n===r||!uQ(n)||u8(n))&&("fixed"===u5(n).position||e(n,r))}(e,s))?n=n.filter(e=>e!==s):i=t,s=u7(s)}return t.set(e,n),n}(t,this._c):[].concat(r),n],s=a[0],o=a.reduce((e,r)=>{let n=cd(t,r,i);return e.top=um(n.top,e.top),e.right=up(n.right,e.right),e.bottom=up(n.bottom,e.bottom),e.left=um(n.left,e.left),e},cd(t,s,i));return{width:o.right-o.left,height:o.bottom-o.top,x:o.left,y:o.top}},getOffsetParent:cp,getElementRects:cm,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:r}=cr(e);return{width:t,height:r}},getScale:ci,isElement:uQ,isRTL:function(e){return"rtl"===u5(e).direction}};function cg(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function cA(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;if("function"==typeof DOMRect)return new DOMRect(e,t,r,n);let i={x:e,y:t,width:r,height:n,top:t,right:e+r,bottom:t+n,left:e};return{...i,toJSON:()=>i}}function cy(e){return/^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(e)}function cx(e){let t=window.devicePixelRatio||1;return Math.round(e*t)/t}var cB=ou(function(e){let{store:t,modal:r=!1,portal:n=!!r,preserveTabOrder:i=!0,autoFocusOnShow:a=!0,wrapperProps:s,fixed:o=!1,flip:l=!0,shift:u=0,slide:c=!0,overlap:d=!1,sameWidth:f=!1,fitViewport:h=!1,gutter:p,arrowPadding:m=4,overflowPadding:g=8,getAnchorRect:A,updatePosition:y,...x}=e,B=o0();sG(t=t||B,!1);let C=t.useState("arrowElement"),S=t.useState("anchorElement"),E=t.useState("disclosureElement"),T=t.useState("popoverElement"),b=t.useState("contentElement"),D=t.useState("placement"),M=t.useState("mounted"),w=t.useState("rendered"),F=(0,eP.useRef)(null),[R,I]=(0,eP.useState)(!1),{portalRef:P,domReady:L}=s7(n,x.portalRef),U=s2(A),G=s2(y),O=!!y;s1(()=>{if(!(null==T?void 0:T.isConnected))return;T.style.setProperty("--popover-overflow-padding","".concat(g,"px"));let e={contextElement:S||void 0,getBoundingClientRect:()=>{let e=null==U?void 0:U(S);if(e||!S){if(!e)return cA();let{x:t,y:r,width:n,height:i}=e;return cA(t,r,n,i)}return S.getBoundingClientRect()}},r=async()=>{var r,n,i,a;if(!M)return;C||(F.current=F.current||document.createElement("div"));let s=C||F.current,A=[(r={gutter:p,shift:u},void 0===(n=e=>{var t;let{placement:n}=e,i=((null==s?void 0:s.clientHeight)||0)/2,a="number"==typeof r.gutter?r.gutter+i:null!=(t=r.gutter)?t:i;return{crossAxis:n.split("-")[1]?void 0:r.shift,mainAxis:a,alignmentAxis:r.shift}})&&(n=0),{name:"offset",options:n,async fn(e){var t,r;let{x:i,y:a,placement:s,middlewareData:o}=e,l=await uk(e,n);return s===(null==(t=o.offset)?void 0:t.placement)&&null!=(r=o.arrow)&&r.alignmentOffset?{}:{x:i+l.x,y:a+l.y,data:{...l,placement:s}}}}),function(e){var t;if(!1===e.flip)return;let r="string"==typeof e.flip?e.flip.split(" "):void 0;return sG(!r||r.every(cy),!1),{name:"flip",options:t={padding:e.overflowPadding,fallbackPlacements:r},async fn(e){var r,n,i,a,s;let{placement:o,middlewareData:l,rects:u,initialPlacement:c,platform:d,elements:f}=e,{mainAxis:h=!0,crossAxis:p=!0,fallbackPlacements:m,fallbackStrategy:g="bestFit",fallbackAxisSideDirection:A="none",flipAlignment:y=!0,...x}=uB(t,e);if(null!=(r=l.arrow)&&r.alignmentOffset)return{};let B=uC(o),C=uD(c),S=uC(c)===c,E=await (null==d.isRTL?void 0:d.isRTL(f.floating)),T=m||(S||!y?[uP(c)]:function(e){let t=uP(e);return[uM(e),t,uM(t)]}(c)),b="none"!==A;!m&&b&&T.push(...function(e,t,r,n){let i=uS(e),a=function(e,t,r){switch(e){case"top":case"bottom":if(r)return t?uF:uw;return t?uw:uF;case"left":case"right":return t?uR:uI;default:return[]}}(uC(e),"start"===r,n);return i&&(a=a.map(e=>e+"-"+i),t&&(a=a.concat(a.map(uM)))),a}(c,y,A,E));let D=[c,...T],M=await uH(e,x),w=[],F=(null==(n=l.flip)?void 0:n.overflows)||[];if(h&&w.push(M[B]),p){let e=function(e,t,r){void 0===r&&(r=!1);let n=uS(e),i=uE(uD(e)),a=uT(i),s="x"===i?n===(r?"end":"start")?"right":"left":"start"===n?"bottom":"top";return t.reference[a]>t.floating[a]&&(s=uP(s)),[s,uP(s)]}(o,u,E);w.push(M[e[0]],M[e[1]])}if(F=[...F,{placement:o,overflows:w}],!w.every(e=>e<=0)){let e=((null==(i=l.flip)?void 0:i.index)||0)+1,t=D[e];if(t&&("alignment"!==p||C===uD(t)||F.every(e=>uD(e.placement)!==C||e.overflows[0]>0)))return{data:{index:e,overflows:F},reset:{placement:t}};let r=null==(a=F.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:a.placement;if(!r)switch(g){case"bestFit":{let e=null==(s=F.filter(e=>{if(b){let t=uD(e.placement);return t===C||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:s[0];e&&(r=e);break}case"initialPlacement":r=c}if(o!==r)return{reset:{placement:r}}}return{}}}}({flip:l,overflowPadding:g}),function(e){if(e.slide||e.overlap){var t,r;return{name:"shift",options:r={mainAxis:e.slide,crossAxis:e.overlap,padding:e.overflowPadding,limiter:(void 0===t&&(t={}),{options:t,fn(e){let{x:r,y:n,placement:i,rects:a,middlewareData:s}=e,{offset:o=0,mainAxis:l=!0,crossAxis:u=!0}=uB(t,e),c={x:r,y:n},d=uD(i),f=uE(d),h=c[f],p=c[d],m=uB(o,e),g="number"==typeof m?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(l){let e="y"===f?"height":"width",t=a.reference[f]-a.floating[e]+g.mainAxis,r=a.reference[f]+a.reference[e]-g.mainAxis;h<t?h=t:h>r&&(h=r)}if(u){var A,y;let e="y"===f?"width":"height",t=uN.has(uC(i)),r=a.reference[d]-a.floating[e]+(t&&(null==(A=s.offset)?void 0:A[d])||0)+(t?0:g.crossAxis),n=a.reference[d]+a.reference[e]+(t?0:(null==(y=s.offset)?void 0:y[d])||0)-(t?g.crossAxis:0);p<r?p=r:p>n&&(p=n)}return{[f]:h,[d]:p}}})},async fn(e){let{x:t,y:n,placement:i}=e,{mainAxis:a=!0,crossAxis:s=!1,limiter:o={fn:e=>{let{x:t,y:r}=e;return{x:t,y:r}}},...l}=uB(r,e),u={x:t,y:n},c=await uH(e,l),d=uD(uC(i)),f=uE(d),h=u[f],p=u[d];if(a){let e="y"===f?"top":"left",t="y"===f?"bottom":"right",r=h+c[e],n=h-c[t];h=um(r,up(h,n))}if(s){let e="y"===d?"top":"left",t="y"===d?"bottom":"right",r=p+c[e],n=p-c[t];p=um(r,up(p,n))}let m=o.fn({...e,[f]:h,[d]:p});return{...m,data:{x:m.x-t,y:m.y-n,enabled:{[f]:a,[d]:s}}}}}}}({slide:c,shift:u,overlap:d,overflowPadding:g}),function(e,t){if(e){let r;return{name:"arrow",options:r={element:e,padding:t.arrowPadding},async fn(e){let{x:t,y:n,placement:i,rects:a,platform:s,elements:o,middlewareData:l}=e,{element:u,padding:c=0}=uB(r,e)||{};if(null==u)return{};let d=uL(c),f={x:t,y:n},h=uE(uD(i)),p=uT(h),m=await s.getDimensions(u),g="y"===h,A=g?"clientHeight":"clientWidth",y=a.reference[p]+a.reference[h]-f[h]-a.floating[p],x=f[h]-a.reference[h],B=await (null==s.getOffsetParent?void 0:s.getOffsetParent(u)),C=B?B[A]:0;C&&await (null==s.isElement?void 0:s.isElement(B))||(C=o.floating[A]||a.floating[p]);let S=C/2-m[p]/2-1,E=up(d[g?"top":"left"],S),T=up(d[g?"bottom":"right"],S),b=C-m[p]-T,D=C/2-m[p]/2+(y/2-x/2),M=um(E,up(D,b)),w=!l.arrow&&null!=uS(i)&&D!==M&&a.reference[p]/2-(D<E?E:T)-m[p]/2<0,F=w?D<E?D-E:D-b:0;return{[h]:f[h]+F,data:{[h]:M,centerOffset:D-M-F,...w&&{alignmentOffset:F}},reset:w}}}}}(s,{arrowPadding:m}),{name:"size",options:a={padding:(i={sameWidth:f,fitViewport:h,overflowPadding:g}).overflowPadding,apply(e){let{elements:t,availableWidth:r,availableHeight:n,rects:a}=e,s=t.floating,o=Math.round(a.reference.width);r=Math.floor(r),n=Math.floor(n),s.style.setProperty("--popover-anchor-width","".concat(o,"px")),s.style.setProperty("--popover-available-width","".concat(r,"px")),s.style.setProperty("--popover-available-height","".concat(n,"px")),i.sameWidth&&(s.style.width="".concat(o,"px")),i.fitViewport&&(s.style.maxWidth="".concat(r,"px"),s.style.maxHeight="".concat(n,"px"))}},async fn(e){var t,r;let n,i,{placement:s,rects:o,platform:l,elements:u}=e,{apply:c=()=>{},...d}=uB(a,e),f=await uH(e,d),h=uC(s),p=uS(s),m="y"===uD(s),{width:g,height:A}=o.floating;"top"===h||"bottom"===h?(n=h,i=p===(await (null==l.isRTL?void 0:l.isRTL(u.floating))?"start":"end")?"left":"right"):(i=h,n="end"===p?"top":"bottom");let y=A-f.top-f.bottom,x=g-f.left-f.right,B=up(A-f[n],y),C=up(g-f[i],x),S=!e.middlewareData.shift,E=B,T=C;if(null!=(t=e.middlewareData.shift)&&t.enabled.x&&(T=x),null!=(r=e.middlewareData.shift)&&r.enabled.y&&(E=y),S&&!p){let e=um(f.left,0),t=um(f.right,0),r=um(f.top,0),n=um(f.bottom,0);m?T=g-2*(0!==e||0!==t?e+t:um(f.left,f.right)):E=A-2*(0!==r||0!==n?r+n:um(f.top,f.bottom))}await c({...e,availableWidth:T,availableHeight:E});let b=await l.getDimensions(u.floating);return g!==b.width||A!==b.height?{reset:{rects:!0}}:{}}}],y=await ((e,t,r)=>{let n=new Map,i={platform:cv,...r},a={...i.platform,_c:n};return uO(e,t,{...i,platform:a})})(e,T,{placement:D,strategy:o?"fixed":"absolute",middleware:A});null==t||t.setState("currentPlacement",y.placement),I(!0);let x=cx(y.x),B=cx(y.y);if(Object.assign(T.style,{top:"0",left:"0",transform:"translate3d(".concat(x,"px,").concat(B,"px,0)")}),s&&y.middlewareData.arrow){let{x:e,y:t}=y.middlewareData.arrow,r=y.placement.split("-")[0],n=s.clientWidth/2,i=s.clientHeight/2,a=null!=e?e+n:-n,o=null!=t?t+i:-i;T.style.setProperty("--popover-transform-origin",{top:"".concat(a,"px calc(100% + ").concat(i,"px)"),bottom:"".concat(a,"px ").concat(-i,"px"),left:"calc(100% + ".concat(n,"px) ").concat(o,"px"),right:"".concat(-n,"px ").concat(o,"px")}[r]),Object.assign(s.style,{left:null!=e?"".concat(e,"px"):"",top:null!=t?"".concat(t,"px"):"",[r]:"100%"})}},n=function(e,t,r,n){let i;void 0===n&&(n={});let{ancestorScroll:a=!0,ancestorResize:s=!0,elementResize:o="function"==typeof ResizeObserver,layoutShift:l="function"==typeof IntersectionObserver,animationFrame:u=!1}=n,c=cn(e),d=a||s?[...c?ce(c):[],...ce(t)]:[];d.forEach(e=>{a&&e.addEventListener("scroll",r,{passive:!0}),s&&e.addEventListener("resize",r)});let f=c&&l?function(e,t){let r,n=null,i=uJ(e);function a(){var e;clearTimeout(r),null==(e=n)||e.disconnect(),n=null}return!function s(o,l){void 0===o&&(o=!1),void 0===l&&(l=1),a();let u=e.getBoundingClientRect(),{left:c,top:d,width:f,height:h}=u;if(o||t(),!f||!h)return;let p=ug(d),m=ug(i.clientWidth-(c+f)),g={rootMargin:-p+"px "+-m+"px "+-ug(i.clientHeight-(d+h))+"px "+-ug(c)+"px",threshold:um(0,up(1,l))||1},A=!0;function y(t){let n=t[0].intersectionRatio;if(n!==l){if(!A)return s();n?s(!1,n):r=setTimeout(()=>{s(!1,1e-7)},1e3)}1!==n||cg(u,e.getBoundingClientRect())||s(),A=!1}try{n=new IntersectionObserver(y,{...g,root:i.ownerDocument})}catch(e){n=new IntersectionObserver(y,g)}n.observe(e)}(!0),a}(c,r):null,h=-1,p=null;o&&(p=new ResizeObserver(e=>{let[n]=e;n&&n.target===c&&p&&(p.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame(()=>{var e;null==(e=p)||e.observe(t)})),r()}),c&&!u&&p.observe(c),p.observe(t));let m=u?co(e):null;return u&&function t(){let n=co(e);m&&!cg(m,n)&&r(),m=n,i=requestAnimationFrame(t)}(),r(),()=>{var e;d.forEach(e=>{a&&e.removeEventListener("scroll",r),s&&e.removeEventListener("resize",r)}),null==f||f(),null==(e=p)||e.disconnect(),p=null,u&&cancelAnimationFrame(i)}}(e,T,async()=>{O?(await G({updatePosition:r}),I(!0)):await r()},{elementResize:"function"==typeof ResizeObserver});return()=>{I(!1),n()}},[t,w,T,C,S,T,D,M,L,o,l,u,c,d,f,h,p,m,g,U,O,G]),s1(()=>{if(!M||!L||!(null==T?void 0:T.isConnected)||!(null==b?void 0:b.isConnected))return;let e=()=>{T.style.zIndex=getComputedStyle(b).zIndex};e();let t=requestAnimationFrame(()=>{t=requestAnimationFrame(e)});return()=>cancelAnimationFrame(t)},[M,L,T,b]);let H=o?"fixed":"absolute";return x=s6(x,e=>(0,eI.jsx)("div",{...s,style:{position:H,top:0,left:0,width:"max-content",...null==s?void 0:s.style},ref:null==t?void 0:t.setPopoverElement,children:e}),[t,H,s]),x={"data-placing":!R||void 0,...x=s6(x,e=>(0,eI.jsx)(o2,{value:t,children:e}),[t]),style:{position:"relative",...x.style}},x=uf({store:t,modal:r,portal:n,preserveTabOrder:i,preserveTabOrderAnchor:E||S,autoFocusOnShow:R&&a,...x,portalRef:P})});uh(os(function(e){return ol("div",cB(e))}),o0);var cC=ou(function(e){let{store:t,modal:r,tabIndex:n,alwaysVisible:i,autoFocusOnHide:a=!0,hideOnInteractOutside:s=!0,...o}=e,l=o6();sG(t=t||l,!1);let u=t.useState("baseElement"),c=(0,eP.useRef)(!1),d=lb(t.tag,e=>null==e?void 0:e.renderedItems.length);return o=lk({store:t,alwaysVisible:i,...o}),o=cB({store:t,modal:r,alwaysVisible:i,backdrop:!1,autoFocusOnShow:!1,finalFocus:u,preserveTabOrderAnchor:null,unstable_treeSnapshotKey:d,...o,getPersistentElements(){var e;let n=(null==(e=o.getPersistentElements)?void 0:e.call(o))||[];if(!r||!t)return n;let{contentElement:i,baseElement:a}=t.getState();if(!a)return n;let s=sm(a),l=[];if((null==i?void 0:i.id)&&l.push('[aria-controls~="'.concat(i.id,'"]')),(null==a?void 0:a.id)&&l.push('[aria-controls~="'.concat(a.id,'"]')),!l.length)return[...n,a];let u=l.join(",");return[...n,...s.querySelectorAll(u)]},autoFocusOnHide:e=>!sO(a,e)&&(!c.current||(c.current=!1,!1)),hideOnInteractOutside(e){var r,n;let i=null==t?void 0:t.getState(),a=null==(r=null==i?void 0:i.contentElement)?void 0:r.id,o=null==(n=null==i?void 0:i.baseElement)?void 0:n.id;if(function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(!e)return!1;if("id"in e){let t=r.filter(Boolean).map(e=>'[aria-controls~="'.concat(e,'"]')).join(", ");return!!t&&e.matches(t)}return!1}(e.target,a,o))return!1;let l="function"==typeof s?s(e):s;return l&&(c.current="click"===e.type),l}})}),cS=uh(os(function(e){return ol("div",cC(e))}),o6);(0,eP.createContext)(null),(0,eP.createContext)(null);var cE=oc([ov],[og]),cT=cE.useContext;cE.useScopedContext,cE.useProviderContext,cE.ContextProvider,cE.ScopedContextProvider;var cb={id:null};function cD(e,t){return e.find(e=>t?!e.disabled&&e.id!==t:!e.disabled)}function cM(e,t){return e.filter(e=>e.rowId===t)}function cw(e){let t=[];for(let r of e){let e=t.find(e=>{var t;return(null==(t=e[0])?void 0:t.rowId)===r.rowId});e?e.push(r):t.push([r])}return t}function cF(e){let t=0;for(let{length:r}of e)r>t&&(t=r);return t}var cR=sJ()&&sj();function cI(){let{tag:e,...t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=ld(t.store,function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];if(e)return ln(e,"pick")(...r)}(e,["value","rtl"]));lf(t,r);let n=null==e?void 0:e.getState(),i=null==r?void 0:r.getState(),a=sk(t.activeId,null==i?void 0:i.activeId,t.defaultActiveId,null),s=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=null==(e=t.store)?void 0:e.getState(),n=function(){var e,t;let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};lf(r,r.store);let n=null==(e=r.store)?void 0:e.getState(),i=sk(r.items,null==n?void 0:n.items,r.defaultItems,[]),a=new Map(i.map(e=>[e.id,e])),s={items:i,renderedItems:sk(null==n?void 0:n.renderedItems,[])},o=null==(t=r.store)?void 0:t.__unstablePrivateStore,l=li({items:i,renderedItems:s.renderedItems},o),u=li(s,r.store),c=e=>{let t=function(e,t){let r=e.map((e,t)=>[t,e]),n=!1;return(r.sort((e,r)=>{var i;let[a,s]=e,[o,l]=r,u=t(s),c=t(l);return u!==c&&u&&c?(i=u,c.compareDocumentPosition(i)&Node.DOCUMENT_POSITION_PRECEDING)?(a>o&&(n=!0),-1):(a<o&&(n=!0),1):0}),n)?r.map(e=>{let[t,r]=e;return r}):e}(e,e=>e.element);l.setState("renderedItems",t),u.setState("renderedItems",t)};la(u,()=>ls(l)),la(l,()=>lu(l,["items"],e=>{u.setState("items",e.items)})),la(l,()=>lu(l,["renderedItems"],e=>{let t=!0,r=requestAnimationFrame(()=>{let{renderedItems:t}=u.getState();e.renderedItems!==t&&c(e.renderedItems)});if("function"!=typeof IntersectionObserver)return()=>cancelAnimationFrame(r);let n=new IntersectionObserver(()=>{if(t){t=!1;return}cancelAnimationFrame(r),r=requestAnimationFrame(()=>c(e.renderedItems))},{root:function(e){var t;let r=e.find(e=>!!e.element),n=[...e].reverse().find(e=>!!e.element),i=null==(t=null==r?void 0:r.element)?void 0:t.parentElement;for(;i&&(null==n?void 0:n.element);){let e=i;if(n&&e.contains(n.element))return i;i=i.parentElement}return sm(i).body}(e.renderedItems)});for(let t of e.renderedItems)t.element&&n.observe(t.element);return()=>{cancelAnimationFrame(r),n.disconnect()}}));let d=function(e,t){let r,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return t(t=>{let n=t.findIndex(t=>{let{id:r}=t;return r===e.id}),i=t.slice();if(-1!==n){let s={...r=t[n],...e};i[n]=s,a.set(e.id,s)}else i.push(e),a.set(e.id,e);return i}),()=>{t(t=>{if(!r)return n&&a.delete(e.id),t.filter(t=>{let{id:r}=t;return r!==e.id});let i=t.findIndex(t=>{let{id:r}=t;return r===e.id});if(-1===i)return t;let s=t.slice();return s[i]=r,a.set(e.id,r),s})}},f=e=>d(e,e=>l.setState("items",e),!0);return{...u,registerItem:f,renderItem:e=>sL(f(e),d(e,e=>l.setState("renderedItems",e))),item:e=>{if(!e)return null;let t=a.get(e);if(!t){let{items:r}=l.getState();(t=r.find(t=>t.id===e))&&a.set(e,t)}return t||null},__unstablePrivateStore:l}}(t),i=sk(t.activeId,null==r?void 0:r.activeId,t.defaultActiveId),a=li({...n.getState(),id:sk(t.id,null==r?void 0:r.id,"id-".concat(Math.random().toString(36).slice(2,8))),activeId:i,baseElement:sk(null==r?void 0:r.baseElement,null),includesBaseElement:sk(t.includesBaseElement,null==r?void 0:r.includesBaseElement,null===i),moves:sk(null==r?void 0:r.moves,0),orientation:sk(t.orientation,null==r?void 0:r.orientation,"both"),rtl:sk(t.rtl,null==r?void 0:r.rtl,!1),virtualFocus:sk(t.virtualFocus,null==r?void 0:r.virtualFocus,!1),focusLoop:sk(t.focusLoop,null==r?void 0:r.focusLoop,!1),focusWrap:sk(t.focusWrap,null==r?void 0:r.focusWrap,!1),focusShift:sk(t.focusShift,null==r?void 0:r.focusShift,!1)},n,t.store);la(a,()=>ll(a,["renderedItems","activeId"],e=>{a.setState("activeId",t=>{var r;return void 0!==t?t:null==(r=cD(e.renderedItems))?void 0:r.id})}));let s=function(){var e,t;let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"next",n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=a.getState(),{skip:s=0,activeId:o=i.activeId,focusShift:l=i.focusShift,focusLoop:u=i.focusLoop,focusWrap:c=i.focusWrap,includesBaseElement:d=i.includesBaseElement,renderedItems:f=i.renderedItems,rtl:h=i.rtl}=n,p="up"===r||"down"===r,m="next"===r||"down"===r,g=p?oz(function(e,t,r){let n=cF(e);for(let i of e)for(let e=0;e<n;e+=1){let n=i[e];if(!n||r&&n.disabled){let n=0===e&&r?cD(i):i[e-1];i[e]=n&&t!==n.id&&r?n:{id:"__EMPTY_ITEM__",disabled:!0,rowId:null==n?void 0:n.rowId}}}return e}(cw(f),o,l&&!s)):f;if(g=(m?h&&!p:!h||p)?oj(g):g,g=p?function(e){let t=cw(e),r=cF(t),n=[];for(let e=0;e<r;e+=1)for(let r of t){let t=r[e];t&&n.push({...t,rowId:t.rowId?"".concat(e):void 0})}return n}(g):g,null==o)return null==(e=cD(g))?void 0:e.id;let A=g.find(e=>e.id===o);if(!A)return null==(t=cD(g))?void 0:t.id;let y=g.some(e=>e.rowId),x=g.indexOf(A),B=g.slice(x+1),C=cM(B,A.rowId);if(s){let e=C.filter(e=>o?!e.disabled&&e.id!==o:!e.disabled),t=e.slice(s)[0]||e[e.length-1];return null==t?void 0:t.id}let S=u&&(p?"horizontal"!==u:"vertical"!==u),E=y&&c&&(p?"horizontal"!==c:"vertical"!==c),T=m?(!y||p)&&S&&d:!!p&&d;if(S){let e=cD(function(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=e.findIndex(e=>e.id===t);return[...e.slice(n+1),...r?[cb]:[],...e.slice(0,n)]}(E&&!T?g:cM(g,A.rowId),o,T),o);return null==e?void 0:e.id}if(E){let e=cD(T?C:B,o);return T?(null==e?void 0:e.id)||null:null==e?void 0:e.id}let b=cD(C,o);return!b&&T?null:null==b?void 0:b.id};return{...n,...a,setBaseElement:e=>a.setState("baseElement",e),setActiveId:e=>a.setState("activeId",e),move:e=>{void 0!==e&&(a.setState("activeId",e),a.setState("moves",e=>e+1))},first:()=>{var e;return null==(e=cD(a.getState().renderedItems))?void 0:e.id},last:()=>{var e;return null==(e=cD(oj(a.getState().renderedItems)))?void 0:e.id},next:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("next",e)),previous:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("previous",e)),down:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("down",e)),up:e=>(void 0!==e&&"number"==typeof e&&(e={skip:e}),s("up",e))}}({...t,activeId:a,includesBaseElement:sk(t.includesBaseElement,null==i?void 0:i.includesBaseElement,!0),orientation:sk(t.orientation,null==i?void 0:i.orientation,"vertical"),focusLoop:sk(t.focusLoop,null==i?void 0:i.focusLoop,!0),focusWrap:sk(t.focusWrap,null==i?void 0:i.focusWrap,!0),virtualFocus:sk(t.virtualFocus,null==i?void 0:i.virtualFocus,!0)}),o=function(){let{popover:e,...t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=ld(t.store,lc(e,["arrowElement","anchorElement","contentElement","popoverElement","disclosureElement"]));lf(t,r);let n=null==r?void 0:r.getState(),i=uu({...t,store:r}),a=sk(t.placement,null==n?void 0:n.placement,"bottom"),s=li({...i.getState(),placement:a,currentPlacement:a,anchorElement:sk(null==n?void 0:n.anchorElement,null),popoverElement:sk(null==n?void 0:n.popoverElement,null),arrowElement:sk(null==n?void 0:n.arrowElement,null),rendered:Symbol("rendered")},i,r);return{...i,...s,setAnchorElement:e=>s.setState("anchorElement",e),setPopoverElement:e=>s.setState("popoverElement",e),setArrowElement:e=>s.setState("arrowElement",e),render:()=>s.setState("rendered",Symbol("rendered"))}}({...t,placement:sk(t.placement,null==i?void 0:i.placement,"bottom-start")}),l=sk(t.value,null==i?void 0:i.value,t.defaultValue,""),u=sk(t.selectedValue,null==i?void 0:i.selectedValue,null==n?void 0:n.values,t.defaultSelectedValue,""),c=Array.isArray(u),d={...s.getState(),...o.getState(),value:l,selectedValue:u,resetValueOnSelect:sk(t.resetValueOnSelect,null==i?void 0:i.resetValueOnSelect,c),resetValueOnHide:sk(t.resetValueOnHide,null==i?void 0:i.resetValueOnHide,c&&!e),activeValue:null==i?void 0:i.activeValue},f=li(d,s,o,r);return cR&&la(f,()=>ll(f,["virtualFocus"],()=>{f.setState("virtualFocus",!1)})),la(f,()=>{if(e)return sL(ll(f,["selectedValue"],t=>{Array.isArray(t.selectedValue)&&e.setValues(t.selectedValue)}),ll(e,["values"],e=>{f.setState("selectedValue",e.values)}))}),la(f,()=>ll(f,["resetValueOnHide","mounted"],e=>{e.resetValueOnHide&&(e.mounted||f.setState("value",l))})),la(f,()=>ll(f,["open"],e=>{e.open||(f.setState("activeId",a),f.setState("moves",0))})),la(f,()=>ll(f,["moves","activeId"],(e,t)=>{e.moves===t.moves&&f.setState("activeValue",void 0)})),la(f,()=>lu(f,["moves","renderedItems"],(e,t)=>{if(e.moves===t.moves)return;let{activeId:r}=f.getState(),n=s.item(r);f.setState("activeValue",null==n?void 0:n.value)})),{...o,...s,...f,tag:e,setValue:e=>f.setState("value",e),resetValue:()=>f.setState("value",d.value),setSelectedValue:e=>f.setState("selectedValue",e)}}function cP(){var e,t,r,n,i,a;let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},[o,l]=lw(cI,s=function(e){var t;let r=cT();return{id:s3((t=e={...e,tag:void 0!==e.tag?e.tag:r}).id),...t}}(s));return s4(l,[(e=s).tag]),lM(o,e,"value","setValue"),lM(o,e,"selectedValue","setSelectedValue"),lM(o,e,"resetValueOnHide"),lM(o,e,"resetValueOnSelect"),Object.assign((n=o,s4(i=l,[(a=e).popover]),lM(n,a,"placement"),t=us(n,i,a),r=t,s4(l,[e.store]),lM(r,e,"items","setItems"),lM(t=r,e,"activeId","setActiveId"),lM(t,e,"includesBaseElement"),lM(t,e,"virtualFocus"),lM(t,e,"orientation"),lM(t,e,"rtl"),lM(t,e,"focusLoop"),lM(t,e,"focusWrap"),lM(t,e,"focusShift"),t),{tag:e.tag})}function cL(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=cP(e);return(0,eI.jsx)(o7,{value:t,children:e.children})}var cU=(0,eP.createContext)(void 0),cG=ou(function(e){let[t,r]=(0,eP.useState)();return sN(e={role:"group","aria-labelledby":t,...e=s6(e,e=>(0,eI.jsx)(cU.Provider,{value:r,children:e}),[])})});os(function(e){return ol("div",cG(e))});var cO=ou(function(e){let{store:t,...r}=e;return cG(r)});os(function(e){return ol("div",cO(e))});var cH=ou(function(e){let{store:t,...r}=e,n=o5();return sG(t=t||n,!1),"grid"===sb(t.useState("contentElement"))&&(r={role:"rowgroup",...r}),r=cO({store:t,...r})}),cN=os(function(e){return ol("div",cH(e))}),ck=ou(function(e){let t=(0,eP.useContext)(cU),r=s3(e.id);return s1(()=>(null==t||t(r),()=>null==t?void 0:t(void 0)),[t,r]),sN(e={id:r,"aria-hidden":!0,...e})});os(function(e){return ol("div",ck(e))});var cz=ou(function(e){let{store:t,...r}=e;return ck(r)});os(function(e){return ol("div",cz(e))});var cj=ou(function(e){return cz(e)}),cK=os(function(e){return ol("div",cj(e))}),cJ=e.i(38360);let cV={CASE_SENSITIVE_EQUAL:7,EQUAL:6,STARTS_WITH:5,WORD_STARTS_WITH:4,CONTAINS:3,ACRONYM:2,MATCHES:1,NO_MATCH:0},cQ=(e,t)=>String(e.rankedValue).localeCompare(String(t.rankedValue));function cW(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{keys:n,threshold:i=cV.MATCHES,baseSort:a=cQ,sorter:s=e=>e.sort((e,t)=>(function(e,t,r){let{rank:n,keyIndex:i}=e,{rank:a,keyIndex:s}=t;return n!==a?n>a?-1:1:i===s?r(e,t):i<s?-1:1})(e,t,a))}=r;return s(e.reduce(function(e,a,s){var o,l,u,c;let d=(o=a,l=n,u=t,c=r,l?(function(e,t){let r=[];for(let i=0,a=t.length;i<a;i++){var n;let a=t[i],s="string"==typeof(n=a)?cY:{...cY,...n},o=function(e,t){let r;if("object"==typeof t&&(t=t.key),"function"==typeof t)r=t(e);else if(null==e)r=null;else if(Object.hasOwnProperty.call(e,t))r=e[t];else{if(t.includes("."))return function(e,t){let r=e.split("."),n=[t];for(let e=0,t=r.length;e<t;e++){let t=r[e],i=[];for(let e=0,r=n.length;e<r;e++){let r=n[e];if(null!=r)if(Object.hasOwnProperty.call(r,t)){let e=r[t];null!=e&&i.push(e)}else"*"===t&&(i=i.concat(r))}n=i}return Array.isArray(n[0])?[].concat(...n):n}(t,e);r=null}return null==r?[]:Array.isArray(r)?r:[String(r)]}(e,a);for(let e=0,t=o.length;e<t;e++)r.push({itemValue:o[e],attributes:s})}return r})(o,l).reduce((e,t,r)=>{let{rank:n,rankedValue:i,keyIndex:a,keyThreshold:s}=e,{itemValue:o,attributes:l}=t,d=cX(o,u,c),f=i,{minRanking:h,maxRanking:p,threshold:m}=l;return d<h&&d>=cV.MATCHES?d=h:d>p&&(d=p),d>n&&(n=d,a=r,s=m,f=o),{rankedValue:f,rank:n,keyIndex:a,keyThreshold:s}},{rankedValue:o,rank:cV.NO_MATCH,keyIndex:-1,keyThreshold:c.threshold}):{rankedValue:o,rank:cX(o,u,c),keyIndex:-1,keyThreshold:c.threshold}),{rank:f,keyThreshold:h=i}=d;return f>=h&&e.push({...d,item:a,index:s}),e},[])).map(e=>{let{item:t}=e;return t})}function cX(e,t,r){if(e=cZ(e,r),(t=cZ(t,r)).length>e.length)return cV.NO_MATCH;if(e===t)return cV.CASE_SENSITIVE_EQUAL;let n=function*(e,t){let r=-1;for(;(r=e.indexOf(t,r+1))>-1;)yield r;return -1}(e=e.toLowerCase(),t=t.toLowerCase()),i=n.next(),a=i.value;if(e.length===t.length&&0===a)return cV.EQUAL;if(0===a)return cV.STARTS_WITH;let s=i;for(;!s.done;){if(s.value>0&&" "===e[s.value-1])return cV.WORD_STARTS_WITH;s=n.next()}return a>0?cV.CONTAINS:1===t.length?cV.NO_MATCH:(function(e){let t="",r=" ";for(let n=0;n<e.length;n++){let i=e.charAt(n),a=" "===i||"-"===i;" "!==r&&"-"!==r||a||(t+=i),r=i}return t})(e).includes(t)?cV.ACRONYM:function(e,t){let r=0,n=0;function i(e,t,n){for(let i=n,a=t.length;i<a;i++)if(t[i]===e)return r+=1,i+1;return -1}let a=i(t[0],e,0);if(a<0)return cV.NO_MATCH;n=a;for(let r=1,a=t.length;r<a;r++)if(!((n=i(t[r],e,n))>-1))return cV.NO_MATCH;var s=n-a;let o=r/t.length;return cV.MATCHES+1/s*o}(e,t)}function cZ(e,t){let{keepDiacritics:r}=t;return e="".concat(e),r||(e=(0,cJ.default)(e)),e}cW.rankings=cV;let cY={maxRanking:1/0,minRanking:-1/0};var c_=e.i(29402);let cq=new Set(["SkiFree","SkiFree_Daily","SkiFree_Randomizer"]),c$={"missions.vl2":"Official","TR2final105-client.vl2":"Team Rabbit 2","z_mappacks/CTF/Classic_maps_v1.vl2":"Classic","z_mappacks/CTF/DynamixFinalPack.vl2":"Official","z_mappacks/CTF/KryMapPack_b3EDIT.vl2":"KryMapPack","z_mappacks/CTF/S5maps.vl2":"S5","z_mappacks/CTF/S8maps.vl2":"S8","z_mappacks/CTF/TWL-MapPack.vl2":"TWL","z_mappacks/CTF/TWL-MapPackEDIT.vl2":"TWL","z_mappacks/CTF/TWL2-MapPack.vl2":"TWL2","z_mappacks/CTF/TWL2-MapPackEDIT.vl2":"TWL2","z_mappacks/TWL_T2arenaOfficialMaps.vl2":"Arena","z_mappacks/z_DMP2-V0.6.vl2":"DMP2 (Discord Map Pack)","z_mappacks/zDMP-4.7.3DX.vl2":"DMP (Discord Map Pack)"},c0={"z_mappacks/DM":"DM","z_mappacks/LCTF":"LCTF","z_mappacks/Lak":"LakRabbit"},c1=(0,aJ.getMissionList)().filter(e=>!cq.has(e)).map(e=>{var t,r;let n=(0,aJ.getMissionInfo)(e),[i]=(0,aJ.getSourceAndPath)(n.resourcePath),a=(e=>{let t=e.match(/^(.*)(\/[^/]+)$/);return t?t[1]:""})(i),s=null!=(r=null!=(t=c$[i])?t:c0[a])?r:null;return{resourcePath:n.resourcePath,missionName:e,displayName:n.displayName,sourcePath:i,groupName:s,missionTypes:n.missionTypes}}),c2=new Map(c1.map(e=>[e.missionName,e])),c9=function(e){let t=new Map;for(let n of e){var r;let e=null!=(r=t.get(n.groupName))?r:[];e.push(n),t.set(n.groupName,e)}return t.forEach((e,r)=>{t.set(r,(0,c_.default)(e,[e=>(e.displayName||e.missionName).toLowerCase()],["asc"]))}),(0,c_.default)(Array.from(t.entries()),[e=>{let[t]=e;return"Official"===t?0:null==t?2:1},e=>{let[t]=e;return t?t.toLowerCase():""}],["asc","asc"])}(c1),c3="undefined"!=typeof navigator&&/Mac|iPhone|iPad|iPod/.test(navigator.platform);function c4(e){let{mission:t}=e;return(0,eI.jsxs)(eI.Fragment,{children:[(0,eI.jsxs)("span",{className:"MissionSelect-itemHeader",children:[(0,eI.jsx)("span",{className:"MissionSelect-itemName",children:t.displayName||t.missionName}),t.missionTypes.length>0&&(0,eI.jsx)("span",{className:"MissionSelect-itemTypes",children:t.missionTypes.map(e=>(0,eI.jsx)("span",{className:"MissionSelect-itemType",children:e},e))})]}),(0,eI.jsx)("span",{className:"MissionSelect-itemMissionName",children:t.missionName})]})}function c8(e){let{value:t,onChange:r}=e,[n,i]=(0,eP.useState)(""),a=(0,eP.useRef)(null),s=cP({resetValueOnHide:!0,selectedValue:t,setSelectedValue:e=>{e&&r(e)},setValue:e=>{(0,eP.startTransition)(()=>i(e))}});(0,eP.useEffect)(()=>{let e=e=>{if("k"===e.key&&(e.metaKey||e.ctrlKey)){var t;e.preventDefault(),null==(t=a.current)||t.focus(),s.show()}};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[s]);let o=c2.get(t),l=(0,eP.useMemo)(()=>n?{type:"flat",missions:cW(c1,n,{keys:["displayName","missionName"]})}:{type:"grouped",groups:c9},[n]),u=o?o.displayName||o.missionName:t,c="flat"===l.type?0===l.missions.length:0===l.groups.length;return(0,eI.jsxs)(cL,{store:s,children:[(0,eI.jsxs)("div",{className:"MissionSelect-inputWrapper",children:[(0,eI.jsx)(lv,{ref:a,autoSelect:!0,placeholder:u,className:"MissionSelect-input",onFocus:()=>{document.exitPointerLock(),s.show()}}),(0,eI.jsx)("kbd",{className:"MissionSelect-shortcut",children:c3?"⌘K":"^K"})]}),(0,eI.jsx)(cS,{gutter:4,fitViewport:!0,className:"MissionSelect-popover",children:(0,eI.jsxs)(lz,{className:"MissionSelect-list",children:["flat"===l.type?l.missions.map(e=>(0,eI.jsx)(lP,{value:e.missionName,className:"MissionSelect-item",focusOnHover:!0,children:(0,eI.jsx)(c4,{mission:e})},e.missionName)):l.groups.map(e=>{let[t,r]=e;return t?(0,eI.jsxs)(cN,{className:"MissionSelect-group",children:[(0,eI.jsx)(cK,{className:"MissionSelect-groupLabel",children:t}),r.map(e=>(0,eI.jsx)(lP,{value:e.missionName,className:"MissionSelect-item",focusOnHover:!0,children:(0,eI.jsx)(c4,{mission:e})},e.missionName))]},t):(0,eI.jsx)(eP.Fragment,{children:r.map(e=>(0,eI.jsx)(lP,{value:e.missionName,className:"MissionSelect-item",focusOnHover:!0,children:(0,eI.jsx)(c4,{mission:e})},e.missionName))},"ungrouped")}),c&&(0,eI.jsx)("div",{className:"MissionSelect-noResults",children:"No missions found"})]})})]})}function c5(e){let{missionName:t,onChangeMission:r}=e,{fogEnabled:n,setFogEnabled:i,fov:a,setFov:s,audioEnabled:o,setAudioEnabled:l,animationEnabled:u,setAnimationEnabled:c}=(0,n$.useSettings)(),{speedMultiplier:d,setSpeedMultiplier:f}=(0,n$.useControls)(),{debugMode:h,setDebugMode:p}=(0,n$.useDebug)();return(0,eI.jsxs)("div",{id:"controls",onKeyDown:e=>e.stopPropagation(),onPointerDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:[(0,eI.jsx)(c8,{value:t,onChange:r}),(0,eI.jsxs)("div",{className:"CheckboxField",children:[(0,eI.jsx)("input",{id:"fogInput",type:"checkbox",checked:n,onChange:e=>{i(e.target.checked)}}),(0,eI.jsx)("label",{htmlFor:"fogInput",children:"Fog?"})]}),(0,eI.jsxs)("div",{className:"CheckboxField",children:[(0,eI.jsx)("input",{id:"audioInput",type:"checkbox",checked:o,onChange:e=>{l(e.target.checked)}}),(0,eI.jsx)("label",{htmlFor:"audioInput",children:"Audio?"})]}),(0,eI.jsxs)("div",{className:"CheckboxField",children:[(0,eI.jsx)("input",{id:"animationInput",type:"checkbox",checked:u,onChange:e=>{c(e.target.checked)}}),(0,eI.jsx)("label",{htmlFor:"animationInput",children:"Animation?"})]}),(0,eI.jsxs)("div",{className:"CheckboxField",children:[(0,eI.jsx)("input",{id:"debugInput",type:"checkbox",checked:h,onChange:e=>{p(e.target.checked)}}),(0,eI.jsx)("label",{htmlFor:"debugInput",children:"Debug?"})]}),(0,eI.jsxs)("div",{className:"Field",children:[(0,eI.jsx)("label",{htmlFor:"fovInput",children:"FOV"}),(0,eI.jsx)("input",{id:"fovInput",type:"range",min:75,max:120,step:5,value:a,onChange:e=>s(parseInt(e.target.value))}),(0,eI.jsx)("output",{htmlFor:"speedInput",children:a})]}),(0,eI.jsxs)("div",{className:"Field",children:[(0,eI.jsx)("label",{htmlFor:"speedInput",children:"Speed"}),(0,eI.jsx)("input",{id:"speedInput",type:"range",min:.1,max:5,step:.05,value:d,onChange:e=>f(parseFloat(e.target.value))})]})]})}let c6=eP.forwardRef((e,t)=>{let{envMap:r,resolution:n=256,frames:i=1/0,makeDefault:a,children:s,...o}=e,l=(0,eJ.useThree)(e=>{let{set:t}=e;return t}),u=(0,eJ.useThree)(e=>{let{camera:t}=e;return t}),c=(0,eJ.useThree)(e=>{let{size:t}=e;return t}),d=eP.useRef(null);eP.useImperativeHandle(t,()=>d.current,[]);let f=eP.useRef(null),h=function(e,t,r){let n=(0,eJ.useThree)(e=>e.size),i=(0,eJ.useThree)(e=>e.viewport),a="number"==typeof e?e:n.width*i.dpr,s=n.height*i.dpr,o=("number"==typeof e?void 0:e)||{},{samples:l=0,depth:u,...c}=o,d=null!=u?u:o.depthBuffer,f=eP.useMemo(()=>{let e=new eO.WebGLRenderTarget(a,s,{minFilter:eO.LinearFilter,magFilter:eO.LinearFilter,type:eO.HalfFloatType,...c});return d&&(e.depthTexture=new eO.DepthTexture(a,s,eO.FloatType)),e.samples=l,e},[]);return eP.useLayoutEffect(()=>{f.setSize(a,s),l&&(f.samples=l)},[l,f,a,s]),eP.useEffect(()=>()=>f.dispose(),[]),f}(n);eP.useLayoutEffect(()=>{o.manual||(d.current.aspect=c.width/c.height)},[c,o]),eP.useLayoutEffect(()=>{d.current.updateProjectionMatrix()});let p=0,m=null,g="function"==typeof s;return(0,eV.useFrame)(e=>{g&&(i===1/0||p<i)&&(f.current.visible=!1,e.gl.setRenderTarget(h),m=e.scene.background,r&&(e.scene.background=r),e.gl.render(e.scene,d.current),e.scene.background=m,e.gl.setRenderTarget(null),f.current.visible=!0,p++)}),eP.useLayoutEffect(()=>{if(a)return l(()=>({camera:d.current})),()=>l(()=>({camera:u}))},[d,a,l]),eP.createElement(eP.Fragment,null,eP.createElement("perspectiveCamera",(0,ii.default)({ref:d},o),!g&&s),eP.createElement("group",{ref:f},g&&s(h.texture)))});function c7(){let{fov:e}=(0,n$.useSettings)();return(0,eI.jsx)(c6,{makeDefault:!0,position:[0,256,0],fov:e})}var de=e.i(51434),dt=e.i(81405);function dr(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}function dn(e){let{showPanel:t=0,className:r,parent:n}=e,i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2?arguments[2]:void 0,[n,i]=eP.useState();return eP.useLayoutEffect(()=>{let t=e();return i(t),dr(r,t),()=>dr(r,null)},t),n}(()=>new dt.default,[]);return eP.useEffect(()=>{if(i){let e=n&&n.current||document.body;i.showPanel(t),null==e||e.appendChild(i.dom);let a=(null!=r?r:"").split(" ").filter(e=>e);a.length&&i.dom.classList.add(...a);let s=(0,eU.j)(()=>i.begin()),o=(0,eU.k)(()=>i.end());return()=>{a.length&&i.dom.classList.remove(...a),null==e||e.removeChild(i.dom),s(),o()}}},[n,i,r,t]),null}var di=e.i(60099);function da(){let{debugMode:e}=(0,n$.useDebug)(),t=(0,eP.useRef)(null);return(0,eP.useEffect)(()=>{let e=t.current;e&&e.setColors("rgb(153, 255, 0)","rgb(0, 153, 255)","rgb(255, 153, 0)")}),e?(0,eI.jsxs)(eI.Fragment,{children:[(0,eI.jsx)(dn,{className:"StatsPanel"}),(0,eI.jsx)("axesHelper",{ref:t,args:[70],renderOrder:999,children:(0,eI.jsx)("lineBasicMaterial",{depthTest:!1,depthWrite:!1,fog:!1,vertexColors:!0})}),(0,eI.jsx)(di.Html,{position:[80,0,0],center:!0,children:(0,eI.jsx)("span",{className:"AxisLabel","data-axis":"y",children:"Y"})}),(0,eI.jsx)(di.Html,{position:[0,80,0],center:!0,children:(0,eI.jsx)("span",{className:"AxisLabel","data-axis":"z",children:"Z"})}),(0,eI.jsx)(di.Html,{position:[0,0,80],center:!0,children:(0,eI.jsx)("span",{className:"AxisLabel","data-axis":"x",children:"X"})})]}):null}let ds=new a9;function dl(){let e=(0,eL.useSearchParams)(),t=(0,eL.useRouter)(),[r,n]=(0,eP.useState)(e.get("mission")||"TWL2_WoodyMyrk"),[i,a]=(0,eP.useState)(0),[s,o]=(0,eP.useState)(!0),l=i<1;(0,eP.useEffect)(()=>{if(l)o(!0);else{let e=setTimeout(()=>o(!1),500);return()=>clearTimeout(e)}},[l]),(0,eP.useEffect)(()=>(window.setMissionName=n,window.getMissionList=aJ.getMissionList,window.getMissionInfo=aJ.getMissionInfo,()=>{delete window.setMissionName,delete window.getMissionList,delete window.getMissionInfo}),[]),(0,eP.useEffect)(()=>{let e=new URLSearchParams;e.set("mission",r),t.replace("?".concat(e.toString()),{scroll:!1})},[r,t]);let u=(0,eP.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;a(t)},[]);return(0,eI.jsx)(nj,{client:ds,children:(0,eI.jsx)("main",{children:(0,eI.jsxs)(n$.SettingsProvider,{children:[(0,eI.jsxs)("div",{id:"canvasContainer",children:[s&&(0,eI.jsxs)("div",{id:"loadingIndicator","data-complete":!l,children:[(0,eI.jsx)("div",{className:"LoadingSpinner"}),(0,eI.jsx)("div",{className:"LoadingProgress",children:(0,eI.jsx)("div",{className:"LoadingProgress-bar",style:{width:"".concat(100*i,"%")}})}),(0,eI.jsxs)("div",{className:"LoadingProgress-text",children:[Math.round(100*i),"%"]})]}),(0,eI.jsxs)(eK,{shadows:!0,frameloop:"always",children:[(0,eI.jsx)(aO,{children:(0,eI.jsxs)(de.AudioProvider,{children:[(0,eI.jsx)(aX,{name:r,onLoadingChange:u},r),(0,eI.jsx)(c7,{}),(0,eI.jsx)(da,{}),(0,eI.jsx)(sh,{})]})}),(0,eI.jsx)(rj,{children:(0,eI.jsx)(rJ,{intensity:3,aoRadius:3,quality:"performance"})})]})]}),(0,eI.jsx)(c5,{missionName:r,onChangeMission:n})]})})})}function du(){return(0,eI.jsx)(eP.Suspense,{children:(0,eI.jsx)(dl,{})})}}]);