Files
lit-examples/assets/mode-ar-e_XGWu4S.js
2026-07-05 02:38:01 +00:00

8727 lines
3.6 MiB
Plaintext

import"./aframe-forcegraph-component-B3vzsuem.js";import{c as pp}from"./_commonjsHelpers-Cpj98o6Y.js";import{i as mp}from"./Paired-C4wB-ooD.js";import"./three.module-Unazwo7z.js";import"./data-bind-mapper-D9QKwI5o.js";var Dp={exports:{}},hd={exports:{}},_u;function yp(){return _u||(_u=1,function(_i,Ln){var xn={};(function(ng,dn){_i.exports=dn()})(self,()=>(()=>{var Ir={"./node_modules/an-array/index.js":_A=>{var O=Object.prototype.toString;_A.exports=d;function d(s){return s.BYTES_PER_ELEMENT&&O.call(s.buffer)==="[object ArrayBuffer]"||Array.isArray(s)}},"./node_modules/as-number/index.js":_A=>{_A.exports=function(d,s){return typeof d=="number"?d:typeof s=="number"?s:0}},"./node_modules/base64-js/index.js":(_A,O)=>{O.byteLength=h,O.toByteArray=m,O.fromByteArray=R;for(var d=[],s=[],z=typeof Uint8Array<"u"?Uint8Array:Array,_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",T=0,v=_.length;T<v;++T)d[T]=_[T],s[_.charCodeAt(T)]=T;s[45]=62,s[95]=63;function D(N){var Y=N.length;if(Y%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var G=N.indexOf("=");G===-1&&(G=Y);var x=G===Y?0:4-G%4;return[G,x]}function h(N){var Y=D(N),G=Y[0],x=Y[1];return(G+x)*3/4-x}function p(N,Y,G){return(Y+G)*3/4-G}function m(N){var Y,G=D(N),x=G[0],U=G[1],j=new z(p(N,x,U)),Z=0,CA=U>0?x-4:x,QA;for(QA=0;QA<CA;QA+=4)Y=s[N.charCodeAt(QA)]<<18|s[N.charCodeAt(QA+1)]<<12|s[N.charCodeAt(QA+2)]<<6|s[N.charCodeAt(QA+3)],j[Z++]=Y>>16&255,j[Z++]=Y>>8&255,j[Z++]=Y&255;return U===2&&(Y=s[N.charCodeAt(QA)]<<2|s[N.charCodeAt(QA+1)]>>4,j[Z++]=Y&255),U===1&&(Y=s[N.charCodeAt(QA)]<<10|s[N.charCodeAt(QA+1)]<<4|s[N.charCodeAt(QA+2)]>>2,j[Z++]=Y>>8&255,j[Z++]=Y&255),j}function u(N){return d[N>>18&63]+d[N>>12&63]+d[N>>6&63]+d[N&63]}function l(N,Y,G){for(var x,U=[],j=Y;j<G;j+=3)x=(N[j]<<16&16711680)+(N[j+1]<<8&65280)+(N[j+2]&255),U.push(u(x));return U.join("")}function R(N){for(var Y,G=N.length,x=G%3,U=[],j=16383,Z=0,CA=G-x;Z<CA;Z+=j)U.push(l(N,Z,Z+j>CA?CA:Z+j));return x===1?(Y=N[G-1],U.push(d[Y>>2]+d[Y<<4&63]+"==")):x===2&&(Y=(N[G-2]<<8)+N[G-1],U.push(d[Y>>10]+d[Y>>4&63]+d[Y<<2&63]+"=")),U.join("")}},"./node_modules/buffer-equal/index.js":(_A,O,d)=>{var s=d("./node_modules/buffer/index.js").Buffer;_A.exports=function(z,_){if(s.isBuffer(z)&&s.isBuffer(_)){if(typeof z.equals=="function")return z.equals(_);if(z.length!==_.length)return!1;for(var T=0;T<z.length;T++)if(z[T]!==_[T])return!1;return!0}}},"./node_modules/buffer/index.js":(_A,O,d)=>{/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/const s=d("./node_modules/base64-js/index.js"),z=d("./node_modules/ieee754/index.js"),_=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;O.Buffer=h,O.SlowBuffer=j,O.INSPECT_MAX_BYTES=50;const T=2147483647;O.kMaxLength=T,h.TYPED_ARRAY_SUPPORT=v(),!h.TYPED_ARRAY_SUPPORT&&typeof console<"u"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function v(){try{const aA=new Uint8Array(1),H={foo:function(){return 42}};return Object.setPrototypeOf(H,Uint8Array.prototype),Object.setPrototypeOf(aA,H),aA.foo()===42}catch{return!1}}Object.defineProperty(h.prototype,"parent",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.buffer}}),Object.defineProperty(h.prototype,"offset",{enumerable:!0,get:function(){if(h.isBuffer(this))return this.byteOffset}});function D(aA){if(aA>T)throw new RangeError('The value "'+aA+'" is invalid for option "size"');const H=new Uint8Array(aA);return Object.setPrototypeOf(H,h.prototype),H}function h(aA,H,k){if(typeof aA=="number"){if(typeof H=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return l(aA)}return p(aA,H,k)}h.poolSize=8192;function p(aA,H,k){if(typeof aA=="string")return R(aA,H);if(ArrayBuffer.isView(aA))return Y(aA);if(aA==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof aA);if(vA(aA,ArrayBuffer)||aA&&vA(aA.buffer,ArrayBuffer)||typeof SharedArrayBuffer<"u"&&(vA(aA,SharedArrayBuffer)||aA&&vA(aA.buffer,SharedArrayBuffer)))return G(aA,H,k);if(typeof aA=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');const DA=aA.valueOf&&aA.valueOf();if(DA!=null&&DA!==aA)return h.from(DA,H,k);const YA=x(aA);if(YA)return YA;if(typeof Symbol<"u"&&Symbol.toPrimitive!=null&&typeof aA[Symbol.toPrimitive]=="function")return h.from(aA[Symbol.toPrimitive]("string"),H,k);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof aA)}h.from=function(aA,H,k){return p(aA,H,k)},Object.setPrototypeOf(h.prototype,Uint8Array.prototype),Object.setPrototypeOf(h,Uint8Array);function m(aA){if(typeof aA!="number")throw new TypeError('"size" argument must be of type number');if(aA<0)throw new RangeError('The value "'+aA+'" is invalid for option "size"')}function u(aA,H,k){return m(aA),aA<=0?D(aA):H!==void 0?typeof k=="string"?D(aA).fill(H,k):D(aA).fill(H):D(aA)}h.alloc=function(aA,H,k){return u(aA,H,k)};function l(aA){return m(aA),D(aA<0?0:U(aA)|0)}h.allocUnsafe=function(aA){return l(aA)},h.allocUnsafeSlow=function(aA){return l(aA)};function R(aA,H){if((typeof H!="string"||H==="")&&(H="utf8"),!h.isEncoding(H))throw new TypeError("Unknown encoding: "+H);const k=Z(aA,H)|0;let DA=D(k);const YA=DA.write(aA,H);return YA!==k&&(DA=DA.slice(0,YA)),DA}function N(aA){const H=aA.length<0?0:U(aA.length)|0,k=D(H);for(let DA=0;DA<H;DA+=1)k[DA]=aA[DA]&255;return k}function Y(aA){if(vA(aA,Uint8Array)){const H=new Uint8Array(aA);return G(H.buffer,H.byteOffset,H.byteLength)}return N(aA)}function G(aA,H,k){if(H<0||aA.byteLength<H)throw new RangeError('"offset" is outside of buffer bounds');if(aA.byteLength<H+(k||0))throw new RangeError('"length" is outside of buffer bounds');let DA;return H===void 0&&k===void 0?DA=new Uint8Array(aA):k===void 0?DA=new Uint8Array(aA,H):DA=new Uint8Array(aA,H,k),Object.setPrototypeOf(DA,h.prototype),DA}function x(aA){if(h.isBuffer(aA)){const H=U(aA.length)|0,k=D(H);return k.length===0||aA.copy(k,0,0,H),k}if(aA.length!==void 0)return typeof aA.length!="number"||ie(aA.length)?D(0):N(aA);if(aA.type==="Buffer"&&Array.isArray(aA.data))return N(aA.data)}function U(aA){if(aA>=T)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+T.toString(16)+" bytes");return aA|0}function j(aA){return+aA!=aA&&(aA=0),h.alloc(+aA)}h.isBuffer=function(H){return H!=null&&H._isBuffer===!0&&H!==h.prototype},h.compare=function(H,k){if(vA(H,Uint8Array)&&(H=h.from(H,H.offset,H.byteLength)),vA(k,Uint8Array)&&(k=h.from(k,k.offset,k.byteLength)),!h.isBuffer(H)||!h.isBuffer(k))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(H===k)return 0;let DA=H.length,YA=k.length;for(let ue=0,De=Math.min(DA,YA);ue<De;++ue)if(H[ue]!==k[ue]){DA=H[ue],YA=k[ue];break}return DA<YA?-1:YA<DA?1:0},h.isEncoding=function(H){switch(String(H).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},h.concat=function(H,k){if(!Array.isArray(H))throw new TypeError('"list" argument must be an Array of Buffers');if(H.length===0)return h.alloc(0);let DA;if(k===void 0)for(k=0,DA=0;DA<H.length;++DA)k+=H[DA].length;const YA=h.allocUnsafe(k);let ue=0;for(DA=0;DA<H.length;++DA){let De=H[DA];if(vA(De,Uint8Array))ue+De.length>YA.length?(h.isBuffer(De)||(De=h.from(De)),De.copy(YA,ue)):Uint8Array.prototype.set.call(YA,De,ue);else if(h.isBuffer(De))De.copy(YA,ue);else throw new TypeError('"list" argument must be an Array of Buffers');ue+=De.length}return YA};function Z(aA,H){if(h.isBuffer(aA))return aA.length;if(ArrayBuffer.isView(aA)||vA(aA,ArrayBuffer))return aA.byteLength;if(typeof aA!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof aA);const k=aA.length,DA=arguments.length>2&&arguments[2]===!0;if(!DA&&k===0)return 0;let YA=!1;for(;;)switch(H){case"ascii":case"latin1":case"binary":return k;case"utf8":case"utf-8":return Ao(aA).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k*2;case"hex":return k>>>1;case"base64":return Kt(aA).length;default:if(YA)return DA?-1:Ao(aA).length;H=(""+H).toLowerCase(),YA=!0}}h.byteLength=Z;function CA(aA,H,k){let DA=!1;if((H===void 0||H<0)&&(H=0),H>this.length||((k===void 0||k>this.length)&&(k=this.length),k<=0)||(k>>>=0,H>>>=0,k<=H))return"";for(aA||(aA="utf8");;)switch(aA){case"hex":return Ye(this,H,k);case"utf8":case"utf-8":return HA(this,H,k);case"ascii":return Oe(this,H,k);case"latin1":case"binary":return ye(this,H,k);case"base64":return NA(this,H,k);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return Et(this,H,k);default:if(DA)throw new TypeError("Unknown encoding: "+aA);aA=(aA+"").toLowerCase(),DA=!0}}h.prototype._isBuffer=!0;function QA(aA,H,k){const DA=aA[H];aA[H]=aA[k],aA[k]=DA}h.prototype.swap16=function(){const H=this.length;if(H%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let k=0;k<H;k+=2)QA(this,k,k+1);return this},h.prototype.swap32=function(){const H=this.length;if(H%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let k=0;k<H;k+=4)QA(this,k,k+3),QA(this,k+1,k+2);return this},h.prototype.swap64=function(){const H=this.length;if(H%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let k=0;k<H;k+=8)QA(this,k,k+7),QA(this,k+1,k+6),QA(this,k+2,k+5),QA(this,k+3,k+4);return this},h.prototype.toString=function(){const H=this.length;return H===0?"":arguments.length===0?HA(this,0,H):CA.apply(this,arguments)},h.prototype.toLocaleString=h.prototype.toString,h.prototype.equals=function(H){if(!h.isBuffer(H))throw new TypeError("Argument must be a Buffer");return this===H?!0:h.compare(this,H)===0},h.prototype.inspect=function(){let H="";const k=O.INSPECT_MAX_BYTES;return H=this.toString("hex",0,k).replace(/(.{2})/g,"$1 ").trim(),this.length>k&&(H+=" ... "),"<Buffer "+H+">"},_&&(h.prototype[_]=h.prototype.inspect),h.prototype.compare=function(H,k,DA,YA,ue){if(vA(H,Uint8Array)&&(H=h.from(H,H.offset,H.byteLength)),!h.isBuffer(H))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof H);if(k===void 0&&(k=0),DA===void 0&&(DA=H?H.length:0),YA===void 0&&(YA=0),ue===void 0&&(ue=this.length),k<0||DA>H.length||YA<0||ue>this.length)throw new RangeError("out of range index");if(YA>=ue&&k>=DA)return 0;if(YA>=ue)return-1;if(k>=DA)return 1;if(k>>>=0,DA>>>=0,YA>>>=0,ue>>>=0,this===H)return 0;let De=ue-YA,si=DA-k;const Mi=Math.min(De,si),Si=this.slice(YA,ue),nn=H.slice(k,DA);for(let zi=0;zi<Mi;++zi)if(Si[zi]!==nn[zi]){De=Si[zi],si=nn[zi];break}return De<si?-1:si<De?1:0};function SA(aA,H,k,DA,YA){if(aA.length===0)return-1;if(typeof k=="string"?(DA=k,k=0):k>2147483647?k=2147483647:k<-2147483648&&(k=-2147483648),k=+k,ie(k)&&(k=YA?0:aA.length-1),k<0&&(k=aA.length+k),k>=aA.length){if(YA)return-1;k=aA.length-1}else if(k<0)if(YA)k=0;else return-1;if(typeof H=="string"&&(H=h.from(H,DA)),h.isBuffer(H))return H.length===0?-1:UA(aA,H,k,DA,YA);if(typeof H=="number")return H=H&255,typeof Uint8Array.prototype.indexOf=="function"?YA?Uint8Array.prototype.indexOf.call(aA,H,k):Uint8Array.prototype.lastIndexOf.call(aA,H,k):UA(aA,[H],k,DA,YA);throw new TypeError("val must be string, number or Buffer")}function UA(aA,H,k,DA,YA){let ue=1,De=aA.length,si=H.length;if(DA!==void 0&&(DA=String(DA).toLowerCase(),DA==="ucs2"||DA==="ucs-2"||DA==="utf16le"||DA==="utf-16le")){if(aA.length<2||H.length<2)return-1;ue=2,De/=2,si/=2,k/=2}function Mi(nn,zi){return ue===1?nn[zi]:nn.readUInt16BE(zi*ue)}let Si;if(YA){let nn=-1;for(Si=k;Si<De;Si++)if(Mi(aA,Si)===Mi(H,nn===-1?0:Si-nn)){if(nn===-1&&(nn=Si),Si-nn+1===si)return nn*ue}else nn!==-1&&(Si-=Si-nn),nn=-1}else for(k+si>De&&(k=De-si),Si=k;Si>=0;Si--){let nn=!0;for(let zi=0;zi<si;zi++)if(Mi(aA,Si+zi)!==Mi(H,zi)){nn=!1;break}if(nn)return Si}return-1}h.prototype.includes=function(H,k,DA){return this.indexOf(H,k,DA)!==-1},h.prototype.indexOf=function(H,k,DA){return SA(this,H,k,DA,!0)},h.prototype.lastIndexOf=function(H,k,DA){return SA(this,H,k,DA,!1)};function TA(aA,H,k,DA){k=Number(k)||0;const YA=aA.length-k;DA?(DA=Number(DA),DA>YA&&(DA=YA)):DA=YA;const ue=H.length;DA>ue/2&&(DA=ue/2);let De;for(De=0;De<DA;++De){const si=parseInt(H.substr(De*2,2),16);if(ie(si))return De;aA[k+De]=si}return De}function pA(aA,H,k,DA){return xA(Ao(H,aA.length-k),aA,k,DA)}function hA(aA,H,k,DA){return xA(Kn(H),aA,k,DA)}function uA(aA,H,k,DA){return xA(Kt(H),aA,k,DA)}function lA(aA,H,k,DA){return xA(_o(H,aA.length-k),aA,k,DA)}h.prototype.write=function(H,k,DA,YA){if(k===void 0)YA="utf8",DA=this.length,k=0;else if(DA===void 0&&typeof k=="string")YA=k,DA=this.length,k=0;else if(isFinite(k))k=k>>>0,isFinite(DA)?(DA=DA>>>0,YA===void 0&&(YA="utf8")):(YA=DA,DA=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const ue=this.length-k;if((DA===void 0||DA>ue)&&(DA=ue),H.length>0&&(DA<0||k<0)||k>this.length)throw new RangeError("Attempt to write outside buffer bounds");YA||(YA="utf8");let De=!1;for(;;)switch(YA){case"hex":return TA(this,H,k,DA);case"utf8":case"utf-8":return pA(this,H,k,DA);case"ascii":case"latin1":case"binary":return hA(this,H,k,DA);case"base64":return uA(this,H,k,DA);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return lA(this,H,k,DA);default:if(De)throw new TypeError("Unknown encoding: "+YA);YA=(""+YA).toLowerCase(),De=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function NA(aA,H,k){return H===0&&k===aA.length?s.fromByteArray(aA):s.fromByteArray(aA.slice(H,k))}function HA(aA,H,k){k=Math.min(aA.length,k);const DA=[];let YA=H;for(;YA<k;){const ue=aA[YA];let De=null,si=ue>239?4:ue>223?3:ue>191?2:1;if(YA+si<=k){let Mi,Si,nn,zi;switch(si){case 1:ue<128&&(De=ue);break;case 2:Mi=aA[YA+1],(Mi&192)===128&&(zi=(ue&31)<<6|Mi&63,zi>127&&(De=zi));break;case 3:Mi=aA[YA+1],Si=aA[YA+2],(Mi&192)===128&&(Si&192)===128&&(zi=(ue&15)<<12|(Mi&63)<<6|Si&63,zi>2047&&(zi<55296||zi>57343)&&(De=zi));break;case 4:Mi=aA[YA+1],Si=aA[YA+2],nn=aA[YA+3],(Mi&192)===128&&(Si&192)===128&&(nn&192)===128&&(zi=(ue&15)<<18|(Mi&63)<<12|(Si&63)<<6|nn&63,zi>65535&&zi<1114112&&(De=zi))}}De===null?(De=65533,si=1):De>65535&&(De-=65536,DA.push(De>>>10&1023|55296),De=56320|De&1023),DA.push(De),YA+=si}return He(DA)}const pe=4096;function He(aA){const H=aA.length;if(H<=pe)return String.fromCharCode.apply(String,aA);let k="",DA=0;for(;DA<H;)k+=String.fromCharCode.apply(String,aA.slice(DA,DA+=pe));return k}function Oe(aA,H,k){let DA="";k=Math.min(aA.length,k);for(let YA=H;YA<k;++YA)DA+=String.fromCharCode(aA[YA]&127);return DA}function ye(aA,H,k){let DA="";k=Math.min(aA.length,k);for(let YA=H;YA<k;++YA)DA+=String.fromCharCode(aA[YA]);return DA}function Ye(aA,H,k){const DA=aA.length;(!H||H<0)&&(H=0),(!k||k<0||k>DA)&&(k=DA);let YA="";for(let ue=H;ue<k;++ue)YA+=ZA[aA[ue]];return YA}function Et(aA,H,k){const DA=aA.slice(H,k);let YA="";for(let ue=0;ue<DA.length-1;ue+=2)YA+=String.fromCharCode(DA[ue]+DA[ue+1]*256);return YA}h.prototype.slice=function(H,k){const DA=this.length;H=~~H,k=k===void 0?DA:~~k,H<0?(H+=DA,H<0&&(H=0)):H>DA&&(H=DA),k<0?(k+=DA,k<0&&(k=0)):k>DA&&(k=DA),k<H&&(k=H);const YA=this.subarray(H,k);return Object.setPrototypeOf(YA,h.prototype),YA};function ct(aA,H,k){if(aA%1!==0||aA<0)throw new RangeError("offset is not uint");if(aA+H>k)throw new RangeError("Trying to access beyond buffer length")}h.prototype.readUintLE=h.prototype.readUIntLE=function(H,k,DA){H=H>>>0,k=k>>>0,DA||ct(H,k,this.length);let YA=this[H],ue=1,De=0;for(;++De<k&&(ue*=256);)YA+=this[H+De]*ue;return YA},h.prototype.readUintBE=h.prototype.readUIntBE=function(H,k,DA){H=H>>>0,k=k>>>0,DA||ct(H,k,this.length);let YA=this[H+--k],ue=1;for(;k>0&&(ue*=256);)YA+=this[H+--k]*ue;return YA},h.prototype.readUint8=h.prototype.readUInt8=function(H,k){return H=H>>>0,k||ct(H,1,this.length),this[H]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(H,k){return H=H>>>0,k||ct(H,2,this.length),this[H]|this[H+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(H,k){return H=H>>>0,k||ct(H,2,this.length),this[H]<<8|this[H+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(H,k){return H=H>>>0,k||ct(H,4,this.length),(this[H]|this[H+1]<<8|this[H+2]<<16)+this[H+3]*16777216},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(H,k){return H=H>>>0,k||ct(H,4,this.length),this[H]*16777216+(this[H+1]<<16|this[H+2]<<8|this[H+3])},h.prototype.readBigUInt64LE=jA(function(H){H=H>>>0,sn(H,"offset");const k=this[H],DA=this[H+7];(k===void 0||DA===void 0)&&En(H,this.length-8);const YA=k+this[++H]*2**8+this[++H]*2**16+this[++H]*2**24,ue=this[++H]+this[++H]*2**8+this[++H]*2**16+DA*2**24;return BigInt(YA)+(BigInt(ue)<<BigInt(32))}),h.prototype.readBigUInt64BE=jA(function(H){H=H>>>0,sn(H,"offset");const k=this[H],DA=this[H+7];(k===void 0||DA===void 0)&&En(H,this.length-8);const YA=k*2**24+this[++H]*2**16+this[++H]*2**8+this[++H],ue=this[++H]*2**24+this[++H]*2**16+this[++H]*2**8+DA;return(BigInt(YA)<<BigInt(32))+BigInt(ue)}),h.prototype.readIntLE=function(H,k,DA){H=H>>>0,k=k>>>0,DA||ct(H,k,this.length);let YA=this[H],ue=1,De=0;for(;++De<k&&(ue*=256);)YA+=this[H+De]*ue;return ue*=128,YA>=ue&&(YA-=Math.pow(2,8*k)),YA},h.prototype.readIntBE=function(H,k,DA){H=H>>>0,k=k>>>0,DA||ct(H,k,this.length);let YA=k,ue=1,De=this[H+--YA];for(;YA>0&&(ue*=256);)De+=this[H+--YA]*ue;return ue*=128,De>=ue&&(De-=Math.pow(2,8*k)),De},h.prototype.readInt8=function(H,k){return H=H>>>0,k||ct(H,1,this.length),this[H]&128?(255-this[H]+1)*-1:this[H]},h.prototype.readInt16LE=function(H,k){H=H>>>0,k||ct(H,2,this.length);const DA=this[H]|this[H+1]<<8;return DA&32768?DA|4294901760:DA},h.prototype.readInt16BE=function(H,k){H=H>>>0,k||ct(H,2,this.length);const DA=this[H+1]|this[H]<<8;return DA&32768?DA|4294901760:DA},h.prototype.readInt32LE=function(H,k){return H=H>>>0,k||ct(H,4,this.length),this[H]|this[H+1]<<8|this[H+2]<<16|this[H+3]<<24},h.prototype.readInt32BE=function(H,k){return H=H>>>0,k||ct(H,4,this.length),this[H]<<24|this[H+1]<<16|this[H+2]<<8|this[H+3]},h.prototype.readBigInt64LE=jA(function(H){H=H>>>0,sn(H,"offset");const k=this[H],DA=this[H+7];(k===void 0||DA===void 0)&&En(H,this.length-8);const YA=this[H+4]+this[H+5]*2**8+this[H+6]*2**16+(DA<<24);return(BigInt(YA)<<BigInt(32))+BigInt(k+this[++H]*256+this[++H]*65536+this[++H]*16777216)}),h.prototype.readBigInt64BE=jA(function(H){H=H>>>0,sn(H,"offset");const k=this[H],DA=this[H+7];(k===void 0||DA===void 0)&&En(H,this.length-8);const YA=(k<<24)+this[++H]*2**16+this[++H]*2**8+this[++H];return(BigInt(YA)<<BigInt(32))+BigInt(this[++H]*16777216+this[++H]*65536+this[++H]*256+DA)}),h.prototype.readFloatLE=function(H,k){return H=H>>>0,k||ct(H,4,this.length),z.read(this,H,!0,23,4)},h.prototype.readFloatBE=function(H,k){return H=H>>>0,k||ct(H,4,this.length),z.read(this,H,!1,23,4)},h.prototype.readDoubleLE=function(H,k){return H=H>>>0,k||ct(H,8,this.length),z.read(this,H,!0,52,8)},h.prototype.readDoubleBE=function(H,k){return H=H>>>0,k||ct(H,8,this.length),z.read(this,H,!1,52,8)};function q(aA,H,k,DA,YA,ue){if(!h.isBuffer(aA))throw new TypeError('"buffer" argument must be a Buffer instance');if(H>YA||H<ue)throw new RangeError('"value" argument is out of bounds');if(k+DA>aA.length)throw new RangeError("Index out of range")}h.prototype.writeUintLE=h.prototype.writeUIntLE=function(H,k,DA,YA){if(H=+H,k=k>>>0,DA=DA>>>0,!YA){const si=Math.pow(2,8*DA)-1;q(this,H,k,DA,si,0)}let ue=1,De=0;for(this[k]=H&255;++De<DA&&(ue*=256);)this[k+De]=H/ue&255;return k+DA},h.prototype.writeUintBE=h.prototype.writeUIntBE=function(H,k,DA,YA){if(H=+H,k=k>>>0,DA=DA>>>0,!YA){const si=Math.pow(2,8*DA)-1;q(this,H,k,DA,si,0)}let ue=DA-1,De=1;for(this[k+ue]=H&255;--ue>=0&&(De*=256);)this[k+ue]=H/De&255;return k+DA},h.prototype.writeUint8=h.prototype.writeUInt8=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,1,255,0),this[k]=H&255,k+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,2,65535,0),this[k]=H&255,this[k+1]=H>>>8,k+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,2,65535,0),this[k]=H>>>8,this[k+1]=H&255,k+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,4,4294967295,0),this[k+3]=H>>>24,this[k+2]=H>>>16,this[k+1]=H>>>8,this[k]=H&255,k+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,4,4294967295,0),this[k]=H>>>24,this[k+1]=H>>>16,this[k+2]=H>>>8,this[k+3]=H&255,k+4};function gA(aA,H,k,DA,YA){un(H,DA,YA,aA,k,7);let ue=Number(H&BigInt(4294967295));aA[k++]=ue,ue=ue>>8,aA[k++]=ue,ue=ue>>8,aA[k++]=ue,ue=ue>>8,aA[k++]=ue;let De=Number(H>>BigInt(32)&BigInt(4294967295));return aA[k++]=De,De=De>>8,aA[k++]=De,De=De>>8,aA[k++]=De,De=De>>8,aA[k++]=De,k}function yA(aA,H,k,DA,YA){un(H,DA,YA,aA,k,7);let ue=Number(H&BigInt(4294967295));aA[k+7]=ue,ue=ue>>8,aA[k+6]=ue,ue=ue>>8,aA[k+5]=ue,ue=ue>>8,aA[k+4]=ue;let De=Number(H>>BigInt(32)&BigInt(4294967295));return aA[k+3]=De,De=De>>8,aA[k+2]=De,De=De>>8,aA[k+1]=De,De=De>>8,aA[k]=De,k+8}h.prototype.writeBigUInt64LE=jA(function(H,k=0){return gA(this,H,k,BigInt(0),BigInt("0xffffffffffffffff"))}),h.prototype.writeBigUInt64BE=jA(function(H,k=0){return yA(this,H,k,BigInt(0),BigInt("0xffffffffffffffff"))}),h.prototype.writeIntLE=function(H,k,DA,YA){if(H=+H,k=k>>>0,!YA){const Mi=Math.pow(2,8*DA-1);q(this,H,k,DA,Mi-1,-Mi)}let ue=0,De=1,si=0;for(this[k]=H&255;++ue<DA&&(De*=256);)H<0&&si===0&&this[k+ue-1]!==0&&(si=1),this[k+ue]=(H/De>>0)-si&255;return k+DA},h.prototype.writeIntBE=function(H,k,DA,YA){if(H=+H,k=k>>>0,!YA){const Mi=Math.pow(2,8*DA-1);q(this,H,k,DA,Mi-1,-Mi)}let ue=DA-1,De=1,si=0;for(this[k+ue]=H&255;--ue>=0&&(De*=256);)H<0&&si===0&&this[k+ue+1]!==0&&(si=1),this[k+ue]=(H/De>>0)-si&255;return k+DA},h.prototype.writeInt8=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,1,127,-128),H<0&&(H=255+H+1),this[k]=H&255,k+1},h.prototype.writeInt16LE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,2,32767,-32768),this[k]=H&255,this[k+1]=H>>>8,k+2},h.prototype.writeInt16BE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,2,32767,-32768),this[k]=H>>>8,this[k+1]=H&255,k+2},h.prototype.writeInt32LE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,4,2147483647,-2147483648),this[k]=H&255,this[k+1]=H>>>8,this[k+2]=H>>>16,this[k+3]=H>>>24,k+4},h.prototype.writeInt32BE=function(H,k,DA){return H=+H,k=k>>>0,DA||q(this,H,k,4,2147483647,-2147483648),H<0&&(H=4294967295+H+1),this[k]=H>>>24,this[k+1]=H>>>16,this[k+2]=H>>>8,this[k+3]=H&255,k+4},h.prototype.writeBigInt64LE=jA(function(H,k=0){return gA(this,H,k,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),h.prototype.writeBigInt64BE=jA(function(H,k=0){return yA(this,H,k,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function ge(aA,H,k,DA,YA,ue){if(k+DA>aA.length)throw new RangeError("Index out of range");if(k<0)throw new RangeError("Index out of range")}function le(aA,H,k,DA,YA){return H=+H,k=k>>>0,YA||ge(aA,H,k,4),z.write(aA,H,k,DA,23,4),k+4}h.prototype.writeFloatLE=function(H,k,DA){return le(this,H,k,!0,DA)},h.prototype.writeFloatBE=function(H,k,DA){return le(this,H,k,!1,DA)};function Qt(aA,H,k,DA,YA){return H=+H,k=k>>>0,YA||ge(aA,H,k,8),z.write(aA,H,k,DA,52,8),k+8}h.prototype.writeDoubleLE=function(H,k,DA){return Qt(this,H,k,!0,DA)},h.prototype.writeDoubleBE=function(H,k,DA){return Qt(this,H,k,!1,DA)},h.prototype.copy=function(H,k,DA,YA){if(!h.isBuffer(H))throw new TypeError("argument should be a Buffer");if(DA||(DA=0),!YA&&YA!==0&&(YA=this.length),k>=H.length&&(k=H.length),k||(k=0),YA>0&&YA<DA&&(YA=DA),YA===DA||H.length===0||this.length===0)return 0;if(k<0)throw new RangeError("targetStart out of bounds");if(DA<0||DA>=this.length)throw new RangeError("Index out of range");if(YA<0)throw new RangeError("sourceEnd out of bounds");YA>this.length&&(YA=this.length),H.length-k<YA-DA&&(YA=H.length-k+DA);const ue=YA-DA;return this===H&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(k,DA,YA):Uint8Array.prototype.set.call(H,this.subarray(DA,YA),k),ue},h.prototype.fill=function(H,k,DA,YA){if(typeof H=="string"){if(typeof k=="string"?(YA=k,k=0,DA=this.length):typeof DA=="string"&&(YA=DA,DA=this.length),YA!==void 0&&typeof YA!="string")throw new TypeError("encoding must be a string");if(typeof YA=="string"&&!h.isEncoding(YA))throw new TypeError("Unknown encoding: "+YA);if(H.length===1){const De=H.charCodeAt(0);(YA==="utf8"&&De<128||YA==="latin1")&&(H=De)}}else typeof H=="number"?H=H&255:typeof H=="boolean"&&(H=Number(H));if(k<0||this.length<k||this.length<DA)throw new RangeError("Out of range index");if(DA<=k)return this;k=k>>>0,DA=DA===void 0?this.length:DA>>>0,H||(H=0);let ue;if(typeof H=="number")for(ue=k;ue<DA;++ue)this[ue]=H;else{const De=h.isBuffer(H)?H:h.from(H,YA),si=De.length;if(si===0)throw new TypeError('The value "'+H+'" is invalid for argument "value"');for(ue=0;ue<DA-k;++ue)this[ue+k]=De[ue%si]}return this};const Ct={};function bt(aA,H,k){Ct[aA]=class extends k{constructor(){super(),Object.defineProperty(this,"message",{value:H.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${aA}]`,this.stack,delete this.name}get code(){return aA}set code(YA){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:YA,writable:!0})}toString(){return`${this.name} [${aA}]: ${this.message}`}}}bt("ERR_BUFFER_OUT_OF_BOUNDS",function(aA){return aA?`${aA} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError),bt("ERR_INVALID_ARG_TYPE",function(aA,H){return`The "${aA}" argument must be of type number. Received type ${typeof H}`},TypeError),bt("ERR_OUT_OF_RANGE",function(aA,H,k){let DA=`The value of "${aA}" is out of range.`,YA=k;return Number.isInteger(k)&&Math.abs(k)>4294967296?YA=pi(String(k)):typeof k=="bigint"&&(YA=String(k),(k>BigInt(2)**BigInt(32)||k<-(BigInt(2)**BigInt(32)))&&(YA=pi(YA)),YA+="n"),DA+=` It must be ${H}. Received ${YA}`,DA},RangeError);function pi(aA){let H="",k=aA.length;const DA=aA[0]==="-"?1:0;for(;k>=DA+4;k-=3)H=`_${aA.slice(k-3,k)}${H}`;return`${aA.slice(0,k)}${H}`}function hi(aA,H,k){sn(H,"offset"),(aA[H]===void 0||aA[H+k]===void 0)&&En(H,aA.length-(k+1))}function un(aA,H,k,DA,YA,ue){if(aA>k||aA<H){const De=typeof H=="bigint"?"n":"";let si;throw H===0||H===BigInt(0)?si=`>= 0${De} and < 2${De} ** ${(ue+1)*8}${De}`:si=`>= -(2${De} ** ${(ue+1)*8-1}${De}) and < 2 ** ${(ue+1)*8-1}${De}`,new Ct.ERR_OUT_OF_RANGE("value",si,aA)}hi(DA,YA,ue)}function sn(aA,H){if(typeof aA!="number")throw new Ct.ERR_INVALID_ARG_TYPE(H,"number",aA)}function En(aA,H,k){throw Math.floor(aA)!==aA?(sn(aA,k),new Ct.ERR_OUT_OF_RANGE("offset","an integer",aA)):H<0?new Ct.ERR_BUFFER_OUT_OF_BOUNDS:new Ct.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${H}`,aA)}const bn=/[^+/0-9A-Za-z-_]/g;function go(aA){if(aA=aA.split("=")[0],aA=aA.trim().replace(bn,""),aA.length<2)return"";for(;aA.length%4!==0;)aA=aA+"=";return aA}function Ao(aA,H){H=H||1/0;let k;const DA=aA.length;let YA=null;const ue=[];for(let De=0;De<DA;++De){if(k=aA.charCodeAt(De),k>55295&&k<57344){if(!YA){if(k>56319){(H-=3)>-1&&ue.push(239,191,189);continue}else if(De+1===DA){(H-=3)>-1&&ue.push(239,191,189);continue}YA=k;continue}if(k<56320){(H-=3)>-1&&ue.push(239,191,189),YA=k;continue}k=(YA-55296<<10|k-56320)+65536}else YA&&(H-=3)>-1&&ue.push(239,191,189);if(YA=null,k<128){if((H-=1)<0)break;ue.push(k)}else if(k<2048){if((H-=2)<0)break;ue.push(k>>6|192,k&63|128)}else if(k<65536){if((H-=3)<0)break;ue.push(k>>12|224,k>>6&63|128,k&63|128)}else if(k<1114112){if((H-=4)<0)break;ue.push(k>>18|240,k>>12&63|128,k>>6&63|128,k&63|128)}else throw new Error("Invalid code point")}return ue}function Kn(aA){const H=[];for(let k=0;k<aA.length;++k)H.push(aA.charCodeAt(k)&255);return H}function _o(aA,H){let k,DA,YA;const ue=[];for(let De=0;De<aA.length&&!((H-=2)<0);++De)k=aA.charCodeAt(De),DA=k>>8,YA=k%256,ue.push(YA),ue.push(DA);return ue}function Kt(aA){return s.toByteArray(go(aA))}function xA(aA,H,k,DA){let YA;for(YA=0;YA<DA&&!(YA+k>=H.length||YA>=aA.length);++YA)H[YA+k]=aA[YA];return YA}function vA(aA,H){return aA instanceof H||aA!=null&&aA.constructor!=null&&aA.constructor.name!=null&&aA.constructor.name===H.name}function ie(aA){return aA!==aA}const ZA=function(){const aA="0123456789abcdef",H=new Array(256);for(let k=0;k<16;++k){const DA=k*16;for(let YA=0;YA<16;++YA)H[DA+YA]=aA[k]+aA[YA]}return H}();function jA(aA){return typeof BigInt>"u"?Be:aA}function Be(){throw new Error("BigInt not supported")}},"./node_modules/css-loader/dist/runtime/api.js":_A=>{_A.exports=function(O){var d=[];return d.toString=function(){return this.map(function(z){var _="",T=typeof z[5]<"u";return z[4]&&(_+="@supports (".concat(z[4],") {")),z[2]&&(_+="@media ".concat(z[2]," {")),T&&(_+="@layer".concat(z[5].length>0?" ".concat(z[5]):""," {")),_+=O(z),T&&(_+="}"),z[2]&&(_+="}"),z[4]&&(_+="}"),_}).join("")},d.i=function(z,_,T,v,D){typeof z=="string"&&(z=[[null,z,void 0]]);var h={};if(T)for(var p=0;p<this.length;p++){var m=this[p][0];m!=null&&(h[m]=!0)}for(var u=0;u<z.length;u++){var l=[].concat(z[u]);T&&h[l[0]]||(typeof D<"u"&&(typeof l[5]>"u"||(l[1]="@layer".concat(l[5].length>0?" ".concat(l[5]):""," {").concat(l[1],"}")),l[5]=D),_&&(l[2]&&(l[1]="@media ".concat(l[2]," {").concat(l[1],"}")),l[2]=_),v&&(l[4]?(l[1]="@supports (".concat(l[4],") {").concat(l[1],"}"),l[4]=v):l[4]="".concat(v)),d.push(l))}},d}},"./node_modules/css-loader/dist/runtime/getUrl.js":_A=>{_A.exports=function(O,d){return d||(d={}),O&&(O=String(O.__esModule?O.default:O),/^['"].*['"]$/.test(O)&&(O=O.slice(1,-1)),d.hash&&(O+=d.hash),/["'() \t\n]|(%20)/.test(O)||d.needQuotes?'"'.concat(O.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):O)}},"./node_modules/css-loader/dist/runtime/sourceMaps.js":_A=>{_A.exports=function(O){var d=O[1],s=O[3];if(!s)return d;if(typeof btoa=="function"){var z=btoa(unescape(encodeURIComponent(JSON.stringify(s)))),_="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(z),T="/*# ".concat(_," */");return[d].concat([T]).join(`
`)}return[d].join(`
`)}},"./node_modules/debug/src/browser.js":(_A,O,d)=>{O.formatArgs=z,O.save=_,O.load=T,O.useColors=s,O.storage=v(),O.destroy=(()=>{let h=!1;return()=>{h||(h=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),O.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function s(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let h;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(h=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(h[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function z(h){if(h[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+h[0]+(this.useColors?"%c ":" ")+"+"+_A.exports.humanize(this.diff),!this.useColors)return;const p="color: "+this.color;h.splice(1,0,p,"color: inherit");let m=0,u=0;h[0].replace(/%[a-zA-Z%]/g,l=>{l!=="%%"&&(m++,l==="%c"&&(u=m))}),h.splice(u,0,p)}O.log=console.debug||console.log||(()=>{});function _(h){try{h?O.storage.setItem("debug",h):O.storage.removeItem("debug")}catch{}}function T(){let h;try{h=O.storage.getItem("debug")}catch{}return!h&&typeof process<"u"&&"env"in process&&(h=xn.DEBUG),h}function v(){try{return localStorage}catch{}}_A.exports=d("./node_modules/debug/src/common.js")(O);const{formatters:D}=_A.exports;D.j=function(h){try{return JSON.stringify(h)}catch(p){return"[UnexpectedJSONParseError]: "+p.message}}},"./node_modules/debug/src/common.js":(_A,O,d)=>{function s(z){T.debug=T,T.default=T,T.coerce=u,T.disable=p,T.enable=D,T.enabled=m,T.humanize=d("./node_modules/ms/index.js"),T.destroy=l,Object.keys(z).forEach(R=>{T[R]=z[R]}),T.names=[],T.skips=[],T.formatters={};function _(R){let N=0;for(let Y=0;Y<R.length;Y++)N=(N<<5)-N+R.charCodeAt(Y),N|=0;return T.colors[Math.abs(N)%T.colors.length]}T.selectColor=_;function T(R){let N,Y=null,G,x;function U(...j){if(!U.enabled)return;const Z=U,CA=Number(new Date),QA=CA-(N||CA);Z.diff=QA,Z.prev=N,Z.curr=CA,N=CA,j[0]=T.coerce(j[0]),typeof j[0]!="string"&&j.unshift("%O");let SA=0;j[0]=j[0].replace(/%([a-zA-Z%])/g,(TA,pA)=>{if(TA==="%%")return"%";SA++;const hA=T.formatters[pA];if(typeof hA=="function"){const uA=j[SA];TA=hA.call(Z,uA),j.splice(SA,1),SA--}return TA}),T.formatArgs.call(Z,j),(Z.log||T.log).apply(Z,j)}return U.namespace=R,U.useColors=T.useColors(),U.color=T.selectColor(R),U.extend=v,U.destroy=T.destroy,Object.defineProperty(U,"enabled",{enumerable:!0,configurable:!1,get:()=>Y!==null?Y:(G!==T.namespaces&&(G=T.namespaces,x=T.enabled(R)),x),set:j=>{Y=j}}),typeof T.init=="function"&&T.init(U),U}function v(R,N){const Y=T(this.namespace+(typeof N>"u"?":":N)+R);return Y.log=this.log,Y}function D(R){T.save(R),T.namespaces=R,T.names=[],T.skips=[];const N=(typeof R=="string"?R:"").trim().replace(" ",",").split(",").filter(Boolean);for(const Y of N)Y[0]==="-"?T.skips.push(Y.slice(1)):T.names.push(Y)}function h(R,N){let Y=0,G=0,x=-1,U=0;for(;Y<R.length;)if(G<N.length&&(N[G]===R[Y]||N[G]==="*"))N[G]==="*"?(x=G,U=Y,G++):(Y++,G++);else if(x!==-1)G=x+1,U++,Y=U;else return!1;for(;G<N.length&&N[G]==="*";)G++;return G===N.length}function p(){const R=[...T.names,...T.skips.map(N=>"-"+N)].join(",");return T.enable(""),R}function m(R){for(const N of T.skips)if(h(R,N))return!1;for(const N of T.names)if(h(R,N))return!0;return!1}function u(R){return R instanceof Error?R.stack||R.message:R}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return T.enable(T.load()),T}_A.exports=s},"./node_modules/deep-assign/index.js":(_A,O,d)=>{var s=d("./node_modules/is-obj/index.js"),z=Object.prototype.hasOwnProperty,_=Object.prototype.propertyIsEnumerable;function T(h){if(h==null)throw new TypeError("Sources cannot be null or undefined");return Object(h)}function v(h,p,m){var u=p[m];if(u!=null){if(z.call(h,m)&&(h[m]===void 0||h[m]===null))throw new TypeError("Cannot convert undefined or null to object ("+m+")");!z.call(h,m)||!s(u)?h[m]=u:h[m]=D(Object(h[m]),p[m])}}function D(h,p){if(h===p)return h;p=Object(p);for(var m in p)z.call(p,m)&&v(h,p,m);if(Object.getOwnPropertySymbols)for(var u=Object.getOwnPropertySymbols(p),l=0;l<u.length;l++)_.call(p,u[l])&&v(h,p,u[l]);return h}_A.exports=function(p){p=T(p);for(var m=1;m<arguments.length;m++)D(p,arguments[m]);return p}},"./node_modules/dtype/index.js":_A=>{_A.exports=function(O){switch(O){case"int8":return Int8Array;case"int16":return Int16Array;case"int32":return Int32Array;case"uint8":return Uint8Array;case"uint16":return Uint16Array;case"uint32":return Uint32Array;case"float32":return Float32Array;case"float64":return Float64Array;case"array":return Array;case"uint8_clamped":return Uint8ClampedArray}}},"./node_modules/global/window.js":(_A,O,d)=>{var s;typeof window<"u"?s=window:typeof d.g<"u"?s=d.g:typeof self<"u"?s=self:s={},_A.exports=s},"./node_modules/ieee754/index.js":(_A,O)=>{/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */O.read=function(d,s,z,_,T){var v,D,h=T*8-_-1,p=(1<<h)-1,m=p>>1,u=-7,l=z?T-1:0,R=z?-1:1,N=d[s+l];for(l+=R,v=N&(1<<-u)-1,N>>=-u,u+=h;u>0;v=v*256+d[s+l],l+=R,u-=8);for(D=v&(1<<-u)-1,v>>=-u,u+=_;u>0;D=D*256+d[s+l],l+=R,u-=8);if(v===0)v=1-m;else{if(v===p)return D?NaN:(N?-1:1)*(1/0);D=D+Math.pow(2,_),v=v-m}return(N?-1:1)*D*Math.pow(2,v-_)},O.write=function(d,s,z,_,T,v){var D,h,p,m=v*8-T-1,u=(1<<m)-1,l=u>>1,R=T===23?Math.pow(2,-24)-Math.pow(2,-77):0,N=_?0:v-1,Y=_?1:-1,G=s<0||s===0&&1/s<0?1:0;for(s=Math.abs(s),isNaN(s)||s===1/0?(h=isNaN(s)?1:0,D=u):(D=Math.floor(Math.log(s)/Math.LN2),s*(p=Math.pow(2,-D))<1&&(D--,p*=2),D+l>=1?s+=R/p:s+=R*Math.pow(2,1-l),s*p>=2&&(D++,p/=2),D+l>=u?(h=0,D=u):D+l>=1?(h=(s*p-1)*Math.pow(2,T),D=D+l):(h=s*Math.pow(2,l-1)*Math.pow(2,T),D=0));T>=8;d[z+N]=h&255,N+=Y,h/=256,T-=8);for(D=D<<T|h,m+=T;m>0;d[z+N]=D&255,N+=Y,D/=256,m-=8);d[z+N-Y]|=G*128}},"./node_modules/is-buffer/index.js":_A=>{/*!
* Determine if an object is a Buffer
*
* @author Feross Aboukhadijeh <https://feross.org>
* @license MIT
*/_A.exports=function(s){return s!=null&&(O(s)||d(s)||!!s._isBuffer)};function O(s){return!!s.constructor&&typeof s.constructor.isBuffer=="function"&&s.constructor.isBuffer(s)}function d(s){return typeof s.readFloatLE=="function"&&typeof s.slice=="function"&&O(s.slice(0,0))}},"./node_modules/is-function/index.js":_A=>{_A.exports=d;var O=Object.prototype.toString;function d(s){if(!s)return!1;var z=O.call(s);return z==="[object Function]"||typeof s=="function"&&z!=="[object RegExp]"||typeof window<"u"&&(s===window.setTimeout||s===window.alert||s===window.confirm||s===window.prompt)}},"./node_modules/is-obj/index.js":_A=>{_A.exports=function(O){var d=typeof O;return O!==null&&(d==="object"||d==="function")}},"./node_modules/layout-bmfont-text/index.js":(_A,O,d)=>{var s=d("./node_modules/word-wrapper/index.js"),z=d("./node_modules/xtend/immutable.js"),_=d("./node_modules/as-number/index.js"),T=["x","e","a","o","n","s","r","c","u","m","v","w","z"],v=["m","w"],D=["H","I","N","E","F","K","L","T","U","V","W","X","Y","Z"],h=9,p=32,m=0,u=1,l=2;_A.exports=function(UA){return new R(UA)};function R(SA){this.glyphs=[],this._measure=this.computeMetrics.bind(this),this.update(SA)}R.prototype.update=function(SA){if(SA=z({measure:this._measure},SA),this._opt=SA,this._opt.tabSize=_(this._opt.tabSize,4),!SA.font)throw new Error("must provide a valid bitmap font");var UA=this.glyphs,TA=SA.text||"",pA=SA.font;this._setupSpaceGlyphs(pA);var hA=s.lines(TA,SA),uA=SA.width||0;UA.length=0;var lA=hA.reduce(function(q,gA){return Math.max(q,gA.width,uA)},0),NA=0,HA=0,pe=_(SA.lineHeight,pA.common.lineHeight),He=pA.common.base,Oe=pe-He,ye=SA.letterSpacing||0,Ye=pe*hA.length-Oe,Et=CA(this._opt.align);HA-=Ye,this._width=lA,this._height=Ye,this._descender=pe-He,this._baseline=He,this._xHeight=x(pA),this._capHeight=j(pA),this._lineHeight=pe,this._ascender=pe-Oe-this._xHeight;var ct=this;hA.forEach(function(q,gA){for(var yA=q.start,ge=q.end,le=q.width,Qt,Ct=yA;Ct<ge;Ct++){var bt=TA.charCodeAt(Ct),pi=ct.getGlyph(pA,bt);if(pi){Qt&&(NA+=Z(pA,Qt.id,pi.id));var hi=NA;Et===u?hi+=(lA-le)/2:Et===l&&(hi+=lA-le),UA.push({position:[hi,HA],data:pi,index:Ct,line:gA}),NA+=pi.xadvance+ye,Qt=pi}}HA+=pe,NA=0}),this._linesTotal=hA.length},R.prototype._setupSpaceGlyphs=function(SA){if(this._fallbackSpaceGlyph=null,this._fallbackTabGlyph=null,!(!SA.chars||SA.chars.length===0)){var UA=G(SA,p)||U(SA)||SA.chars[0],TA=this._opt.tabSize*UA.xadvance;this._fallbackSpaceGlyph=UA,this._fallbackTabGlyph=z(UA,{x:0,y:0,xadvance:TA,id:h,xoffset:0,yoffset:0,width:0,height:0})}},R.prototype.getGlyph=function(SA,UA){var TA=G(SA,UA);return TA||(UA===h?this._fallbackTabGlyph:UA===p?this._fallbackSpaceGlyph:null)},R.prototype.computeMetrics=function(SA,UA,TA,pA){var hA=this._opt.letterSpacing||0,uA=this._opt.font,lA=0,NA=0,HA=0,pe,He;if(!uA.chars||uA.chars.length===0)return{start:UA,end:UA,width:0};TA=Math.min(SA.length,TA);for(var Oe=UA;Oe<TA;Oe++){var ye=SA.charCodeAt(Oe),pe=this.getGlyph(uA,ye);if(pe){pe.xoffset;var Ye=He?Z(uA,He.id,pe.id):0;lA+=Ye;var Et=lA+pe.xadvance+hA,ct=lA+pe.width;if(ct>=pA||Et>=pA)break;lA=Et,NA=ct,He=pe}HA++}return He&&(NA+=He.xoffset),{start:UA,end:UA+HA,width:NA}},["width","height","descender","ascender","xHeight","baseline","capHeight","lineHeight"].forEach(N);function N(SA){Object.defineProperty(R.prototype,SA,{get:Y(SA),configurable:!0})}function Y(SA){return new Function(["return function "+SA+"() {"," return this._"+SA,"}"].join(`
`))()}function G(SA,UA){if(!SA.chars||SA.chars.length===0)return null;var TA=QA(SA.chars,UA);return TA>=0?SA.chars[TA]:null}function x(SA){for(var UA=0;UA<T.length;UA++){var TA=T[UA].charCodeAt(0),pA=QA(SA.chars,TA);if(pA>=0)return SA.chars[pA].height}return 0}function U(SA){for(var UA=0;UA<v.length;UA++){var TA=v[UA].charCodeAt(0),pA=QA(SA.chars,TA);if(pA>=0)return SA.chars[pA]}return 0}function j(SA){for(var UA=0;UA<D.length;UA++){var TA=D[UA].charCodeAt(0),pA=QA(SA.chars,TA);if(pA>=0)return SA.chars[pA].height}return 0}function Z(SA,UA,TA){if(!SA.kernings||SA.kernings.length===0)return 0;for(var pA=SA.kernings,hA=0;hA<pA.length;hA++){var uA=pA[hA];if(uA.first===UA&&uA.second===TA)return uA.amount}return 0}function CA(SA){return SA==="center"?u:SA==="right"?l:m}function QA(SA,UA,TA){TA=TA||0;for(var pA=TA;pA<SA.length;pA++)if(SA[pA].id===UA)return pA;return-1}},"./node_modules/load-bmfont/browser.js":(_A,O,d)=>{var s=d("./node_modules/buffer/index.js").Buffer,z=d("./node_modules/xhr/index.js"),_=function(){},T=d("./node_modules/parse-bmfont-ascii/index.js"),v=d("./node_modules/parse-bmfont-xml/lib/browser.js"),D=d("./node_modules/parse-bmfont-binary/index.js"),h=d("./node_modules/load-bmfont/lib/is-binary.js"),p=d("./node_modules/xtend/immutable.js"),m=function(){return self.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}();_A.exports=function(R,N){N=typeof N=="function"?N:_,typeof R=="string"?R={uri:R}:R||(R={});var Y=R.binary;Y&&(R=l(R)),z(R,function(G,x,U){if(G)return N(G);if(!/^2/.test(x.statusCode))return N(new Error("http status code: "+x.statusCode));if(!U)return N(new Error("no body result"));var j=!1;if(u(U)){var Z=new Uint8Array(U);U=s.from(Z,"binary")}h(U)&&(j=!0,typeof U=="string"&&(U=s.from(U,"binary"))),j||(s.isBuffer(U)&&(U=U.toString(R.encoding)),U=U.trim());var CA;try{var QA=x.headers["content-type"];j?CA=D(U):/json/.test(QA)||U.charAt(0)==="{"?CA=JSON.parse(U):/xml/.test(QA)||U.charAt(0)==="<"?CA=v(U):CA=T(U)}catch(SA){N(new Error("error parsing font "+SA.message)),N=_}N(null,CA)})};function u(R){var N=Object.prototype.toString;return N.call(R)==="[object ArrayBuffer]"}function l(R){if(m)return p(R,{responseType:"arraybuffer"});if(typeof self.XMLHttpRequest>"u")throw new Error("your browser does not support XHR loading");var N=new self.XMLHttpRequest;return N.overrideMimeType("text/plain; charset=x-user-defined"),p({xhr:N},R)}},"./node_modules/load-bmfont/lib/is-binary.js":(_A,O,d)=>{var s=d("./node_modules/buffer/index.js").Buffer,z=d("./node_modules/buffer-equal/index.js"),_=s.from([66,77,70,3]);_A.exports=function(T){return typeof T=="string"?T.substring(0,3)==="BMF":T.length>4&&z(T.slice(0,4),_)}},"./node_modules/ms/index.js":_A=>{var O=1e3,d=O*60,s=d*60,z=s*24,_=z*7,T=z*365.25;_A.exports=function(m,u){u=u||{};var l=typeof m;if(l==="string"&&m.length>0)return v(m);if(l==="number"&&isFinite(m))return u.long?h(m):D(m);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(m))};function v(m){if(m=String(m),!(m.length>100)){var u=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(m);if(u){var l=parseFloat(u[1]),R=(u[2]||"ms").toLowerCase();switch(R){case"years":case"year":case"yrs":case"yr":case"y":return l*T;case"weeks":case"week":case"w":return l*_;case"days":case"day":case"d":return l*z;case"hours":case"hour":case"hrs":case"hr":case"h":return l*s;case"minutes":case"minute":case"mins":case"min":case"m":return l*d;case"seconds":case"second":case"secs":case"sec":case"s":return l*O;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return l;default:return}}}}function D(m){var u=Math.abs(m);return u>=z?Math.round(m/z)+"d":u>=s?Math.round(m/s)+"h":u>=d?Math.round(m/d)+"m":u>=O?Math.round(m/O)+"s":m+"ms"}function h(m){var u=Math.abs(m);return u>=z?p(m,u,z,"day"):u>=s?p(m,u,s,"hour"):u>=d?p(m,u,d,"minute"):u>=O?p(m,u,O,"second"):m+" ms"}function p(m,u,l,R){var N=u>=l*1.5;return Math.round(m/l)+" "+R+(N?"s":"")}},"./node_modules/parse-bmfont-ascii/index.js":_A=>{_A.exports=function(_){if(!_)throw new Error("no data provided");_=_.toString().trim();var T={pages:[],chars:[],kernings:[]},v=_.split(/\r\n?|\n/g);if(v.length===0)throw new Error("no data in BMFont file");for(var D=0;D<v.length;D++){var h=O(v[D],D);if(h)if(h.key==="page"){if(typeof h.data.id!="number")throw new Error("malformed file at line "+D+" -- needs page id=N");if(typeof h.data.file!="string")throw new Error("malformed file at line "+D+' -- needs page file="path"');T.pages[h.data.id]=h.data.file}else h.key==="chars"||h.key==="kernings"||(h.key==="char"?T.chars.push(h.data):h.key==="kerning"?T.kernings.push(h.data):T[h.key]=h.data)}return T};function O(z,_){if(z=z.replace(/\t+/g," ").trim(),!z)return null;var T=z.indexOf(" ");if(T===-1)throw new Error("no named row at line "+_);var v=z.substring(0,T);z=z.substring(T+1),z=z.replace(/letter=[\'\"]\S+[\'\"]/gi,""),z=z.split("="),z=z.map(function(u){return u.trim().match(/(".*?"|[^"\s]+)+(?=\s*|\s*$)/g)});for(var D=[],h=0;h<z.length;h++){var p=z[h];h===0?D.push({key:p[0],data:""}):h===z.length-1?D[D.length-1].data=d(p[0]):(D[D.length-1].data=d(p[0]),D.push({key:p[1],data:""}))}var m={key:v,data:{}};return D.forEach(function(u){m.data[u.key]=u.data}),m}function d(z){return!z||z.length===0?"":z.indexOf('"')===0||z.indexOf("'")===0?z.substring(1,z.length-1):z.indexOf(",")!==-1?s(z):parseInt(z,10)}function s(z){return z.split(",").map(function(_){return parseInt(_,10)})}},"./node_modules/parse-bmfont-binary/index.js":_A=>{var O=[66,77,70];_A.exports=function(m){if(m.length<6)throw new Error("invalid buffer length for BMFont");var u=O.every(function(G,x){return m.readUInt8(x)===G});if(!u)throw new Error("BMFont missing BMF byte header");var l=3,R=m.readUInt8(l++);if(R>3)throw new Error("Only supports BMFont Binary v3 (BMFont App v1.10)");for(var N={kernings:[],chars:[]},Y=0;Y<5;Y++)l+=d(N,m,l);return N};function d(p,m,u){if(u>m.length-1)return 0;var l=m.readUInt8(u++),R=m.readInt32LE(u);switch(u+=4,l){case 1:p.info=s(m,u);break;case 2:p.common=z(m,u);break;case 3:p.pages=_(m,u,R);break;case 4:p.chars=T(m,u,R);break;case 5:p.kernings=v(m,u,R);break}return 5+R}function s(p,m){var u={};u.size=p.readInt16LE(m);var l=p.readUInt8(m+2);return u.smooth=l>>7&1,u.unicode=l>>6&1,u.italic=l>>5&1,u.bold=l>>4&1,l>>3&1&&(u.fixedHeight=1),u.charset=p.readUInt8(m+3)||"",u.stretchH=p.readUInt16LE(m+4),u.aa=p.readUInt8(m+6),u.padding=[p.readInt8(m+7),p.readInt8(m+8),p.readInt8(m+9),p.readInt8(m+10)],u.spacing=[p.readInt8(m+11),p.readInt8(m+12)],u.outline=p.readUInt8(m+13),u.face=h(p,m+14),u}function z(p,m){var u={};return u.lineHeight=p.readUInt16LE(m),u.base=p.readUInt16LE(m+2),u.scaleW=p.readUInt16LE(m+4),u.scaleH=p.readUInt16LE(m+6),u.pages=p.readUInt16LE(m+8),p.readUInt8(m+10),u.packed=0,u.alphaChnl=p.readUInt8(m+11),u.redChnl=p.readUInt8(m+12),u.greenChnl=p.readUInt8(m+13),u.blueChnl=p.readUInt8(m+14),u}function _(p,m,u){for(var l=[],R=D(p,m),N=R.length+1,Y=u/N,G=0;G<Y;G++)l[G]=p.slice(m,m+R.length).toString("utf8"),m+=N;return l}function T(p,m,u){for(var l=[],R=u/20,N=0;N<R;N++){var Y={},G=N*20;Y.id=p.readUInt32LE(m+0+G),Y.x=p.readUInt16LE(m+4+G),Y.y=p.readUInt16LE(m+6+G),Y.width=p.readUInt16LE(m+8+G),Y.height=p.readUInt16LE(m+10+G),Y.xoffset=p.readInt16LE(m+12+G),Y.yoffset=p.readInt16LE(m+14+G),Y.xadvance=p.readInt16LE(m+16+G),Y.page=p.readUInt8(m+18+G),Y.chnl=p.readUInt8(m+19+G),l[N]=Y}return l}function v(p,m,u){for(var l=[],R=u/10,N=0;N<R;N++){var Y={},G=N*10;Y.first=p.readUInt32LE(m+0+G),Y.second=p.readUInt32LE(m+4+G),Y.amount=p.readInt16LE(m+8+G),l[N]=Y}return l}function D(p,m){for(var u=m;u<p.length&&p[u]!==0;u++);return p.slice(m,u)}function h(p,m){return D(p,m).toString("utf8")}},"./node_modules/parse-bmfont-xml/lib/browser.js":(_A,O,d)=>{var s=d("./node_modules/parse-bmfont-xml/lib/parse-attribs.js"),z=d("./node_modules/xml-parse-from-string/index.js"),_={scaleh:"scaleH",scalew:"scaleW",stretchh:"stretchH",lineheight:"lineHeight",alphachnl:"alphaChnl",redchnl:"redChnl",greenchnl:"greenChnl",bluechnl:"blueChnl"};_A.exports=function(p){p=p.toString();var m=z(p),u={pages:[],chars:[],kernings:[]};["info","common"].forEach(function(U){var j=m.getElementsByTagName(U)[0];j&&(u[U]=s(T(j)))});var l=m.getElementsByTagName("pages")[0];if(!l)throw new Error("malformed file -- no <pages> element");for(var R=l.getElementsByTagName("page"),N=0;N<R.length;N++){var Y=R[N],G=parseInt(Y.getAttribute("id"),10),x=Y.getAttribute("file");if(isNaN(G))throw new Error('malformed file -- page "id" attribute is NaN');if(!x)throw new Error('malformed file -- needs page "file" attribute');u.pages[parseInt(G,10)]=x}return["chars","kernings"].forEach(function(U){var j=m.getElementsByTagName(U)[0];if(j)for(var Z=U.substring(0,U.length-1),CA=j.getElementsByTagName(Z),QA=0;QA<CA.length;QA++){var SA=CA[QA];u[U].push(s(T(SA)))}}),u};function T(h){var p=v(h);return p.reduce(function(m,u){var l=D(u.nodeName);return m[l]=u.nodeValue,m},{})}function v(h){for(var p=[],m=0;m<h.attributes.length;m++)p.push(h.attributes[m]);return p}function D(h){return _[h.toLowerCase()]||h}},"./node_modules/parse-bmfont-xml/lib/parse-attribs.js":_A=>{var O="chasrset";_A.exports=function(z){z=Object.assign({},z),O in z&&(z.charset=z[O],delete z[O]);for(var _ in z)_==="face"||_==="charset"||(_==="padding"||_==="spacing"?z[_]=d(z[_]):z[_]=parseInt(z[_],10));return z};function d(s){return s.split(",").map(function(z){return parseInt(z,10)})}},"./node_modules/parse-headers/parse-headers.js":_A=>{var O=function(s){return s.replace(/^\s+|\s+$/g,"")},d=function(s){return Object.prototype.toString.call(s)==="[object Array]"};_A.exports=function(s){if(!s)return{};for(var z={},_=O(s).split(`
`),T=0;T<_.length;T++){var v=_[T],D=v.indexOf(":"),h=O(v.slice(0,D)).toLowerCase(),p=O(v.slice(D+1));typeof z[h]>"u"?z[h]=p:d(z[h])?z[h].push(p):z[h]=[z[h],p]}return z}},"./node_modules/quad-indices/index.js":(_A,O,d)=>{var s=d("./node_modules/dtype/index.js"),z=d("./node_modules/an-array/index.js"),_=d("./node_modules/is-buffer/index.js"),T=[0,2,3],v=[2,1,3];_A.exports=function(h,p){(!h||!(z(h)||_(h)))&&(p=h||{},h=null),typeof p=="number"?p={count:p}:p=p||{};for(var m=typeof p.type=="string"?p.type:"uint16",u=typeof p.count=="number"?p.count:1,l=p.start||0,R=p.clockwise!==!1?T:v,N=R[0],Y=R[1],G=R[2],x=u*6,U=h||new(s(m))(x),j=0,Z=0;j<x;j+=6,Z+=4){var CA=j+l;U[CA+0]=Z+0,U[CA+1]=Z+1,U[CA+2]=Z+2,U[CA+3]=Z+N,U[CA+4]=Z+Y,U[CA+5]=Z+G}return U}},"./node_modules/super-animejs/lib/anime.es.js":(_A,O,d)=>{d.r(O),d.d(O,{default:()=>Ka});var s={update:null,begin:null,loopBegin:null,changeBegin:null,change:null,changeComplete:null,loopComplete:null,complete:null,loop:1,direction:"normal",autoplay:!0,timelineOffset:0},z={duration:1e3,delay:0,endDelay:0,easing:"easeOutElastic(1, .5)",round:0},_=["translateX","translateY","translateZ","rotate","rotateX","rotateY","rotateZ","scale","scaleX","scaleY","scaleZ","skew","skewX","skewY","perspective"],T={CSS:{},springs:{}};function v(XA,me,We){return Math.min(Math.max(XA,me),We)}function D(XA,me){return XA.indexOf(me)>-1}function h(XA,me){return XA.apply(null,me)}var p=/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i,m=/^rgb/,u=/^hsl/,l={arr:function(XA){return Array.isArray(XA)},obj:function(XA){return D(Object.prototype.toString.call(XA),"Object")},pth:function(XA){return l.obj(XA)&&XA.hasOwnProperty("totalLength")},svg:function(XA){return XA instanceof SVGElement},inp:function(XA){return XA instanceof HTMLInputElement},dom:function(XA){return XA.nodeType||l.svg(XA)},str:function(XA){return typeof XA=="string"},fnc:function(XA){return typeof XA=="function"},und:function(XA){return typeof XA>"u"},hex:function(XA){return p.test(XA)},rgb:function(XA){return m.test(XA)},hsl:function(XA){return u.test(XA)},col:function(XA){return l.hex(XA)||l.rgb(XA)||l.hsl(XA)},key:function(XA){return!s.hasOwnProperty(XA)&&!z.hasOwnProperty(XA)&&XA!=="targets"&&XA!=="keyframes"}},R=/\(([^)]+)\)/;function N(XA){var me=R.exec(XA);return me?me[1].split(",").map(function(We){return parseFloat(We)}):[]}function Y(XA,me){var We=N(XA),ut=v(l.und(We[0])?1:We[0],.1,100),gt=v(l.und(We[1])?100:We[1],.1,100),Gt=v(l.und(We[2])?10:We[2],.1,100),ai=v(l.und(We[3])?0:We[3],.1,100),Pi=Math.sqrt(gt/ut),xi=Gt/(2*Math.sqrt(gt*ut)),Ut=xi<1?Pi*Math.sqrt(1-xi*xi):0,Qn=1,mn=xi<1?(xi*Pi+-ai)/Ut:-ai+Pi;function Pn(Ro){var ao=me?me*Ro/1e3:Ro;return xi<1?ao=Math.exp(-ao*xi*Pi)*(Qn*Math.cos(Ut*ao)+mn*Math.sin(Ut*ao)):ao=(Qn+mn*ao)*Math.exp(-ao*Pi),Ro===0||Ro===1?Ro:1-ao}function pr(){var Ro=T.springs[XA];if(Ro)return Ro;for(var ao=1/6,Uo=0,Yr=0;;)if(Uo+=ao,Pn(Uo)===1){if(Yr++,Yr>=16)break}else Yr=0;var $r=Uo*ao*1e3;return T.springs[XA]=$r,$r}return me?Pn:pr}function G(XA,me){XA===void 0&&(XA=1),me===void 0&&(me=.5);var We=v(XA,1,10),ut=v(me,.1,2);return function(gt){return gt===0||gt===1?gt:-We*Math.pow(2,10*(gt-1))*Math.sin((gt-1-ut/(Math.PI*2)*Math.asin(1/We))*(Math.PI*2)/ut)}}function x(XA){return XA===void 0&&(XA=10),function(me){return Math.round(me*XA)*(1/XA)}}var U=function(){var XA=11,me=1/(XA-1);function We(Qn,mn){return 1-3*mn+3*Qn}function ut(Qn,mn){return 3*mn-6*Qn}function gt(Qn){return 3*Qn}function Gt(Qn,mn,Pn){return((We(mn,Pn)*Qn+ut(mn,Pn))*Qn+gt(mn))*Qn}function ai(Qn,mn,Pn){return 3*We(mn,Pn)*Qn*Qn+2*ut(mn,Pn)*Qn+gt(mn)}function Pi(Qn,mn,Pn,pr,Ro){var ao,Uo,Yr=0;do Uo=mn+(Pn-mn)/2,ao=Gt(Uo,pr,Ro)-Qn,ao>0?Pn=Uo:mn=Uo;while(Math.abs(ao)>1e-7&&++Yr<10);return Uo}function xi(Qn,mn,Pn,pr){for(var Ro=0;Ro<4;++Ro){var ao=ai(mn,Pn,pr);if(ao===0)return mn;var Uo=Gt(mn,Pn,pr)-Qn;mn-=Uo/ao}return mn}function Ut(Qn,mn,Pn,pr){if(!(0<=Qn&&Qn<=1&&0<=Pn&&Pn<=1))return;var Ro=new Float32Array(XA);if(Qn!==mn||Pn!==pr)for(var ao=0;ao<XA;++ao)Ro[ao]=Gt(ao*me,Qn,Pn);function Uo(Yr){for(var $r=0,On=1,Go=XA-1;On!==Go&&Ro[On]<=Yr;++On)$r+=me;--On;var Ys=(Yr-Ro[On])/(Ro[On+1]-Ro[On]),og=$r+Ys*me,Ur=ai(og,Qn,Pn);return Ur>=.001?xi(Yr,og,Qn,Pn):Ur===0?og:Pi(Yr,$r,$r+me,Qn,Pn)}return function(Yr){return Qn===mn&&Pn===pr||Yr===0||Yr===1?Yr:Gt(Uo(Yr),mn,pr)}}return Ut}(),j=function(){var XA=["Quad","Cubic","Quart","Quint","Sine","Expo","Circ","Back","Elastic"],me={In:[[.55,.085,.68,.53],[.55,.055,.675,.19],[.895,.03,.685,.22],[.755,.05,.855,.06],[.47,0,.745,.715],[.95,.05,.795,.035],[.6,.04,.98,.335],[.6,-.28,.735,.045],G],Out:[[.25,.46,.45,.94],[.215,.61,.355,1],[.165,.84,.44,1],[.23,1,.32,1],[.39,.575,.565,1],[.19,1,.22,1],[.075,.82,.165,1],[.175,.885,.32,1.275],function(ai,Pi){return function(xi){return 1-G(ai,Pi)(1-xi)}}],InOut:[[.455,.03,.515,.955],[.645,.045,.355,1],[.77,0,.175,1],[.86,0,.07,1],[.445,.05,.55,.95],[1,0,0,1],[.785,.135,.15,.86],[.68,-.55,.265,1.55],function(ai,Pi){return function(xi){return xi<.5?G(ai,Pi)(xi*2)/2:1-G(ai,Pi)(xi*-2+2)/2}}]},We={linear:[.25,.25,.75,.75]};for(var ut in me)for(var gt=0,Gt=me[ut].length;gt<Gt;gt++)We["ease"+ut+XA[gt]]=me[ut][gt];return We}();function Z(XA,me){if(l.fnc(XA))return XA;var We=XA.split("(")[0],ut=j[We],gt=N(XA);switch(We){case"spring":return Y(XA,me);case"cubicBezier":return h(U,gt);case"steps":return h(x,gt);default:return l.fnc(ut)?h(ut,gt):h(U,ut)}}function CA(XA){try{var me=document.querySelectorAll(XA);return me}catch{return}}var QA=[];function SA(XA,me){for(var We=QA,ut=XA.length,gt=arguments.length>=2?arguments[1]:void 0,Gt=0;Gt<ut;Gt++)if(Gt in XA){var ai=XA[Gt];me.call(gt,ai,Gt,XA)&&We.push(ai)}return QA=XA,QA.length=0,We}function UA(XA,me){me||(me=[]);for(var We=0,ut=XA.length;We<ut;We++){var gt=XA[We];Array.isArray(gt)?UA(gt,me):me.push(gt)}return me}function TA(XA){return l.arr(XA)?XA:(l.str(XA)&&(XA=CA(XA)||XA),XA instanceof NodeList||XA instanceof HTMLCollection?[].slice.call(XA):[XA])}function pA(XA,me){return XA.some(function(We){return We===me})}function hA(XA){var me={};for(var We in XA)me[We]=XA[We];return me}function uA(XA,me){var We=hA(XA);for(var ut in XA)We[ut]=me.hasOwnProperty(ut)?me[ut]:XA[ut];return We}function lA(XA,me){var We=hA(XA);for(var ut in me)We[ut]=l.und(XA[ut])?me[ut]:XA[ut];return We}var NA=/rgb\((\d+,\s*[\d]+,\s*[\d]+)\)/g;function HA(XA){var me=NA.exec(XA);return me?"rgba("+me[1]+",1)":XA}var pe=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,He=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;function Oe(XA){var me=XA.replace(pe,function(ai,Pi,xi,Ut){return Pi+Pi+xi+xi+Ut+Ut}),We=He.exec(me),ut=parseInt(We[1],16),gt=parseInt(We[2],16),Gt=parseInt(We[3],16);return"rgba("+ut+","+gt+","+Gt+",1)"}var ye=/hsl\((\d+),\s*([\d.]+)%,\s*([\d.]+)%\)/g,Ye=/hsla\((\d+),\s*([\d.]+)%,\s*([\d.]+)%,\s*([\d.]+)\)/g;function Et(XA){var me=ye.exec(XA)||Ye.exec(XA),We=parseInt(me[1],10)/360,ut=parseInt(me[2],10)/100,gt=parseInt(me[3],10)/100,Gt=me[4]||1;function ai(Pn,pr,Ro){return Ro<0&&(Ro+=1),Ro>1&&(Ro-=1),Ro<.16666666666666666?Pn+(pr-Pn)*6*Ro:Ro<.5?pr:Ro<.6666666666666666?Pn+(pr-Pn)*(.6666666666666666-Ro)*6:Pn}var Pi,xi,Ut;if(ut==0)Pi=xi=Ut=gt;else{var Qn=gt<.5?gt*(1+ut):gt+ut-gt*ut,mn=2*gt-Qn;Pi=ai(mn,Qn,We+.3333333333333333),xi=ai(mn,Qn,We),Ut=ai(mn,Qn,We-.3333333333333333)}return"rgba("+Pi*255+","+xi*255+","+Ut*255+","+Gt+")"}function ct(XA){if(l.rgb(XA))return HA(XA);if(l.hex(XA))return Oe(XA);if(l.hsl(XA))return Et(XA)}var q=/([\+\-]?[0-9#\.]+)(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/;function gA(XA){var me=q.exec(XA);if(me)return me[2]}function yA(XA){if(D(XA,"translate")||XA==="perspective")return"px";if(D(XA,"rotate")||D(XA,"skew"))return"deg"}function ge(XA,me){return l.fnc(XA)?XA(me.target,me.id,me.total):XA}function le(XA,me){return XA.getAttribute(me)}function Qt(XA,me,We){var ut=gA(me);if(pA([We,"deg","rad","turn"],ut))return me;var gt=T.CSS[me+We];if(!l.und(gt))return gt;var Gt=100,ai=document.createElement(XA.tagName),Pi=XA.parentNode&&XA.parentNode!==document?XA.parentNode:document.body;Pi.appendChild(ai),ai.style.position="absolute",ai.style.width=Gt+We;var xi=Gt/ai.offsetWidth;Pi.removeChild(ai);var Ut=xi*parseFloat(me);return T.CSS[me+We]=Ut,Ut}function Ct(XA,me,We){if(me in XA.style){var ut=me.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase(),gt=XA.style[me]||getComputedStyle(XA).getPropertyValue(ut)||"0";return We?Qt(XA,gt,We):gt}}function bt(XA,me){if(l.dom(XA)&&!l.inp(XA)&&(le(XA,me)||l.svg(XA)&&XA[me]))return"attribute";if(l.dom(XA)&&pA(_,me))return"transform";if(l.dom(XA)&&me!=="transform"&&Ct(XA,me))return"css";if(XA[me]!=null)return"object"}var pi=/(\w+)\(([^)]*)\)/g;function hi(XA){if(l.dom(XA)){for(var me=XA.style.transform||"",We=new Map,ut;ut=pi.exec(me);)We.set(ut[1],ut[2]);return We}}function un(XA,me,We,ut){var gt=D(me,"scale")?1:0+yA(me),Gt=hi(XA).get(me)||gt;return We&&(We.transforms.list.set(me,Gt),We.transforms.last=me),ut?Qt(XA,Gt,ut):Gt}function sn(XA,me,We,ut){switch(bt(XA,me)){case"transform":return un(XA,me,ut,We);case"css":return Ct(XA,me,We);case"attribute":return le(XA,me);default:return XA[me]||0}}var En=/^(\*=|\+=|-=)/;function bn(XA,me){var We=En.exec(XA);if(!We)return XA;var ut=gA(XA)||0,gt=parseFloat(me),Gt=parseFloat(XA.replace(We[0],""));switch(We[0][0]){case"+":return gt+Gt+ut;case"-":return gt-Gt+ut;case"*":return gt*Gt+ut}}var go=/\s/g;function Ao(XA,me){if(l.col(XA))return ct(XA);var We=gA(XA),ut=We?XA.substr(0,XA.length-We.length):XA;return me&&!go.test(XA)?ut+me:ut}function Kn(XA,me){return Math.sqrt(Math.pow(me.x-XA.x,2)+Math.pow(me.y-XA.y,2))}function _o(XA){return Math.PI*2*le(XA,"r")}function Kt(XA){return le(XA,"width")*2+le(XA,"height")*2}function xA(XA){return Kn({x:le(XA,"x1"),y:le(XA,"y1")},{x:le(XA,"x2"),y:le(XA,"y2")})}function vA(XA){for(var me=XA.points,We=0,ut,gt=0;gt<me.numberOfItems;gt++){var Gt=me.getItem(gt);gt>0&&(We+=Kn(ut,Gt)),ut=Gt}return We}function ie(XA){var me=XA.points;return vA(XA)+Kn(me.getItem(me.numberOfItems-1),me.getItem(0))}function ZA(XA){if(XA.getTotalLength)return XA.getTotalLength();switch(XA.tagName.toLowerCase()){case"circle":return _o(XA);case"rect":return Kt(XA);case"line":return xA(XA);case"polyline":return vA(XA);case"polygon":return ie(XA)}}function jA(XA){var me=ZA(XA);return XA.setAttribute("stroke-dasharray",me),me}function Be(XA){for(var me=XA.parentNode;l.svg(me)&&(me=me.parentNode,!!l.svg(me.parentNode)););return me}function aA(XA,me){var We=me||{},ut=We.el||Be(XA),gt=ut.getBoundingClientRect(),Gt=le(ut,"viewBox"),ai=gt.width,Pi=gt.height,xi=We.viewBox||(Gt?Gt.split(" "):[0,0,ai,Pi]);return{el:ut,viewBox:xi,x:xi[0]/1,y:xi[1]/1,w:ai/xi[2],h:Pi/xi[3]}}function H(XA,me){var We=l.str(XA)?CA(XA)[0]:XA,ut=me||100;return function(gt){return{property:gt,el:We,svg:aA(We),totalLength:ZA(We)*(ut/100)}}}function k(XA,me){function We(Pi){Pi===void 0&&(Pi=0);var xi=me+Pi>=1?me+Pi:0;return XA.el.getPointAtLength(xi)}var ut=aA(XA.el,XA.svg),gt=We(),Gt=We(-1),ai=We(1);switch(XA.property){case"x":return(gt.x-ut.x)*ut.w;case"y":return(gt.y-ut.y)*ut.h;case"angle":return Math.atan2(ai.y-Gt.y,ai.x-Gt.x)*180/Math.PI}}var DA=/-?\d*\.?\d+/g;function YA(XA,me){var We=Ao(l.pth(XA)?XA.totalLength:XA,me)+"";return{original:We,numbers:We.match(DA)?We.match(DA).map(Number):[0],strings:l.str(XA)||me?We.split(DA):[]}}function ue(XA){var me=XA?UA(l.arr(XA)?XA.map(TA):TA(XA)):[];return SA(me,function(We,ut,gt){return gt.indexOf(We)===ut})}function De(XA){var me=ue(XA);return me.map(function(We,ut){return{target:We,id:ut,total:me.length,transforms:{list:hi(We)}}})}var si=/^spring/;function Mi(XA,me){var We=hA(me);if(si.test(We.easing)&&(We.duration=Y(We.easing)),l.arr(XA)){var ut=XA.length,gt=ut===2&&!l.obj(XA[0]);gt?XA={value:XA}:l.fnc(me.duration)||(We.duration=me.duration/ut)}var Gt=l.arr(XA)?XA:[XA];return Gt.map(function(ai,Pi){var xi=l.obj(ai)&&!l.pth(ai)?ai:{value:ai};return l.und(xi.delay)&&(xi.delay=Pi?0:me.delay),l.und(xi.endDelay)&&(xi.endDelay=Pi===Gt.length-1?me.endDelay:0),xi}).map(function(ai){return lA(ai,We)})}function Si(XA){for(var me=SA(UA(XA.map(function(Gt){return Object.keys(Gt)})),function(Gt){return l.key(Gt)}).reduce(function(Gt,ai){return Gt.indexOf(ai)<0&&Gt.push(ai),Gt},[]),We={},ut=function(Gt){var ai=me[Gt];We[ai]=XA.map(function(Pi){var xi={};for(var Ut in Pi)l.key(Ut)?Ut==ai&&(xi.value=Pi[Ut]):xi[Ut]=Pi[Ut];return xi})},gt=0;gt<me.length;gt++)ut(gt);return We}function nn(XA,me){var We=[],ut=me.keyframes;ut&&(me=lA(Si(ut),me));for(var gt in me)l.key(gt)&&We.push({name:gt,tweens:Mi(me[gt],XA)});return We}function zi(XA,me){var We={};for(var ut in XA){var gt=ge(XA[ut],me);l.arr(gt)&&(gt=gt.map(function(Gt){return ge(Gt,me)}),gt.length===1&&(gt=gt[0])),We[ut]=gt}return We.duration=parseFloat(We.duration),We.delay=parseFloat(We.delay),We}function Zr(XA,me){var We;return XA.tweens.map(function(ut){var gt=zi(ut,me),Gt=gt.value,ai=l.arr(Gt)?Gt[1]:Gt,Pi=gA(ai),xi=sn(me.target,XA.name,Pi,me),Ut=We?We.to.original:xi,Qn=l.arr(Gt)?Gt[0]:Ut,mn=gA(Qn)||gA(xi),Pn=Pi||mn;return l.und(ai)&&(ai=Ut),gt.from=YA(Qn,Pn),gt.to=YA(bn(ai,Qn),Pn),gt.start=We?We.end:0,gt.end=gt.start+gt.delay+gt.duration+gt.endDelay,gt.easing=Z(gt.easing,gt.duration),gt.isPath=l.pth(Gt),gt.isColor=l.col(gt.from.original),gt.isColor&&(gt.round=1),We=gt,gt})}var kn={css:function(XA,me,We){return XA.style[me]=We},attribute:function(XA,me,We){return XA.setAttribute(me,We)},object:function(XA,me,We){return XA[me]=We},transform:function(XA,me,We,ut,gt){if(ut.list.set(me,We),me===ut.last||gt){var Gt="";ut.list.forEach(function(ai,Pi){Gt+=Pi+"("+ai+") "}),XA.style.transform=Gt}}};function hr(XA,me){for(var We=De(XA),ut=0,gt=We.length;ut<gt;ut++){var Gt=We[ut];for(var ai in me){var Pi=ge(me[ai],Gt),xi=Gt.target,Ut=gA(Pi),Qn=sn(xi,ai,Ut,Gt),mn=Ut||gA(Qn),Pn=bn(Ao(Pi,mn),Qn),pr=bt(xi,ai);kn[pr](xi,ai,Pn,Gt.transforms,!0)}}}function Ss(XA,me){var We=bt(XA.target,me.name);if(We){var ut=Zr(me,XA),gt=ut[ut.length-1];return{type:We,property:me.name,animatable:XA,tweens:ut,duration:gt.end,delay:ut[0].delay,endDelay:gt.endDelay}}}function is(XA,me){return SA(UA(XA.map(function(We){return me.map(function(ut){return Ss(We,ut)})})),function(We){return!l.und(We)})}function cg(XA,me){var We=XA.length,ut=function(Gt){return Gt.timelineOffset?Gt.timelineOffset:0},gt={};return gt.duration=We?Math.max.apply(Math,XA.map(function(Gt){return ut(Gt)+Gt.duration})):me.duration,gt.delay=We?Math.min.apply(Math,XA.map(function(Gt){return ut(Gt)+Gt.delay})):me.delay,gt.endDelay=We?gt.duration-Math.max.apply(Math,XA.map(function(Gt){return ut(Gt)+Gt.duration-Gt.endDelay})):me.endDelay,gt}var ns=0;function Tg(XA){var me=uA(s,XA),We=uA(z,XA),ut=nn(We,XA),gt=De(XA.targets),Gt=is(gt,ut),ai=cg(Gt,We),Pi=ns;return ns++,lA(me,{id:Pi,children:[],animatables:gt,animations:Gt,duration:ai.duration,delay:ai.delay,endDelay:ai.endDelay})}var ps=[],Wg=[],os,Da=function(){function XA(){os=requestAnimationFrame(me)}function me(We){var ut=ps.length;if(ut){for(var gt=0;gt<ut;){var Gt=ps[gt];if(!Gt.paused)Gt.tick(We);else{var ai=ps.indexOf(Gt);ai>-1&&(ps.splice(ai,1),ut=ps.length)}gt++}XA()}else os=cancelAnimationFrame(os)}return XA}();function Kg(){if(document.hidden){for(var XA=0,me=ps.length;XA<me;XA++)activeInstance[XA].pause();Wg=ps.slice(0),ps=[]}else for(var We=0,ut=Wg.length;We<ut;We++)Wg[We].play()}document.addEventListener("visibilitychange",Kg);function lr(XA){XA===void 0&&(XA={});var me=0,We=0,ut=0,gt,Gt=0,ai=null;function Pi(){return window.Promise&&new Promise(function(On){return ai=On})}var xi=Pi(),Ut=Tg(XA);function Qn(){Ut.reversed=!Ut.reversed;for(var On=0,Go=gt.length;On<Go;On++)gt[On].reversed=Ut.reversed}function mn(On){return Ut.reversed?Ut.duration-On:On}function Pn(){me=0,We=mn(Ut.currentTime)*(1/lr.speed)}function pr(On,Go){Go&&Go.seek(On-Go.timelineOffset)}function Ro(On){if(Ut.reversePlayback)for(var Ys=Gt;Ys--;)pr(On,gt[Ys]);else for(var Go=0;Go<Gt;Go++)pr(On,gt[Go])}function ao(On){for(var Go=0,Ys=Ut.animations,og=Ys.length;Go<og;){var Ur=Ys[Go],Ng=Ur.animatable,Ug=Ur.tweens,Gg=Ug.length-1,Hr=Ug[Gg];Gg&&(Hr=SA(Ug,function(Ia){return On<Ia.end})[0]||Hr);for(var Vg=v(On-Hr.start-Hr.delay,0,Hr.duration)/Hr.duration,Fg=isNaN(Vg)?1:Hr.easing(Vg),ra=Hr.to.strings,sa=Hr.round,ga=[],qa=Hr.to.numbers.length,Zg=void 0,jg=0;jg<qa;jg++){var hg=void 0,Xg=Hr.to.numbers[jg],aa=Hr.from.numbers[jg]||0;Hr.isPath?hg=k(Hr.value,Fg*Xg):hg=aa+Fg*(Xg-aa),sa&&(Hr.isColor&&jg>2||(hg=Math.round(hg*sa)/sa)),ga.push(hg)}var lg=ra.length;if(!lg)Zg=ga[0];else{Zg=ra[0];for(var rg=0;rg<lg;rg++){ra[rg];var Lg=ra[rg+1],Rs=ga[rg];isNaN(Rs)||(Lg?Zg+=Rs+Lg:Zg+=Rs+" ")}}kn[Ur.type](Ng.target,Ur.property,Zg,Ng.transforms),Ur.currentValue=Zg,Go++}}function Uo(On){Ut[On]&&!Ut.passThrough&&Ut[On](Ut)}function Yr(){Ut.remaining&&Ut.remaining!==!0&&Ut.remaining--}function $r(On){var Go=Ut.duration,Ys=Ut.delay,og=Go-Ut.endDelay,Ur=mn(On);Ut.progress=v(Ur/Go*100,0,100),Ut.reversePlayback=Ur<Ut.currentTime,gt&&Ro(Ur),!Ut.began&&Ut.currentTime>0&&(Ut.began=!0,Uo("begin"),Uo("loopBegin")),Ur<=Ys&&Ut.currentTime!==0&&ao(0),(Ur>=og&&Ut.currentTime!==Go||!Go)&&ao(Go),Ur>Ys&&Ur<og?(Ut.changeBegan||(Ut.changeBegan=!0,Ut.changeCompleted=!1,Uo("changeBegin")),Uo("change"),ao(Ur)):Ut.changeBegan&&(Ut.changeCompleted=!0,Ut.changeBegan=!1,Uo("changeComplete")),Ut.currentTime=v(Ur,0,Go),Ut.began&&Uo("update"),On>=Go&&(We=0,Yr(),Ut.remaining?(me=ut,Uo("loopComplete"),Uo("loopBegin"),Ut.direction==="alternate"&&Qn()):(Ut.paused=!0,Ut.completed||(Ut.completed=!0,Uo("loopComplete"),Uo("complete"),"Promise"in window&&(ai(),xi=Pi()))))}return Ut.reset=function(){var On=Ut.direction;Ut.passThrough=!1,Ut.currentTime=0,Ut.progress=0,Ut.paused=!0,Ut.began=!1,Ut.changeBegan=!1,Ut.completed=!1,Ut.changeCompleted=!1,Ut.reversePlayback=!1,Ut.reversed=On==="reverse",Ut.remaining=Ut.loop,gt=Ut.children,Gt=gt.length;for(var Go=Gt;Go--;)Ut.children[Go].reset();(Ut.reversed&&Ut.loop!==!0||On==="alternate"&&Ut.loop===1)&&Ut.remaining++,ao(0)},Ut.set=function(On,Go){return hr(On,Go),Ut},Ut.tick=function(On){ut=On,me||(me=ut),$r((ut+(We-me))*lr.speed)},Ut.seek=function(On){$r(mn(On))},Ut.pause=function(){Ut.paused=!0,Pn()},Ut.play=function(){Ut.paused&&(Ut.paused=!1,ps.push(Ut),Pn(),os||Da())},Ut.reverse=function(){Qn(),Pn()},Ut.restart=function(){Ut.reset(),Ut.play()},Ut.finished=xi,Ut.reset(),Ut.autoplay&&Ut.play(),Ut}function Nr(XA,me){for(var We=me.length;We--;)pA(XA,me[We].animatable.target)&&me.splice(We,1)}function ya(XA){for(var me=ue(XA),We=ps.length;We--;){var ut=ps[We],gt=ut.animations,Gt=ut.children;Nr(me,gt);for(var ai=Gt.length;ai--;){var Pi=Gt[ai],xi=Pi.animations;Nr(me,xi),!xi.length&&!Pi.children.length&&Gt.splice(ai,1)}!gt.length&&!Gt.length&&ut.pause()}}function oa(XA,me){me===void 0&&(me={});var We=me.direction||"normal",ut=me.easing?Z(me.easing):null,gt=me.grid,Gt=me.axis,ai=me.from||0,Pi=ai==="first",xi=ai==="center",Ut=ai==="last",Qn=l.arr(XA),mn=parseFloat(Qn?XA[0]:XA),Pn=Qn?parseFloat(XA[1]):0,pr=gA(Qn?XA[1]:XA)||0,Ro=me.start||0+(Qn?mn:0),ao=[],Uo=0;return function(Yr,$r,On){if(Pi&&(ai=0),xi&&(ai=(On-1)/2),Ut&&(ai=On-1),!ao.length){for(var Go=0;Go<On;Go++){if(!gt)ao.push(Math.abs(ai-Go));else{var Ys=xi?(gt[0]-1)/2:ai%gt[0],og=xi?(gt[1]-1)/2:Math.floor(ai/gt[0]),Ur=Go%gt[0],Ng=Math.floor(Go/gt[0]),Ug=Ys-Ur,Gg=og-Ng,Hr=Math.sqrt(Ug*Ug+Gg*Gg);Gt==="x"&&(Hr=-Ug),Gt==="y"&&(Hr=-Gg),ao.push(Hr)}Uo=Math.max.apply(Math,ao)}ut&&(ao=ao.map(function(Fg){return ut(Fg/Uo)*Uo})),We==="reverse"&&(ao=ao.map(function(Fg){return Gt?Fg<0?Fg*-1:-Fg:Math.abs(Uo-Fg)}))}var Vg=Qn?(Pn-mn)/Uo:mn;return Ro+Vg*(Math.round(ao[$r]*100)/100)+pr}}function wa(XA){XA===void 0&&(XA={});var me=lr(XA);return me.duration=0,me.add=function(We,ut){var gt=ps.indexOf(me),Gt=me.children;gt>-1&&ps.splice(gt,1);function ai(Pn){Pn.passThrough=!0}for(var Pi=0;Pi<Gt.length;Pi++)ai(Gt[Pi]);var xi=lA(We,uA(z,XA));xi.targets=xi.targets||XA.targets;var Ut=me.duration;xi.autoplay=!1,xi.direction=me.direction,xi.timelineOffset=l.und(ut)?Ut:bn(ut,Ut),ai(me),me.seek(xi.timelineOffset);var Qn=lr(xi);ai(Qn),Gt.push(Qn);var mn=cg(Gt,XA);return me.delay=mn.delay,me.endDelay=mn.endDelay,me.duration=mn.duration,me.seek(0),me.reset(),me.autoplay&&me.play(),me},me}lr.version="3.0.0",lr.speed=1,lr.running=ps,lr.remove=ya,lr.get=sn,lr.set=hr,lr.convertPx=Qt,lr.path=H,lr.setDashoffset=jA,lr.stagger=oa,lr.timeline=wa,lr.easing=Z,lr.penner=j,lr.random=function(XA,me){return Math.floor(Math.random()*(me-XA+1))+XA};const Ka=lr},"./node_modules/three-bmfont-text/index.js":(_A,O,d)=>{var s=d("./node_modules/layout-bmfont-text/index.js"),z=d("./node_modules/quad-indices/index.js"),_=d("./node_modules/three-bmfont-text/lib/vertices.js"),T=d("./node_modules/three-bmfont-text/lib/utils.js");_A.exports=function(h){return new v(h)};class v extends THREE.BufferGeometry{constructor(h){super(),typeof h=="string"&&(h={text:h}),this._opt=Object.assign({},h),h&&this.update(h)}update(h){if(typeof h=="string"&&(h={text:h}),h=Object.assign({},this._opt,h),!h.font)throw new TypeError("must specify a { font } in options");this.layout=s(h);var p=h.flipY!==!1,m=h.font,u=m.common.scaleW,l=m.common.scaleH,R=this.layout.glyphs.filter(function(U){var j=U.data;return j.width*j.height>0});this.visibleGlyphs=R;var N=_.positions(R),Y=_.uvs(R,u,l,p),G=z([],{clockwise:!0,type:"uint16",count:R.length});if(this.setIndex(G),this.setAttribute("position",new THREE.BufferAttribute(N,2)),this.setAttribute("uv",new THREE.BufferAttribute(Y,2)),!h.multipage&&"page"in this.attributes)this.removeAttribute("page");else if(h.multipage){var x=_.pages(R);this.setAttribute("page",new THREE.BufferAttribute(x,1))}this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere()}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new THREE.Sphere);var h=this.attributes.position.array,p=this.attributes.position.itemSize;if(!h||!p||h.length<2){this.boundingSphere.radius=0,this.boundingSphere.center.set(0,0,0);return}T.computeSphere(h,this.boundingSphere),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.')}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new THREE.Box3);var h=this.boundingBox,p=this.attributes.position.array,m=this.attributes.position.itemSize;if(!p||!m||p.length<2){h.makeEmpty();return}T.computeBox(p,h)}}},"./node_modules/three-bmfont-text/lib/utils.js":_A=>{var O=2,d={min:[0,0],max:[0,0]};function s(z){var _=z.length/O;d.min[0]=z[0],d.min[1]=z[1],d.max[0]=z[0],d.max[1]=z[1];for(var T=0;T<_;T++){var v=z[T*O+0],D=z[T*O+1];d.min[0]=Math.min(v,d.min[0]),d.min[1]=Math.min(D,d.min[1]),d.max[0]=Math.max(v,d.max[0]),d.max[1]=Math.max(D,d.max[1])}}_A.exports.computeBox=function(z,_){s(z),_.min.set(d.min[0],d.min[1],0),_.max.set(d.max[0],d.max[1],0)},_A.exports.computeSphere=function(z,_){s(z);var T=d.min[0],v=d.min[1],D=d.max[0],h=d.max[1],p=D-T,m=h-v,u=Math.sqrt(p*p+m*m);_.center.set(T+p/2,v+m/2,0),_.radius=u/2}},"./node_modules/three-bmfont-text/lib/vertices.js":_A=>{_A.exports.pages=function(d){var s=new Float32Array(d.length*4*1),z=0;return d.forEach(function(_){var T=_.data.page||0;s[z++]=T,s[z++]=T,s[z++]=T,s[z++]=T}),s},_A.exports.uvs=function(d,s,z,_){var T=new Float32Array(d.length*4*2),v=0;return d.forEach(function(D){var h=D.data,p=h.x+h.width,m=h.y+h.height,u=h.x/s,l=h.y/z,R=p/s,N=m/z;_&&(l=(z-h.y)/z,N=(z-m)/z),T[v++]=u,T[v++]=l,T[v++]=u,T[v++]=N,T[v++]=R,T[v++]=N,T[v++]=R,T[v++]=l}),T},_A.exports.positions=function(d){var s=new Float32Array(d.length*4*2),z=0;return d.forEach(function(_){var T=_.data,v=_.position[0]+T.xoffset,D=_.position[1]+T.yoffset,h=T.width,p=T.height;s[z++]=v,s[z++]=D,s[z++]=v,s[z++]=D+p,s[z++]=v+h,s[z++]=D+p,s[z++]=v+h,s[z++]=D}),s}},"./node_modules/word-wrapper/index.js":_A=>{var O=/\n/,d=`
`,s=/\s/;_A.exports=function(h,p){var m=_A.exports.lines(h,p);return m.map(function(u){return h.substring(u.start,u.end)}).join(`
`)},_A.exports.lines=function(p,m){if(m=m||{},m.width===0&&m.mode!=="nowrap")return[];p=p||"";var u=typeof m.width=="number"?m.width:Number.MAX_VALUE,l=Math.max(0,m.start||0),R=typeof m.end=="number"?m.end:p.length,N=m.mode,Y=m.measure||D;return N==="pre"?T(Y,p,l,R,u):v(Y,p,l,R,u,N)};function z(h,p,m,u){var l=h.indexOf(p,m);return l===-1||l>u?u:l}function _(h){return s.test(h)}function T(h,p,m,u,l){for(var R=[],N=m,Y=m;Y<u&&Y<p.length;Y++){var G=p.charAt(Y),x=O.test(G);if(x||Y===u-1){var U=x?Y:Y+1,j=h(p,N,U,l);R.push(j),N=Y+1}}return R}function v(h,p,m,u,l,R){var N=[],Y=l;for(R==="nowrap"&&(Y=Number.MAX_VALUE);m<u&&m<p.length;){for(var G=z(p,d,m,u);m<G&&_(p.charAt(m));)m++;var x=h(p,m,G,Y),U=m+(x.end-x.start),j=U+d.length;if(U<G){for(;U>m&&!_(p.charAt(U));)U--;if(U===m)j>m+d.length&&j--,U=j;else for(j=U;U>m&&_(p.charAt(U-d.length));)U--}if(U>=m){var Z=h(p,m,U,Y);N.push(Z)}m=j}return N}function D(h,p,m,u){var l=Math.min(u,m-p);return{start:p,end:p+l}}},"./node_modules/xhr/index.js":(_A,O,d)=>{var s=d("./node_modules/global/window.js"),z=d("./node_modules/is-function/index.js"),_=d("./node_modules/parse-headers/parse-headers.js"),T=d("./node_modules/xtend/immutable.js");_A.exports=p,_A.exports.default=p,p.XMLHttpRequest=s.XMLHttpRequest||l,p.XDomainRequest="withCredentials"in new p.XMLHttpRequest?p.XMLHttpRequest:s.XDomainRequest,v(["get","put","post","patch","head","delete"],function(R){p[R==="delete"?"del":R]=function(N,Y,G){return Y=h(N,Y,G),Y.method=R.toUpperCase(),m(Y)}});function v(R,N){for(var Y=0;Y<R.length;Y++)N(R[Y])}function D(R){for(var N in R)if(R.hasOwnProperty(N))return!1;return!0}function h(R,N,Y){var G=R;return z(N)?(Y=N,typeof R=="string"&&(G={uri:R})):G=T(N,{uri:R}),G.callback=Y,G}function p(R,N,Y){return N=h(R,N,Y),m(N)}function m(R){if(typeof R.callback>"u")throw new Error("callback argument missing");var N=!1,Y=function(pe,He,Oe){N||(N=!0,R.callback(pe,He,Oe))};function G(){Z.readyState===4&&setTimeout(j,0)}function x(){var HA=void 0;if(Z.response?HA=Z.response:HA=Z.responseText||u(Z),uA)try{HA=JSON.parse(HA)}catch{}return HA}function U(HA){return clearTimeout(lA),HA instanceof Error||(HA=new Error(""+(HA||"Unknown XMLHttpRequest Error"))),HA.statusCode=0,Y(HA,NA)}function j(){if(!QA){var HA;clearTimeout(lA),R.useXDR&&Z.status===void 0?HA=200:HA=Z.status===1223?204:Z.status;var pe=NA,He=null;return HA!==0?(pe={body:x(),statusCode:HA,method:UA,headers:{},url:SA,rawRequest:Z},Z.getAllResponseHeaders&&(pe.headers=_(Z.getAllResponseHeaders()))):He=new Error("Internal XMLHttpRequest Error"),Y(He,pe,pe.body)}}var Z=R.xhr||null;Z||(R.cors||R.useXDR?Z=new p.XDomainRequest:Z=new p.XMLHttpRequest);var CA,QA,SA=Z.url=R.uri||R.url,UA=Z.method=R.method||"GET",TA=R.body||R.data,pA=Z.headers=R.headers||{},hA=!!R.sync,uA=!1,lA,NA={body:void 0,headers:{},statusCode:0,method:UA,url:SA,rawRequest:Z};if("json"in R&&R.json!==!1&&(uA=!0,pA.accept||pA.Accept||(pA.Accept="application/json"),UA!=="GET"&&UA!=="HEAD"&&(pA["content-type"]||pA["Content-Type"]||(pA["Content-Type"]="application/json"),TA=JSON.stringify(R.json===!0?TA:R.json))),Z.onreadystatechange=G,Z.onload=j,Z.onerror=U,Z.onprogress=function(){},Z.onabort=function(){QA=!0},Z.ontimeout=U,Z.open(UA,SA,!hA,R.username,R.password),hA||(Z.withCredentials=!!R.withCredentials),!hA&&R.timeout>0&&(lA=setTimeout(function(){if(!QA){QA=!0,Z.abort("timeout");var HA=new Error("XMLHttpRequest timeout");HA.code="ETIMEDOUT",U(HA)}},R.timeout)),Z.setRequestHeader)for(CA in pA)pA.hasOwnProperty(CA)&&Z.setRequestHeader(CA,pA[CA]);else if(R.headers&&!D(R.headers))throw new Error("Headers cannot be set on an XDomainRequest object");return"responseType"in R&&(Z.responseType=R.responseType),"beforeSend"in R&&typeof R.beforeSend=="function"&&R.beforeSend(Z),Z.send(TA||null),Z}function u(R){try{if(R.responseType==="document")return R.responseXML;var N=R.responseXML&&R.responseXML.documentElement.nodeName==="parsererror";if(R.responseType===""&&!N)return R.responseXML}catch{}return null}function l(){}},"./node_modules/xml-parse-from-string/index.js":_A=>{_A.exports=function(){return typeof self.DOMParser<"u"?function(d){var s=new self.DOMParser;return s.parseFromString(d,"application/xml")}:typeof self.ActiveXObject<"u"&&new self.ActiveXObject("Microsoft.XMLDOM")?function(d){var s=new self.ActiveXObject("Microsoft.XMLDOM");return s.async="false",s.loadXML(d),s}:function(d){var s=document.createElement("div");return s.innerHTML=d,s}}()},"./node_modules/xtend/immutable.js":_A=>{_A.exports=d;var O=Object.prototype.hasOwnProperty;function d(){for(var s={},z=0;z<arguments.length;z++){var _=arguments[z];for(var T in _)O.call(_,T)&&(s[T]=_[T])}return s}},"./src/components/anchored.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>v});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T=_.debug("components:anchored:warn"),v=(0,z.registerComponent)("anchored",{schema:{persistent:{default:!1}},init:function(){var h=this.el.sceneEl,p=h.getAttribute("webxr"),m=p.optionalFeatures;m.indexOf("anchors")===-1&&(m.push("anchors"),this.el.sceneEl.setAttribute("webxr",p)),this.auxQuaternion=new s.Quaternion,this.onEnterVR=this.onEnterVR.bind(this),this.el.sceneEl.addEventListener("enter-vr",this.onEnterVR)},onEnterVR:function(){this.anchor=void 0,this.requestPersistentAnchorPending=this.data.persistent,this.requestAnchorPending=!this.data.persistent},tick:function(){var h=this.el.sceneEl,p=h.renderer.xr,m,u,l,R=this.el.object3D;!h.is("ar-mode")&&!h.is("vr-mode")||(!this.anchor&&this.requestPersistentAnchorPending&&this.restorePersistentAnchor(),!this.anchor&&this.requestAnchorPending&&this.createAnchor(),this.anchor&&(m=h.frame,u=p.getReferenceSpace(),l=m.getPose(this.anchor.anchorSpace,u),R.position.copy(l.transform.position),R.quaternion.copy(l.transform.orientation)))},createAnchor:async function(p,m){var u=this.el.sceneEl,l=u.renderer.xr,R,N,Y,G,x=this.el.object3D;if(p=p||x.position,m=m||this.auxQuaternion.setFromEuler(x.rotation),!D(u)){T("This browser doesn't support the WebXR anchors module");return}this.anchor&&this.deleteAnchor(),R=u.frame,N=l.getReferenceSpace(),Y=new XRRigidTransform({x:p.x,y:p.y,z:p.z},{x:m.x,y:m.y,z:m.z,w:m.w}),this.requestAnchorPending=!1,G=await R.createAnchor(Y,N),this.data.persistent&&(this.el.id?(this.persistentHandle=await G.requestPersistentHandle(),localStorage.setItem(this.el.id,this.persistentHandle)):T("The anchor won't be persisted because the entity has no assigned id.")),u.object3D.attach(this.el.object3D),this.anchor=G},restorePersistentAnchor:async function(){var p=this.el.sceneEl.renderer.xr,m=p.getSession(),u=m.persistentAnchors,l;if(this.requestPersistentAnchorPending=!1,!this.el.id){T("The entity associated to the persistent anchor cannot be retrieved because it doesn't have an assigned id."),this.requestAnchorPending=!0;return}if(u){l=localStorage.getItem(this.el.id);for(var R=0;R<u.length;++R)if(l===u[R]){this.anchor=await m.restorePersistentAnchor(u[R]),this.anchor&&(this.persistentHandle=u[R]);break}this.anchor||(this.requestAnchorPending=!0)}else this.requestPersistentAnchorPending=!0},deleteAnchor:function(){var h,p,m=this.anchor;m&&(h=this.el.sceneEl.renderer.xr,p=h.getSession(),m.delete(),this.el.sceneEl.object3D.add(this.el.object3D),this.persistentHandle&&p.deletePersistentAnchor(this.persistentHandle),this.anchor=void 0)}});function D(h){var p=h.renderer.xr,m=p.getSession();return m&&m.restorePersistentAnchor}},"./src/components/animation.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>x});var s=d("./node_modules/three/build/three.core.js"),z=d("./node_modules/super-animejs/lib/anime.es.js"),_=d("./src/core/component.js"),T=d("./src/utils/index.js"),v=new s.Color,D=new s.Color,h=T.entity.getComponentProperty,p=T.entity.setComponentProperty,m={},u="color",l="position",R="rotation",N="scale",Y="components",G="object3D",x=(0,_.registerComponent)("animation",{schema:{autoplay:{default:!0},delay:{default:0},dir:{default:""},dur:{default:1e3},easing:{default:"easeInQuad"},elasticity:{default:400},enabled:{default:!0},from:{default:""},loop:{default:0,parse:function(pA){return pA===!0||pA==="true"?!0:pA===!1||pA==="false"?!1:parseInt(pA,10)}},property:{default:""},startEvents:{type:"array"},pauseEvents:{type:"array"},resumeEvents:{type:"array"},round:{default:!1},to:{default:""},type:{default:""},isRawProperty:{default:!1}},multiple:!0,init:function(){var pA=this;this.eventDetail={name:this.attrName},this.time=0,this.animation=null,this.animationIsPlaying=!1,this.onStartEvent=this.onStartEvent.bind(this),this.beginAnimation=this.beginAnimation.bind(this),this.pauseAnimation=this.pauseAnimation.bind(this),this.resumeAnimation=this.resumeAnimation.bind(this),this.fromColor={},this.toColor={},this.targets={},this.targetsArray=[],this.updateConfigForDefault=this.updateConfigForDefault.bind(this),this.updateConfigForRawColor=this.updateConfigForRawColor.bind(this),this.config={complete:function(){pA.animationIsPlaying=!1,pA.el.emit("animationcomplete",pA.eventDetail,!1),pA.id&&pA.el.emit("animationcomplete__"+pA.id,pA.eventDetail,!1)}}},update:function(pA){var hA=this.config,uA=this.data;this.animationIsPlaying=!1,this.data.enabled&&uA.property&&(hA.autoplay=!1,hA.direction=uA.dir,hA.duration=uA.dur,hA.easing=uA.easing,hA.elasticity=uA.elasticity,hA.loop=uA.loop,hA.round=uA.round,this.createAndStartAnimation())},tick:function(pA,hA){this.animationIsPlaying&&(this.time+=hA,this.animation.tick(this.time))},remove:function(){this.pauseAnimation(),this.removeEventListeners()},pause:function(){this.paused=!0,this.pausedWasPlaying=this.animationIsPlaying,this.pauseAnimation(),this.removeEventListeners()},play:function(){this.paused&&(this.paused=!1,this.addEventListeners(),this.pausedWasPlaying&&(this.resumeAnimation(),this.pausedWasPlaying=!1))},createAndStartAnimation:function(){var pA=this.data;if(this.updateConfig(),this.animationIsPlaying=!1,this.animation=(0,z.default)(this.config),this.animation.began=!0,this.removeEventListeners(),this.addEventListeners(),!(!pA.autoplay||pA.startEvents&&pA.startEvents.length)){if(pA.delay){setTimeout(this.beginAnimation,pA.delay);return}this.beginAnimation()}},beginAnimation:function(){this.updateConfig(),this.animation.began=!0,this.time=0,this.animationIsPlaying=!0,this.stopRelatedAnimations(),this.el.emit("animationbegin",this.eventDetail,!1)},pauseAnimation:function(){this.animationIsPlaying=!1},resumeAnimation:function(){this.animationIsPlaying=!0},onStartEvent:function(){if(this.data.enabled){if(this.updateConfig(),this.animation&&this.animation.pause(),this.animation=(0,z.default)(this.config),this.data.delay){setTimeout(this.beginAnimation,this.data.delay);return}this.beginAnimation()}},updateConfigForRawColor:function(){var pA=this.config,hA=this.data,uA=this.el,lA,NA,HA;if(!this.waitComponentInitRawProperty(this.updateConfigForRawColor)){lA=hA.from===""?QA(uA,hA.property):hA.from,HA=hA.to,this.setColorConfig(lA,HA),lA=this.fromColor,HA=this.toColor,this.targetsArray.length=0,this.targetsArray.push(lA),pA.targets=this.targetsArray;for(NA in HA)pA[NA]=HA[NA];pA.update=function(){var pe={};return function(He){var Oe;Oe=He.animatables[0].target,!(Oe.r===pe.r&&Oe.g===pe.g&&Oe.b===pe.b)&&SA(uA,hA.property,Oe,hA.type)}}()}},updateConfigForDefault:function(){var pA=this.config,hA=this.data,uA=this.el,lA,NA,HA,pe;this.waitComponentInitRawProperty(this.updateConfigForDefault)||(hA.from===""?lA=TA(hA)?QA(uA,hA.property):h(uA,hA.property):lA=hA.from,pe=hA.to,HA=!isNaN(lA||pe),HA?(lA=parseFloat(lA),pe=parseFloat(pe)):(lA=lA&&lA.toString(),pe=pe&&pe.toString()),NA=hA.to==="true"||hA.to==="false"||hA.to===!0||hA.to===!1,NA&&(lA=hA.from==="true"||hA.from===!0?1:0,pe=hA.to==="true"||hA.to===!0?1:0),this.targets.aframeProperty=lA,pA.targets=this.targets,pA.aframeProperty=pe,pA.update=function(){var He;return function(Oe){var ye;ye=Oe.animatables[0].target.aframeProperty,ye!==He&&(He=ye,NA&&(ye=ye>=1),TA(hA)?SA(uA,hA.property,ye,hA.type):p(uA,hA.property,ye))}}())},updateConfigForVector:function(){var pA=this.config,hA=this.data,uA=this.el,lA,NA,HA,pe=UA(hA.property),He=pe[0]==="object3D"?pe[1]:pe[0];NA=hA.from!==""?T.coordinates.parse(hA.from):h(uA,He),HA=T.coordinates.parse(hA.to),He===R&&(j(NA),j(HA)),this.targetsArray.length=0,this.targetsArray.push(NA),pA.targets=this.targetsArray;for(lA in HA)pA[lA]=HA[lA];if(He===l||He===R||He===N){pA.update=function(){var Oe={};return function(ye){var Ye=ye.animatables[0].target;Ye.x===Oe.x&&Ye.y===Oe.y&&Ye.z===Oe.z||(Oe.x=Ye.x,Oe.y=Ye.y,Oe.z=Ye.z,uA.object3D[He].set(Ye.x,Ye.y,Ye.z))}}();return}pA.update=function(){var Oe={};return function(ye){var Ye=ye.animatables[0].target;Ye.x===Oe.x&&Ye.y===Oe.y&&Ye.z===Oe.z||(Oe.x=Ye.x,Oe.y=Ye.y,Oe.z=Ye.z,p(uA,hA.property,Ye))}}()},updateConfig:function(){var pA;pA=U(this.el,this.data.property),TA(this.data)&&this.data.type===u?this.updateConfigForRawColor():pA==="vec2"||pA==="vec3"||pA==="vec4"?this.updateConfigForVector():this.updateConfigForDefault()},waitComponentInitRawProperty:function(pA){var hA,uA=this.data,lA=this.el,NA=this;return uA.from!==""||!uA.property.startsWith(Y)||(hA=UA(uA.property)[1],lA.components[hA])?!1:(lA.addEventListener("componentinitialized",function HA(pe){pe.detail.name===hA&&(pA(),NA.animation=(0,z.default)(NA.config),lA.removeEventListener("componentinitialized",HA))}),!0)},stopRelatedAnimations:function(){var pA,hA;for(hA in this.el.components)pA=this.el.components[hA],hA!==this.attrName&&pA.name==="animation"&&pA.animationIsPlaying&&pA.data.property===this.data.property&&(pA.animationIsPlaying=!1)},addEventListeners:function(){var pA=this.data,hA=this.el;Z(hA,pA.startEvents,this.onStartEvent),Z(hA,pA.pauseEvents,this.pauseAnimation),Z(hA,pA.resumeEvents,this.resumeAnimation)},removeEventListeners:function(){var pA=this.data,hA=this.el;CA(hA,pA.startEvents,this.onStartEvent),CA(hA,pA.pauseEvents,this.pauseAnimation),CA(hA,pA.resumeEvents,this.resumeAnimation)},setColorConfig:function(pA,hA){v.set(pA),D.set(hA),pA=this.fromColor,hA=this.toColor,pA.r=v.r,pA.g=v.g,pA.b=v.b,hA.r=D.r,hA.g=D.g,hA.b=D.b}});function U(pA,hA){var uA,lA,NA,HA;return NA=hA.split("."),NA[0]==="object3D"&&!NA[2]&&(NA[1]==="position"||NA[1]==="rotation"||NA[1]==="scale")?"vec3":(lA=NA[0],HA=NA[1],uA=pA.components[lA]||_.components[lA],!uA||HA&&!uA.schema[HA]?null:HA?uA.schema[HA].type:uA.schema.type)}function j(pA){pA.x=s.MathUtils.degToRad(pA.x),pA.y=s.MathUtils.degToRad(pA.y),pA.z=s.MathUtils.degToRad(pA.z)}function Z(pA,hA,uA){var lA;for(lA=0;lA<hA.length;lA++)pA.addEventListener(hA[lA],uA)}function CA(pA,hA,uA){var lA;for(lA=0;lA<hA.length;lA++)pA.removeEventListener(hA[lA],uA)}function QA(pA,hA){var uA,lA,NA;for(lA=UA(hA),NA=pA,uA=0;uA<lA.length;uA++)NA=NA[lA[uA]];if(NA===void 0)throw console.log(pA),new Error("[animation] property ("+hA+") could not be found");return NA}function SA(pA,hA,uA,lA){var NA,HA,pe,He;for(hA.startsWith("object3D.rotation")&&(uA=s.MathUtils.degToRad(uA)),HA=UA(hA),He=pA,NA=0;NA<HA.length-1;NA++)He=He[HA[NA]];if(pe=HA[HA.length-1],lA===u){"r"in He[pe]?(He[pe].r=uA.r,He[pe].g=uA.g,He[pe].b=uA.b):(He[pe].x=uA.r,He[pe].y=uA.g,He[pe].z=uA.b);return}He[pe]=uA}function UA(pA){return pA in m||(m[pA]=pA.split(".")),m[pA]}function TA(pA){return pA.isRawProperty||pA.property.startsWith(Y)||pA.property.startsWith(G)}},"./src/components/camera.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>_});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=(0,z.registerComponent)("camera",{schema:{active:{default:!0},far:{default:1e4},fov:{default:80,min:0},near:{default:.005,min:0},spectator:{default:!1},zoom:{default:1,min:0}},init:function(){var T,v=this.el;T=this.camera=new s.PerspectiveCamera,v.setObject3D("camera",T)},update:function(T){var v=this.data,D=this.camera;D.aspect=v.aspect||window.innerWidth/window.innerHeight,D.far=v.far,D.fov=v.fov,D.near=v.near,D.zoom=v.zoom,D.updateProjectionMatrix(),this.updateActiveCamera(T),this.updateSpectatorCamera(T)},updateActiveCamera:function(T){var v=this.data,D=this.el,h=this.system;T&&T.active===v.active||v.spectator||(v.active&&h.activeCameraEl!==D?h.setActiveCamera(D):!v.active&&h.activeCameraEl===D&&h.disableActiveCamera())},updateSpectatorCamera:function(T){var v=this.data,D=this.el,h=this.system;T&&T.spectator===v.spectator||(v.spectator&&h.spectatorCameraEl!==D?h.setSpectatorCamera(D):!v.spectator&&h.spectatorCameraEl===D&&h.disableSpectatorCamera())},remove:function(){this.el.removeObject3D("camera")}})},"./src/components/cursor.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>m});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T={CLICK:"click",FUSING:"fusing",MOUSEENTER:"mouseenter",MOUSEDOWN:"mousedown",MOUSELEAVE:"mouseleave",MOUSEUP:"mouseup"},v={FUSING:"cursor-fusing",HOVERING:"cursor-hovering",HOVERED:"cursor-hovered"},D={DOWN:["mousedown","touchstart"],UP:["mouseup","touchend"]},h={DOWN:["selectstart"],UP:["selectend"]},p="a-mouse-cursor-hover",m=(0,z.registerComponent)("cursor",{dependencies:["raycaster"],schema:{downEvents:{default:[]},fuse:{default:_.device.isMobile()},fuseTimeout:{default:1500,min:0},mouseCursorStylesEnabled:{default:!0},upEvents:{default:[]},rayOrigin:{default:"entity",oneOf:["mouse","entity","xrselect"]}},after:["tracked-controls"],multiple:!0,init:function(){var u=this;this.fuseTimeout=void 0,this.cursorDownEl=null,this.intersectedEl=null,this.canvasBounds=document.body.getBoundingClientRect(),this.isCursorDown=!1,this.activeXRInput=null,this.updateCanvasBounds=_.debounce(function(){u.canvasBounds=u.el.sceneEl.canvas.getBoundingClientRect()},500),this.eventDetail={},this.intersectedEventDetail={cursorEl:this.el},this.onCursorDown=this.onCursorDown.bind(this),this.onCursorUp=this.onCursorUp.bind(this),this.onIntersection=this.onIntersection.bind(this),this.onIntersectionCleared=this.onIntersectionCleared.bind(this),this.onMouseMove=this.onMouseMove.bind(this),this.onEnterVR=this.onEnterVR.bind(this)},update:function(u){var l=this.data.rayOrigin;l!==u.rayOrigin&&(l==="entity"&&this.resetRaycaster(),this.updateMouseEventListeners(),(l==="xrselect"||l==="entity")&&this.addWebXREventListeners(),(u.rayOrigin==="xrselect"||u.rayOrigin==="entity")&&this.removeWebXREventListeners())},tick:function(){var u=this.el.sceneEl.frame,l=this.activeXRInput;this.data.rayOrigin==="xrselect"&&u&&l&&this.onMouseMove({frame:u,inputSource:l,type:"fakeselectevent"})},play:function(){this.addEventListeners()},pause:function(){this.removeEventListeners()},remove:function(){var u=this.el;u.removeState(v.HOVERING),u.removeState(v.FUSING),clearTimeout(this.fuseTimeout),this.intersectedEl&&this.intersectedEl.removeState(v.HOVERED),this.removeEventListeners()},addEventListeners:function(){var u,l=this.data,R=this.el,N=this;function Y(){u=R.sceneEl.canvas,!(l.downEvents.length||l.upEvents.length)&&(D.DOWN.forEach(function(G){u.addEventListener(G,N.onCursorDown,{passive:!1})}),D.UP.forEach(function(G){u.addEventListener(G,N.onCursorUp,{passive:!1})}))}u=R.sceneEl.canvas,u?Y():R.sceneEl.addEventListener("render-target-loaded",Y),l.downEvents.forEach(function(G){R.addEventListener(G,N.onCursorDown)}),l.upEvents.forEach(function(G){R.addEventListener(G,N.onCursorUp)}),R.addEventListener("raycaster-intersection",this.onIntersection),R.addEventListener("raycaster-closest-entity-changed",this.onIntersection),R.addEventListener("raycaster-intersection-cleared",this.onIntersectionCleared),R.sceneEl.addEventListener("rendererresize",this.updateCanvasBounds),R.sceneEl.addEventListener("enter-vr",this.onEnterVR),window.addEventListener("resize",this.updateCanvasBounds),window.addEventListener("scroll",this.updateCanvasBounds),this.updateMouseEventListeners()},removeEventListeners:function(){var u,l=this.data,R=this.el,N=this;u=R.sceneEl.canvas,u&&!l.downEvents.length&&!l.upEvents.length&&(D.DOWN.forEach(function(Y){u.removeEventListener(Y,N.onCursorDown)}),D.UP.forEach(function(Y){u.removeEventListener(Y,N.onCursorUp)})),l.downEvents.forEach(function(Y){R.removeEventListener(Y,N.onCursorDown)}),l.upEvents.forEach(function(Y){R.removeEventListener(Y,N.onCursorUp)}),R.removeEventListener("raycaster-intersection",this.onIntersection),R.removeEventListener("raycaster-closest-entity-changed",this.onIntersection),R.removeEventListener("raycaster-intersection-cleared",this.onIntersectionCleared),u.removeEventListener("mousemove",this.onMouseMove),u.removeEventListener("touchstart",this.onMouseMove),u.removeEventListener("touchmove",this.onMouseMove),R.sceneEl.removeEventListener("rendererresize",this.updateCanvasBounds),R.sceneEl.removeEventListener("enter-vr",this.onEnterVR),window.removeEventListener("resize",this.updateCanvasBounds),window.removeEventListener("scroll",this.updateCanvasBounds),this.removeWebXREventListeners()},updateMouseEventListeners:function(){var u,l=this.el;u=l.sceneEl.canvas,u.removeEventListener("mousemove",this.onMouseMove),u.removeEventListener("touchmove",this.onMouseMove),l.setAttribute("raycaster","useWorldCoordinates",!1),this.data.rayOrigin==="mouse"&&(u.addEventListener("mousemove",this.onMouseMove),u.addEventListener("touchmove",this.onMouseMove,{passive:!1}),l.setAttribute("raycaster","useWorldCoordinates",!0),this.updateCanvasBounds())},resetRaycaster:function(){this.el.setAttribute("raycaster",{direction:new s.Vector3().set(0,0,-1),origin:new s.Vector3})},addWebXREventListeners:function(){var u=this,l=this.el.sceneEl.xrSession;l&&(h.DOWN.forEach(function(R){l.addEventListener(R,u.onCursorDown)}),h.UP.forEach(function(R){l.addEventListener(R,u.onCursorUp)}))},removeWebXREventListeners:function(){var u=this,l=this.el.sceneEl.xrSession;l&&(h.DOWN.forEach(function(R){l.removeEventListener(R,u.onCursorDown)}),h.UP.forEach(function(R){l.removeEventListener(R,u.onCursorUp)}))},onMouseMove:function(){var u=new s.Vector3,l=new s.Vector2,R=new s.Vector3,N={origin:R,direction:u};return function(Y){var G=this.canvasBounds,x=this.el.sceneEl.camera,U,j,Z,CA,QA,SA,UA,TA,pA;x.parent.updateMatrixWorld(),Y.type==="touchmove"||Y.type==="touchstart"?Z=Y.touches.item(0):Z=Y,j=Z.clientX-G.left,CA=Z.clientY-G.top,l.x=j/G.width*2-1,l.y=-(CA/G.height)*2+1,this.data.rayOrigin==="xrselect"&&(Y.type==="selectstart"||Y.type==="fakeselectevent")?(QA=Y.frame,SA=Y.inputSource,UA=this.el.sceneEl.renderer.xr.getReferenceSpace(),TA=QA.getPose(SA.targetRaySpace,UA),TA&&(pA=TA.transform,u.set(0,0,-1),u.applyQuaternion(pA.orientation),R.copy(pA.position),U=x.el.object3D.parent,U.localToWorld(R),u.transformDirection(U.matrixWorld))):Y.type==="fakeselectout"?(u.set(0,1,0),R.set(0,9999,0)):x&&x.isPerspectiveCamera?(R.setFromMatrixPosition(x.matrixWorld),u.set(l.x,l.y,.5).unproject(x).sub(R).normalize()):x&&x.isOrthographicCamera?(R.set(l.x,l.y,(x.near+x.far)/(x.near-x.far)).unproject(x),u.set(0,0,-1).transformDirection(x.matrixWorld)):console.error("AFRAME.Raycaster: Unsupported camera type: "+x.type),this.el.setAttribute("raycaster",N),Y.type==="touchmove"&&Y.preventDefault()}}(),onCursorDown:function(u){this.isCursorDown=!0,this.data.rayOrigin==="mouse"&&u.type==="touchstart"&&(this.onMouseMove(u),this.el.components.raycaster.checkIntersections(),u.preventDefault()),this.data.rayOrigin==="xrselect"&&u.type==="selectstart"&&(this.activeXRInput=u.inputSource,this.onMouseMove(u),this.el.components.raycaster.checkIntersections(),this.el.components.raycaster.intersectedEls.length&&this.el.sceneEl.components["ar-hit-test"]!==void 0&&this.el.sceneEl.getAttribute("ar-hit-test").enabled&&(this.el.sceneEl.setAttribute("ar-hit-test","enabled",!1),this.reenableARHitTest=!0)),this.twoWayEmit(T.MOUSEDOWN,u),this.cursorDownEl=this.intersectedEl},onCursorUp:function(u){if(this.isCursorDown&&!(this.data.rayOrigin==="xrselect"&&this.activeXRInput!==u.inputSource)){this.isCursorDown=!1;var l=this.data;this.twoWayEmit(T.MOUSEUP,u),this.reenableARHitTest===!0&&(this.el.sceneEl.setAttribute("ar-hit-test","enabled",!0),this.reenableARHitTest=void 0),this.cursorDownEl&&this.cursorDownEl!==this.intersectedEl&&(this.intersectedEventDetail.intersection=null,this.cursorDownEl.emit(T.MOUSEUP,this.intersectedEventDetail)),(!l.fuse||l.rayOrigin==="mouse"||l.rayOrigin==="xrselect")&&this.intersectedEl&&this.cursorDownEl===this.intersectedEl&&this.twoWayEmit(T.CLICK,u),l.rayOrigin==="xrselect"&&this.onMouseMove({type:"fakeselectout"}),this.activeXRInput=null,this.cursorDownEl=null,u.type==="touchend"&&u.preventDefault()}},onIntersection:function(u){var l,R=this.el,N,Y,G;N=u.detail.els[0]===R?1:0,G=u.detail.intersections[N],Y=u.detail.els[N],Y&&this.intersectedEl!==Y&&(this.intersectedEl&&(l=this.el.components.raycaster.getIntersection(this.intersectedEl),l&&l.distance<=G.distance)||(this.clearCurrentIntersection(!0),this.setIntersection(Y,G)))},onIntersectionCleared:function(u){var l=u.detail.clearedEls;l.indexOf(this.intersectedEl)!==-1&&this.clearCurrentIntersection()},onEnterVR:function(){var u=this.data.rayOrigin;this.clearCurrentIntersection(!0),(u==="xrselect"||u==="entity")&&this.addWebXREventListeners()},setIntersection:function(u,l){var R=this.el,N=this.data,Y=this;this.intersectedEl!==u&&(this.intersectedEl=u,R.addState(v.HOVERING),u.addState(v.HOVERED),this.twoWayEmit(T.MOUSEENTER),this.data.mouseCursorStylesEnabled&&this.data.rayOrigin==="mouse"&&this.el.sceneEl.canvas.classList.add(p),!(N.fuseTimeout===0||!N.fuse||N.rayOrigin==="xrselect"||N.rayOrigin==="mouse")&&(R.addState(v.FUSING),this.twoWayEmit(T.FUSING),this.fuseTimeout=setTimeout(function(){R.removeState(v.FUSING),Y.twoWayEmit(T.CLICK)},N.fuseTimeout)))},clearCurrentIntersection:function(u){var l,R,N,Y=this.el;this.intersectedEl&&(this.intersectedEl.removeState(v.HOVERED),Y.removeState(v.HOVERING),Y.removeState(v.FUSING),this.twoWayEmit(T.MOUSELEAVE),this.data.mouseCursorStylesEnabled&&this.data.rayOrigin==="mouse"&&this.el.sceneEl.canvas.classList.remove(p),this.intersectedEl=null,clearTimeout(this.fuseTimeout),u!==!0&&(N=this.el.components.raycaster.intersections,N.length!==0&&(l=N[0].object.el===Y?1:0,R=N[l],R&&this.setIntersection(R.object.el,R))))},twoWayEmit:function(u,l){var R=this.el,N=this.intersectedEl,Y;function G(x,U){l instanceof MouseEvent?x.mouseEvent=l:typeof TouchEvent<"u"&&l instanceof TouchEvent&&(x.touchEvent=l)}Y=this.el.components.raycaster.getIntersection(N),this.eventDetail.intersectedEl=N,this.eventDetail.intersection=Y,G(this.eventDetail),R.emit(u,this.eventDetail),N&&(this.intersectedEventDetail.intersection=Y,G(this.intersectedEventDetail),N.emit(u,this.intersectedEventDetail))}})},"./src/components/generic-tracked-controller-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>v});var s=d("./src/core/component.js"),z=d("./src/utils/tracked-controls.js"),_="generic",T={axes:{touchpad:[0,1],thumbstick:[2,3]},buttons:["trigger","squeeze","touchpad","thumbstick"]},v=(0,s.registerComponent)("generic-tracked-controller-controls",{schema:{hand:{default:""},defaultModel:{default:!0},defaultModelColor:{default:"gray"},disabled:{default:!1}},after:["tracked-controls"],mapping:T,bindMethods:function(){this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},init:function(){var D=this;this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(h){(0,z.onButtonEvent)(h.detail.id,"down",D)},this.onButtonUp=function(h){(0,z.onButtonEvent)(h.detail.id,"up",D)},this.onButtonTouchStart=function(h){(0,z.onButtonEvent)(h.detail.id,"touchstart",D)},this.onButtonTouchEnd=function(h){(0,z.onButtonEvent)(h.detail.id,"touchend",D)},this.controllerPresent=!1,this.wasControllerConnected=!1,this.bindMethods(),this.el.addEventListener("controllerconnected",function(h){h.detail.name!==D.name&&(D.wasControllerConnected=!0,D.removeEventListeners(),D.removeControllersUpdateListener())})},addEventListeners:function(){var D=this.el;D.addEventListener("buttonchanged",this.onButtonChanged),D.addEventListener("buttondown",this.onButtonDown),D.addEventListener("buttonup",this.onButtonUp),D.addEventListener("touchstart",this.onButtonTouchStart),D.addEventListener("touchend",this.onButtonTouchEnd),D.addEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var D=this.el;D.removeEventListener("buttonchanged",this.onButtonChanged),D.removeEventListener("buttondown",this.onButtonDown),D.removeEventListener("buttonup",this.onButtonUp),D.removeEventListener("touchstart",this.onButtonTouchStart),D.removeEventListener("touchend",this.onButtonTouchEnd),D.removeEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var D=this.data,h=D.hand?D.hand:void 0;(0,z.checkControllerPresentAndSetup)(this,_,{hand:h,iterateControllerProfiles:!0})},play:function(){this.wasControllerConnected||(this.checkIfControllerPresent(),this.addControllersUpdateListener())},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},injectTrackedControls:function(){var D=this.el,h=this.data;if(this.el.components["tracked-controls"]){this.removeEventListeners();return}D.setAttribute("tracked-controls",{hand:h.hand,idPrefix:_,iterateControllerProfiles:!0}),this.data.defaultModel&&this.initDefaultModel()},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.wasControllerConnected&&this.checkIfControllerPresent()},onButtonChanged:function(D){var h=this.mapping.buttons[D.detail.id];h&&this.el.emit(h+"changed",D.detail.state)},onAxisMoved:function(D){(0,z.emitIfAxesChanged)(this,this.mapping.axes,D)},initDefaultModel:function(){var D=this.modelEl=document.createElement("a-entity");D.setAttribute("geometry",{primitive:"sphere",radius:.03}),D.setAttribute("material",{color:this.data.color}),this.el.appendChild(D),this.el.emit("controllermodelready",{name:"generic-tracked-controller-controls",model:this.modelEl,rayOrigin:{origin:{x:0,y:0,z:-.01},direction:{x:0,y:0,z:-1}}})}})},"./src/components/geometry.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>v});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js"),_=d("./src/core/component.js"),T=new s.BufferGeometry,v=(0,_.registerComponent)("geometry",{schema:{buffer:{default:!0},primitive:{default:"box",oneOf:z.geometryNames,schemaChange:!0},skipCache:{default:!1}},init:function(){this.geometry=null},update:function(D){var h=this.data,p=this.el,m,u=this.system;this.geometry&&(u.unuseGeometry(D),this.geometry=null),this.geometry=u.getOrCreateGeometry(h),m=p.getObject3D("mesh"),m?m.geometry=this.geometry:(m=new s.Mesh,m.geometry=this.geometry,this.el.getAttribute("material")||(m.material=new s.MeshStandardMaterial({color:Math.random()*16777215,metalness:0,roughness:.5})),p.setObject3D("mesh",m))},remove:function(){this.system.unuseGeometry(this.data),this.el.getObject3D("mesh").geometry=T,this.geometry=null},updateSchema:function(D){var h=this.oldData&&this.oldData.primitive,p=D.primitive,m=z.geometries[p]&&z.geometries[p].schema;if(!m)throw new Error("Unknown geometry schema `"+p+"`");h&&h===p||this.extendSchema(m)}})},"./src/components/gltf-model.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>v});var s=d("./node_modules/three/examples/jsm/loaders/GLTFLoader.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T=_.debug("components:gltf-model:warn"),v=(0,z.registerComponent)("gltf-model",{schema:{type:"model"},init:function(){var D=this,h=this.system.getDRACOLoader(),p=this.system.getMeshoptDecoder(),m=this.system.getKTX2Loader();this.model=null,this.loader=new s.GLTFLoader,h&&this.loader.setDRACOLoader(h),p?this.ready=p.then(function(u){D.loader.setMeshoptDecoder(u)}):this.ready=Promise.resolve(),m&&this.loader.setKTX2Loader(m)},update:function(){var D=this,h=this.el,p=this.data;p&&(this.remove(),this.ready.then(function(){D.loader.load(p,function(u){D.model=u.scene||u.scenes[0],D.model.animations=u.animations,h.setObject3D("mesh",D.model),h.emit("model-loaded",{format:"gltf",model:D.model})},void 0,function(u){var l=u&&u.message?u.message:"Failed to load glTF model";T(l),h.emit("model-error",{format:"gltf",src:p})})}))},remove:function(){this.model&&this.el.removeObject3D("mesh")}})},"./src/components/grabbable.js":(_A,O,d)=>{d.r(O);var s=d("./src/core/component.js");(0,s.registerComponent)("grabbable",{init:function(){this.el.setAttribute("obb-collider","centerModel: true")}})},"./src/components/hand-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>p});var s=d("./node_modules/three/build/three.core.js"),z=d("./node_modules/three/examples/jsm/loaders/GLTFLoader.js"),_=d("./src/core/component.js"),T=d("./src/constants/index.js"),v={toonLeft:T.AFRAME_CDN_ROOT+"controllers/hands/leftHand.glb",toonRight:T.AFRAME_CDN_ROOT+"controllers/hands/rightHand.glb",lowPolyLeft:T.AFRAME_CDN_ROOT+"controllers/hands/leftHandLow.glb",lowPolyRight:T.AFRAME_CDN_ROOT+"controllers/hands/rightHandLow.glb",highPolyLeft:T.AFRAME_CDN_ROOT+"controllers/hands/leftHandHigh.glb",highPolyRight:T.AFRAME_CDN_ROOT+"controllers/hands/rightHandHigh.glb"},D={open:"Open",point:"Point",pointThumb:"Point + Thumb",fist:"Fist",hold:"Hold",thumbUp:"Thumb Up"},h={};h[D.fist]="grip",h[D.thumbUp]="pistol",h[D.point]="pointing";var p=(0,_.registerComponent)("hand-controls",{schema:{color:{default:"white",type:"color"},hand:{default:"left"},handModelStyle:{default:"lowPoly",oneOf:["lowPoly","highPoly","toon"]}},after:["tracked-controls"],init:function(){var l=this,R=this.el;this.pressedButtons={},this.touchedButtons={},this.loader=new z.GLTFLoader,this.loader.setCrossOrigin("anonymous"),this.onGripDown=function(){l.handleButton("grip","down")},this.onGripUp=function(){l.handleButton("grip","up")},this.onTrackpadDown=function(){l.handleButton("trackpad","down")},this.onTrackpadUp=function(){l.handleButton("trackpad","up")},this.onTrackpadTouchStart=function(){l.handleButton("trackpad","touchstart")},this.onTrackpadTouchEnd=function(){l.handleButton("trackpad","touchend")},this.onTriggerDown=function(){l.handleButton("trigger","down")},this.onTriggerUp=function(){l.handleButton("trigger","up")},this.onTriggerTouchStart=function(){l.handleButton("trigger","touchstart")},this.onTriggerTouchEnd=function(){l.handleButton("trigger","touchend")},this.onGripTouchStart=function(){l.handleButton("grip","touchstart")},this.onGripTouchEnd=function(){l.handleButton("grip","touchend")},this.onThumbstickDown=function(){l.handleButton("thumbstick","down")},this.onThumbstickUp=function(){l.handleButton("thumbstick","up")},this.onAorXTouchStart=function(){l.handleButton("AorX","touchstart")},this.onAorXTouchEnd=function(){l.handleButton("AorX","touchend")},this.onBorYTouchStart=function(){l.handleButton("BorY","touchstart")},this.onBorYTouchEnd=function(){l.handleButton("BorY","touchend")},this.onSurfaceTouchStart=function(){l.handleButton("surface","touchstart")},this.onSurfaceTouchEnd=function(){l.handleButton("surface","touchend")},this.onControllerConnected=this.onControllerConnected.bind(this),this.onControllerDisconnected=this.onControllerDisconnected.bind(this),R.addEventListener("controllerconnected",this.onControllerConnected),R.addEventListener("controllerdisconnected",this.onControllerDisconnected),R.object3D.visible=!1},play:function(){this.addEventListeners()},pause:function(){this.removeEventListeners()},tick:function(l,R){var N=this.el.getObject3D("mesh");!N||!N.mixer||N.mixer.update(R/1e3)},onControllerConnected:function(l){var R=this.el,N=this.data.hand,Y=this.el.getObject3D("mesh");R.object3D.visible=!0;var G=N==="left"?Math.PI/2:-Math.PI/2,x=R.sceneEl.hasWebXR?-Math.PI/2:0;l.detail.name==="pico-controls"&&(x+=Math.PI/4),Y.position.set(0,0,0),Y.rotation.set(x,0,G)},onControllerDisconnected:function(){this.el.object3D.visible=!1},addEventListeners:function(){var l=this.el;l.addEventListener("gripdown",this.onGripDown),l.addEventListener("gripup",this.onGripUp),l.addEventListener("trackpaddown",this.onTrackpadDown),l.addEventListener("trackpadup",this.onTrackpadUp),l.addEventListener("trackpadtouchstart",this.onTrackpadTouchStart),l.addEventListener("trackpadtouchend",this.onTrackpadTouchEnd),l.addEventListener("triggerdown",this.onTriggerDown),l.addEventListener("triggerup",this.onTriggerUp),l.addEventListener("triggertouchstart",this.onTriggerTouchStart),l.addEventListener("triggertouchend",this.onTriggerTouchEnd),l.addEventListener("griptouchstart",this.onGripTouchStart),l.addEventListener("griptouchend",this.onGripTouchEnd),l.addEventListener("thumbstickdown",this.onThumbstickDown),l.addEventListener("thumbstickup",this.onThumbstickUp),l.addEventListener("abuttontouchstart",this.onAorXTouchStart),l.addEventListener("abuttontouchend",this.onAorXTouchEnd),l.addEventListener("bbuttontouchstart",this.onBorYTouchStart),l.addEventListener("bbuttontouchend",this.onBorYTouchEnd),l.addEventListener("xbuttontouchstart",this.onAorXTouchStart),l.addEventListener("xbuttontouchend",this.onAorXTouchEnd),l.addEventListener("ybuttontouchstart",this.onBorYTouchStart),l.addEventListener("ybuttontouchend",this.onBorYTouchEnd),l.addEventListener("surfacetouchstart",this.onSurfaceTouchStart),l.addEventListener("surfacetouchend",this.onSurfaceTouchEnd)},removeEventListeners:function(){var l=this.el;l.removeEventListener("gripdown",this.onGripDown),l.removeEventListener("gripup",this.onGripUp),l.removeEventListener("trackpaddown",this.onTrackpadDown),l.removeEventListener("trackpadup",this.onTrackpadUp),l.removeEventListener("trackpadtouchstart",this.onTrackpadTouchStart),l.removeEventListener("trackpadtouchend",this.onTrackpadTouchEnd),l.removeEventListener("triggerdown",this.onTriggerDown),l.removeEventListener("triggerup",this.onTriggerUp),l.removeEventListener("triggertouchstart",this.onTriggerTouchStart),l.removeEventListener("triggertouchend",this.onTriggerTouchEnd),l.removeEventListener("griptouchstart",this.onGripTouchStart),l.removeEventListener("griptouchend",this.onGripTouchEnd),l.removeEventListener("thumbstickdown",this.onThumbstickDown),l.removeEventListener("thumbstickup",this.onThumbstickUp),l.removeEventListener("abuttontouchstart",this.onAorXTouchStart),l.removeEventListener("abuttontouchend",this.onAorXTouchEnd),l.removeEventListener("bbuttontouchstart",this.onBorYTouchStart),l.removeEventListener("bbuttontouchend",this.onBorYTouchEnd),l.removeEventListener("xbuttontouchstart",this.onAorXTouchStart),l.removeEventListener("xbuttontouchend",this.onAorXTouchEnd),l.removeEventListener("ybuttontouchstart",this.onBorYTouchStart),l.removeEventListener("ybuttontouchend",this.onBorYTouchEnd),l.removeEventListener("surfacetouchstart",this.onSurfaceTouchStart),l.removeEventListener("surfacetouchend",this.onSurfaceTouchEnd)},update:function(l){var R,N=this.el,Y=this.data.hand,G=this.data.handModelStyle,x=this.data.color,U=this;if(R={hand:Y,model:!1},Y!==l){var j=v[G+Y.charAt(0).toUpperCase()+Y.slice(1)];this.loader.load(j,function(Z){var CA=Z.scene.children[0];CA.mixer=new s.AnimationMixer(CA),U.clips=Z.animations,N.setObject3D("mesh",CA),CA.traverse(function(QA){QA.isMesh&&(QA.material.color=new s.Color(x))}),N.setAttribute("magicleap-controls",R),N.setAttribute("vive-controls",R),N.setAttribute("meta-touch-controls",R),N.setAttribute("pico-controls",R),N.setAttribute("windows-motion-controls",R),N.setAttribute("hp-mixed-reality-controls",R)})}},remove:function(){this.el.removeObject3D("mesh")},handleButton:function(l,R){var N,Y=R==="down",G=R==="touchstart";if(R.indexOf("touch")===0){if(G===this.touchedButtons[l])return;this.touchedButtons[l]=G}else{if(Y===this.pressedButtons[l])return;this.pressedButtons[l]=Y}N=this.gesture,this.gesture=this.determineGesture(),this.gesture!==N&&(this.animateGesture(this.gesture,N),this.emitGestureEvents(this.gesture,N))},determineGesture:function(){var l,R=this.pressedButtons.grip,N=this.pressedButtons.surface||this.touchedButtons.surface,Y=this.pressedButtons.trackpad||this.touchedButtons.trackpad,G=this.pressedButtons.trigger||this.touchedButtons.trigger,x=this.touchedButtons.AorX||this.touchedButtons.BorY,U=u(this.el.components["tracked-controls"]);return U?R||G?l=D.fist:Y&&(l=D.point):R?N||x||Y?l=G?D.fist:D.point:l=G?D.thumbUp:D.pointThumb:G&&(l=D.hold),l},getClip:function(l){var R,N;for(N=0;N<this.clips.length;N++)if(R=this.clips[N],R.name===l)return R},animateGesture:function(l,R){if(l){this.playAnimation(l||D.open,R,!1);return}this.playAnimation(R,R,!0)},emitGestureEvents:function(l,R){var N=this.el,Y;R!==l&&(Y=m(R,!1),Y&&N.emit(Y),Y=m(l,!0),Y&&N.emit(Y))},playAnimation:function(l,R,N){var Y,G,x=this.el.getObject3D("mesh"),U;if(x){if(Y=this.getClip(l),U=x.mixer.clipAction(Y),N){U.paused=!1,U.timeScale=-1;return}if(U.clampWhenFinished=!0,U.loop=s.LoopOnce,U.repetitions=0,U.timeScale=1,U.time=0,U.weight=1,!R){x.mixer.stopAllAction(),U.play();return}Y=this.getClip(R),U.reset(),U.play(),G=x.mixer.clipAction(Y),G.crossFadeTo(U,.15,!0)}}});function m(l,R){var N;if(l){if(N=h[l],N==="grip")return N+(R?"close":"open");if(N==="point")return N+(R?"up":"down");if(N==="pointing"||N==="pistol")return N+(R?"start":"end")}}function u(l){var R=l&&l.controller,N=R&&(R.id&&R.id.indexOf("OpenVR ")===0||R.profiles&&R.profiles[0]&&R.profiles[0]==="htc-vive");return N}},"./src/components/hand-tracking-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>Y});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/core/a-entity.js"),T=d("./src/utils/tracked-controls.js"),v=d("./src/constants/index.js"),D=v.AFRAME_CDN_ROOT+"controllers/oculus-hands/v4/left.glb",h=v.AFRAME_CDN_ROOT+"controllers/oculus-hands/v4/right.glb",p=["wrist","thumb-metacarpal","thumb-phalanx-proximal","thumb-phalanx-distal","thumb-tip","index-finger-metacarpal","index-finger-phalanx-proximal","index-finger-phalanx-intermediate","index-finger-phalanx-distal","index-finger-tip","middle-finger-metacarpal","middle-finger-phalanx-proximal","middle-finger-phalanx-intermediate","middle-finger-phalanx-distal","middle-finger-tip","ring-finger-metacarpal","ring-finger-phalanx-proximal","ring-finger-phalanx-intermediate","ring-finger-phalanx-distal","ring-finger-tip","pinky-finger-metacarpal","pinky-finger-phalanx-proximal","pinky-finger-phalanx-intermediate","pinky-finger-phalanx-distal","pinky-finger-tip"],m=0,u=4,l=9,R=.015,N=.02,Y=(0,z.registerComponent)("hand-tracking-controls",{schema:{hand:{default:"right",oneOf:["left","right"]},modelStyle:{default:"mesh",oneOf:["dots","mesh"]},modelColor:{default:"white"},modelOpacity:{default:1}},after:["tracked-controls"],bindMethods:function(){this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this)},addEventListeners:function(){this.el.addEventListener("model-loaded",this.onModelLoaded);for(var G=0;G<this.jointEls.length;++G)this.jointEls[G].object3D.visible=!0},removeEventListeners:function(){this.el.removeEventListener("model-loaded",this.onModelLoaded);for(var G=0;G<this.jointEls.length;++G)this.jointEls[G].object3D.visible=!1},init:function(){var G=this.el.sceneEl,x=G.getAttribute("webxr"),U=x.optionalFeatures;U.indexOf("hand-tracking")===-1&&(U.push("hand-tracking"),G.setAttribute("webxr",x)),this.wristObject3D=new s.Object3D,this.el.sceneEl.object3D.add(this.wristObject3D),this.onModelLoaded=this.onModelLoaded.bind(this),this.onChildAttached=this.onChildAttached.bind(this),this.jointEls=[],this.controllerPresent=!1,this.isPinched=!1,this.pinchEventDetail={position:new s.Vector3,wristRotation:new s.Quaternion},this.indexTipPosition=new s.Vector3,this.hasPoses=!1,this.jointPoses=new Float32Array(16*p.length),this.jointRadii=new Float32Array(p.length),this.bindMethods(),this.updateReferenceSpace=this.updateReferenceSpace.bind(this),this.el.sceneEl.addEventListener("enter-vr",this.updateReferenceSpace),this.el.sceneEl.addEventListener("exit-vr",this.updateReferenceSpace),this.el.addEventListener("child-attached",this.onChildAttached),this.wristObject3D.visible=!1},onChildAttached:function(G){this.addChildEntity(G.detail.el)},update:function(){this.updateModelMaterial()},updateModelMaterial:function(){var G=this.jointEls,x=this.skinnedMesh,U=this.data.modelOpacity!==1;x&&(this.skinnedMesh.material.color.set(this.data.modelColor),this.skinnedMesh.material.transparent=U,this.skinnedMesh.material.opacity=this.data.modelOpacity);for(var j=0;j<G.length;j++)G[j].setAttribute("material",{color:this.data.modelColor,transparent:U,opacity:this.data.modelOpacity})},updateReferenceSpace:function(){var G=this,x=this.el.sceneEl.xrSession;if(this.referenceSpace=void 0,!!x){var U=G.el.sceneEl.systems.webxr.sessionReferenceSpaceType;x.requestReferenceSpace(U).then(function(j){G.referenceSpace=j}).catch(function(j){throw G.el.sceneEl.systems.webxr.warnIfFeatureNotRequested(U,"tracked-controls-webxr uses reference space "+U),j})}},checkIfControllerPresent:function(){var G=this.data,x=G.hand?G.hand:void 0;(0,T.checkControllerPresentAndSetup)(this,"",{hand:x,iterateControllerProfiles:!0,handTracking:!0})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},tick:function(){var G=this.el.sceneEl,x=this.el.components["tracked-controls"]&&this.el.components["tracked-controls"].controller,U=G.frame,j=this.el.components["tracked-controls"],Z=this.referenceSpace;!x||!U||!Z||!j||(this.hasPoses=!1,x.hand&&(this.el.object3D.position.set(0,0,0),this.el.object3D.rotation.set(0,0,0),this.hasPoses=U.fillPoses(x.hand.values(),Z,this.jointPoses)&&U.fillJointRadii(x.hand.values(),this.jointRadii),this.updateHandModel(),this.detectGesture(),this.updateWristObject()))},updateWristObject:function(){var G=new s.Matrix4;return function(){var x=this.wristObject3D;!x||!this.hasPoses||(G.fromArray(this.jointPoses,m*16),x.position.setFromMatrixPosition(G),x.quaternion.setFromRotationMatrix(G))}}(),updateHandModel:function(){this.wristObject3D.visible=!0,this.el.object3D.visible=!0,this.data.modelStyle==="dots"&&this.updateHandDotsModel(),this.data.modelStyle==="mesh"&&this.updateHandMeshModel()},getBone:function(G){for(var x=this.bones,U=0;U<x.length;U++)if(x[U].name===G)return x[U];return null},updateHandMeshModel:function(){var G=new s.Matrix4;return function(){var x=0,U=this.jointPoses,j=this.el.components["tracked-controls"]&&this.el.components["tracked-controls"].controller;if(!(!j||!this.mesh)&&(this.mesh.visible=!1,!!this.hasPoses))for(var Z of j.hand.values()){var CA=this.getBone(Z.jointName);CA!=null&&(this.mesh.visible=!0,G.fromArray(U,x*16),CA.position.setFromMatrixPosition(G),CA.quaternion.setFromRotationMatrix(G)),x++}}}(),updateHandDotsModel:function(){for(var G=this.jointPoses,x=this.jointRadii,U=this.el.components["tracked-controls"]&&this.el.components["tracked-controls"].controller,j,Z,CA=0;CA<U.hand.size;CA++)j=this.jointEls[CA],Z=j.object3D,j.object3D.visible=this.hasPoses,this.hasPoses&&(Z.matrix.fromArray(G,CA*16),Z.matrix.decompose(Z.position,Z.rotation,Z.scale),j.setAttribute("scale",{x:x[CA],y:x[CA],z:x[CA]}))},detectGesture:function(){this.detectPinch()},detectPinch:function(){var G=new s.Vector3,x=new s.Matrix4;return function(){var U=this.indexTipPosition,j=this.pinchEventDetail;if(this.hasPoses){G.setFromMatrixPosition(x.fromArray(this.jointPoses,u*16)),U.setFromMatrixPosition(x.fromArray(this.jointPoses,l*16)),j.wristRotation.setFromRotationMatrix(x.fromArray(this.jointPoses,m*16));var Z=U.distanceTo(G);Z<R&&this.isPinched===!1&&(this.isPinched=!0,j.position.copy(U).add(G).multiplyScalar(.5),this.el.emit("pinchstarted",j)),Z>N&&this.isPinched===!0&&(this.isPinched=!1,j.position.copy(U).add(G).multiplyScalar(.5),this.el.emit("pinchended",j)),this.isPinched&&(j.position.copy(U).add(G).multiplyScalar(.5),this.el.emit("pinchmoved",j))}}}(),pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},injectTrackedControls:function(){var G=this.el,x=this.data;if(G.setAttribute("tracked-controls",{id:"",hand:x.hand,iterateControllerProfiles:!0,handTrackingEnabled:!0}),this.mesh){this.mesh!==G.getObject3D("mesh")&&G.setObject3D("mesh",this.mesh);return}this.initDefaultModel()},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){var G=this.el,x;this.checkIfControllerPresent(),x=G.components["tracked-controls"]&&G.components["tracked-controls"].controller,this.mesh&&x&&x.hand&&x.hand instanceof XRHand&&G.setObject3D("mesh",this.mesh)},initDefaultModel:function(){var G=this.data;G.modelStyle==="dots"&&this.initDotsModel(),G.modelStyle==="mesh"&&this.initMeshHandModel(),this.el.object3D.visible=!0,this.wristObject3D.visible=!0},initDotsModel:function(){if(this.jointEls.length===0){for(var G=0;G<p.length;++G){var x=this.jointEl=document.createElement("a-entity");x.setAttribute("geometry",{primitive:"sphere",radius:1}),x.object3D.visible=!1,this.el.appendChild(x),this.jointEls.push(x)}this.updateModelMaterial()}},initMeshHandModel:function(){var G=this.data.hand==="left"?D:h;this.el.setAttribute("gltf-model",G)},onModelLoaded:function(){var G=this.mesh=this.el.getObject3D("mesh").children[0],x=this.skinnedMesh=G.getObjectByProperty("type","SkinnedMesh");this.skinnedMesh&&(this.bones=x.skeleton.bones,this.el.removeObject3D("mesh"),G.position.set(0,0,0),G.rotation.set(0,0,0),x.frustumCulled=!1,x.material=new s.MeshStandardMaterial,this.updateModelMaterial(),this.setupChildrenEntities(),this.el.setObject3D("mesh",G),this.el.emit("controllermodelready",{name:"hand-tracking-controls",model:this.data.model,rayOrigin:new s.Vector3(0,0,0)}))},setupChildrenEntities:function(){for(var G=this.el.children,x=0;x<G.length;++x)G[x]instanceof _.AEntity&&this.addChildEntity(G[x])},addChildEntity:function(G){G instanceof _.AEntity&&this.wristObject3D.add(G.object3D)}})},"./src/components/hand-tracking-grab-controls.js":(_A,O,d)=>{d.r(O);var s=d("./src/core/component.js"),z=d("./node_modules/three/build/three.core.js");(0,s.registerComponent)("hand-tracking-grab-controls",{schema:{hand:{default:"right",oneOf:["left","right"]},color:{type:"color",default:"white"},hoverColor:{type:"color",default:"#538df1"},hoverEnabled:{default:!1}},init:function(){var _=this.el,T=this.data,v;T.hand==="right"?v="components.hand-tracking-controls.bones.3":v="components.hand-tracking-controls.bones.21",_.setAttribute("hand-tracking-controls",{hand:T.hand}),_.setAttribute("obb-collider",{trackedObject3D:v,size:.04}),this.auxMatrix=new z.Matrix4,this.onCollisionStarted=this.onCollisionStarted.bind(this),this.el.addEventListener("obbcollisionstarted",this.onCollisionStarted),this.onCollisionEnded=this.onCollisionEnded.bind(this),this.el.addEventListener("obbcollisionended",this.onCollisionEnded),this.onPinchStarted=this.onPinchStarted.bind(this),this.el.addEventListener("pinchstarted",this.onPinchStarted),this.onPinchEnded=this.onPinchEnded.bind(this),this.el.addEventListener("pinchended",this.onPinchEnded)},transferEntityOwnership:function(){for(var _,T=this.el.sceneEl.querySelectorAll("[hand-tracking-grab-controls]"),v=0;v<T.length;++v)_=T[v].components["hand-tracking-grab-controls"],_!==this&&this.grabbedEl&&this.grabbedEl===_.grabbedEl&&_.releaseGrabbedEntity();return!1},onCollisionStarted:function(_){var T=_.detail.withEl;this.collidedEl||T.getAttribute("grabbable")&&(this.collidedEl=T,this.grabbingObject3D=_.detail.trackedObject3D,this.data.hoverEnabled&&this.el.setAttribute("hand-tracking-controls","modelColor",this.data.hoverColor))},onCollisionEnded:function(){this.collidedEl=void 0,!this.grabbedEl&&(this.grabbingObject3D=void 0,this.data.hoverEnabled&&this.el.setAttribute("hand-tracking-controls","modelColor",this.data.color))},onPinchStarted:function(_){this.collidedEl&&(this.grabbedEl=this.collidedEl,this.transferEntityOwnership(),this.grab())},onPinchEnded:function(){this.releaseGrabbedEntity()},releaseGrabbedEntity:function(){var _=this.grabbedEl;if(_){var T=_.object3D,v=T.parent,D=this.originalParent;T.applyMatrix4(v.matrixWorld),T.applyMatrix4(this.auxMatrix.copy(D.matrixWorld).invert()),v.remove(T),D.add(T),this.el.emit("grabended",{grabbedEl:_}),this.grabbedEl=void 0,this.originalParent=void 0}},grab:function(){var _=this.grabbedEl,T=_.object3D,v=T.parent;this.originalParent=v;var D=this.el.components["hand-tracking-controls"].wristObject3D;T.applyMatrix4(v.matrixWorld),T.applyMatrix4(this.auxMatrix.copy(D.matrixWorld).invert()),v.remove(T),D.add(T),this.el.emit("grabstarted",{grabbedEl:_})}})},"./src/components/hide-on-enter-ar.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>z});var s=d("./src/core/component.js"),z=(0,s.registerComponent)("hide-on-enter-ar",{init:function(){var _=this;this.el.sceneEl.addEventListener("enter-vr",function(){_.el.sceneEl.is("ar-mode")&&(_.el.object3D.visible=!1)}),this.el.sceneEl.addEventListener("exit-vr",function(){_.el.object3D.visible=!0})}})},"./src/components/hide-on-enter-vr.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>z});var s=d("./src/core/component.js"),z=(0,s.registerComponent)("hide-on-enter-vr",{init:function(){var _=this;this.el.sceneEl.addEventListener("enter-vr",function(){_.el.sceneEl.is("vr-mode")&&(_.el.object3D.visible=!1)}),this.el.sceneEl.addEventListener("exit-vr",function(){_.el.object3D.visible=!0})}})},"./src/components/hp-mixed-reality-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>u});var s=d("./src/core/component.js"),z=d("./node_modules/three/build/three.core.js"),_=d("./src/constants/index.js"),T=d("./src/utils/tracked-controls.js"),v="hp-mixed-reality",D=_.AFRAME_CDN_ROOT+"controllers/hp/mixed-reality/",h={x:0,y:0,z:.06},p={_x:Math.PI/4,_y:0,_z:0,_order:"XYZ"},m={left:{axes:{touchpad:[2,3]},buttons:["trigger","grip","none","thumbstick","xbutton","ybutton"]},right:{axes:{touchpad:[2,3]},buttons:["trigger","grip","none","thumbstick","abutton","bbutton"]}},u=(0,s.registerComponent)("hp-mixed-reality-controls",{schema:{hand:{default:"none"},model:{default:!0}},mapping:m,init:function(){var l=this;this.controllerPresent=!1,this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(R){(0,T.onButtonEvent)(R.detail.id,"down",l,l.data.hand)},this.onButtonUp=function(R){(0,T.onButtonEvent)(R.detail.id,"up",l,l.data.hand)},this.onButtonTouchEnd=function(R){(0,T.onButtonEvent)(R.detail.id,"touchend",l,l.data.hand)},this.onButtonTouchStart=function(R){(0,T.onButtonEvent)(R.detail.id,"touchstart",l,l.data.hand)},this.previousButtonValues={},this.bindMethods()},update:function(){var l=this.data;this.controllerIndex=l.hand==="right"?0:l.hand==="left"?1:2},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},addEventListeners:function(){var l=this.el;l.addEventListener("buttonchanged",this.onButtonChanged),l.addEventListener("buttondown",this.onButtonDown),l.addEventListener("buttonup",this.onButtonUp),l.addEventListener("touchstart",this.onButtonTouchStart),l.addEventListener("touchend",this.onButtonTouchEnd),l.addEventListener("axismove",this.onAxisMoved),l.addEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!0},removeEventListeners:function(){var l=this.el;l.removeEventListener("buttonchanged",this.onButtonChanged),l.removeEventListener("buttondown",this.onButtonDown),l.removeEventListener("buttonup",this.onButtonUp),l.removeEventListener("touchstart",this.onButtonTouchStart),l.removeEventListener("touchend",this.onButtonTouchEnd),l.removeEventListener("axismove",this.onAxisMoved),l.removeEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var l=this.data;(0,T.checkControllerPresentAndSetup)(this,v,{index:this.controllerIndex,hand:l.hand})},injectTrackedControls:function(){var l=this.el,R=this.data;l.setAttribute("tracked-controls",{idPrefix:v,hand:R.hand,controller:this.controllerIndex}),this.data.model&&this.el.setAttribute("gltf-model",D+this.data.hand+".glb")},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(l){var R=this.mapping[this.data.hand].buttons[l.detail.id],N;R&&(R==="trigger"&&(N=l.detail.state.value,console.log("analog value of trigger press: "+N)),this.el.emit(R+"changed",l.detail.state))},onModelLoaded:function(l){var R=l.detail.model;this.data.model&&(R.position.copy(h),R.rotation.copy(p),this.el.emit("controllermodelready",{name:"hp-mixed-reality-controls",model:this.data.model,rayOrigin:new z.Vector3(0,0,0)}))},onAxisMoved:function(l){(0,T.emitIfAxesChanged)(this,this.mapping.axes,l)}})},"./src/components/index.js":(_A,O,d)=>{d.r(O),d("./src/components/animation.js"),d("./src/components/anchored.js"),d("./src/components/camera.js"),d("./src/components/cursor.js"),d("./src/components/geometry.js"),d("./src/components/generic-tracked-controller-controls.js"),d("./src/components/gltf-model.js"),d("./src/components/grabbable.js"),d("./src/components/hand-tracking-controls.js"),d("./src/components/hand-tracking-grab-controls.js"),d("./src/components/hand-controls.js"),d("./src/components/hide-on-enter-ar.js"),d("./src/components/hide-on-enter-vr.js"),d("./src/components/hp-mixed-reality-controls.js"),d("./src/components/layer.js"),d("./src/components/laser-controls.js"),d("./src/components/light.js"),d("./src/components/line.js"),d("./src/components/link.js"),d("./src/components/logitech-mx-ink-controls.js"),d("./src/components/look-controls.js"),d("./src/components/magicleap-controls.js"),d("./src/components/material.js"),d("./src/components/meta-touch-controls.js"),d("./src/components/obb-collider.js"),d("./src/components/obj-model.js"),d("./src/components/oculus-go-controls.js"),d("./src/components/pico-controls.js"),d("./src/components/position.js"),d("./src/components/raycaster.js"),d("./src/components/rotation.js"),d("./src/components/scale.js"),d("./src/components/shadow.js"),d("./src/components/sound.js"),d("./src/components/text.js"),d("./src/components/tracked-controls.js"),d("./src/components/visible.js"),d("./src/components/valve-index-controls.js"),d("./src/components/vive-controls.js"),d("./src/components/vive-focus-controls.js"),d("./src/components/wasd-controls.js"),d("./src/components/windows-motion-controls.js"),d("./src/components/scene/ar-hit-test.js"),d("./src/components/scene/background.js"),d("./src/components/scene/debug.js"),d("./src/components/scene/device-orientation-permission-ui.js"),d("./src/components/scene/embedded.js"),d("./src/components/scene/inspector.js"),d("./src/components/scene/fog.js"),d("./src/components/scene/keyboard-shortcuts.js"),d("./src/components/scene/pool.js"),d("./src/components/scene/real-world-meshing.js"),d("./src/components/scene/reflection.js"),d("./src/components/scene/screenshot.js"),d("./src/components/scene/stats.js"),d("./src/components/scene/xr-mode-ui.js")},"./src/components/laser-controls.js":(_A,O,d)=>{d.r(O);var s=d("./src/core/component.js"),z=d("./src/utils/index.js");(0,s.registerComponent)("laser-controls",{schema:{hand:{default:"right"},model:{default:!0},defaultModelColor:{type:"color",default:"grey"}},init:function(){var _=this.config,T=this.data,v=this.el,D=this,h={hand:T.hand,model:T.model};v.setAttribute("hp-mixed-reality-controls",h),v.setAttribute("magicleap-controls",h),v.setAttribute("oculus-go-controls",h),v.setAttribute("meta-touch-controls",h),v.setAttribute("pico-controls",h),v.setAttribute("valve-index-controls",h),v.setAttribute("vive-controls",h),v.setAttribute("vive-focus-controls",h),v.setAttribute("windows-motion-controls",h),v.setAttribute("generic-tracked-controller-controls",{hand:h.hand}),v.addEventListener("controllerconnected",p),v.addEventListener("controllerdisconnected",m),v.addEventListener("controllermodelready",function(u){p(u),D.modelReady=!0});function p(u){var l=_[u.detail.name];if(l){var R=z.extend({showLine:!0},l.raycaster||{});u.detail.rayOrigin&&(R.origin=u.detail.rayOrigin.origin,R.direction=u.detail.rayOrigin.direction,R.showLine=!0),u.detail.rayOrigin||!D.modelReady?v.setAttribute("raycaster",R):v.setAttribute("raycaster","showLine",!0),v.setAttribute("cursor",z.extend({fuse:!1},l.cursor))}}function m(u){var l=_[u.detail.name];l&&v.setAttribute("raycaster","showLine",!1)}},config:{"generic-tracked-controller-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]}},"hp-mixed-reality-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]},raycaster:{origin:{x:0,y:0,z:0}}},"magicleap-controls":{cursor:{downEvents:["trackpaddown","triggerdown"],upEvents:["trackpadup","triggerup"]}},"oculus-go-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]},raycaster:{origin:{x:0,y:5e-4,z:0}}},"meta-touch-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]},raycaster:{origin:{x:0,y:0,z:0}}},"pico-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]}},"valve-index-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]}},"vive-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]}},"vive-focus-controls":{cursor:{downEvents:["trackpaddown","triggerdown"],upEvents:["trackpadup","triggerup"]}},"windows-motion-controls":{cursor:{downEvents:["triggerdown"],upEvents:["triggerup"]},raycaster:{showLine:!1}}}})},"./src/components/layer.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>v});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T=_.debug("components:layer:warn"),v=(0,z.registerComponent)("layer",{schema:{type:{default:"quad",oneOf:["quad","monocubemap","stereocubemap"]},src:{type:"map"},rotateCubemap:{default:!1},width:{default:0},height:{default:0}},init:function(){var h=this.el.sceneEl.renderer.getContext();this.quaternion=new s.Quaternion,this.position=new s.Vector3,this.bindMethods(),this.needsRedraw=!1,this.frameBuffer=h.createFramebuffer();var p=this.el.sceneEl.getAttribute("webxr"),m=p.requiredFeatures;m.indexOf("layers")===-1&&(m.push("layers"),this.el.sceneEl.setAttribute("webxr",p)),this.el.sceneEl.addEventListener("enter-vr",this.onEnterVR),this.el.sceneEl.addEventListener("exit-vr",this.onExitVR)},bindMethods:function(){this.onRequestedReferenceSpace=this.onRequestedReferenceSpace.bind(this),this.onEnterVR=this.onEnterVR.bind(this),this.onExitVR=this.onExitVR.bind(this)},update:function(h){this.data.src!==h.src&&this.updateSrc()},updateSrc:function(){var h=this.data.type;if(this.texture=void 0,h==="quad"){this.loadQuadImage();return}if(h==="monocubemap"||h==="stereocubemap"){this.loadCubeMapImages();return}},loadCubeMapImages:function(){var h,p=this.xrGLFactory,m=this.el.sceneEl.frame,u=this.data.src,l=this.data.type;this.visibilityChanged=!1,this.layer&&(l!=="monocubemap"&&l!=="stereocubemap"||(u.complete?this.pendingCubeMapUpdate=!1:this.pendingCubeMapUpdate=!0,this.loadingScreen?this.loadingScreen=!1:this.loadingScreen=!0,l==="monocubemap"?(h=p.getSubImage(this.layer,m),this.loadCubeMapImage(h.colorTexture,u,0)):(h=p.getSubImage(this.layer,m,"left"),this.loadCubeMapImage(h.colorTexture,u,0),h=p.getSubImage(this.layer,m,"right"),this.loadCubeMapImage(h.colorTexture,u,6))))},loadQuadImage:function(){var h=this.data.src,p=this;this.el.sceneEl.systems.material.loadTexture(h,{src:h},function(u){p.el.sceneEl.renderer.initTexture(u),p.texture=u,h.tagName==="VIDEO"&&setTimeout(function(){p.textureIsVideo=!0},1e3),p.layer&&(p.layer.height=p.data.height/2||p.texture.image.height/1e3,p.layer.width=p.data.width/2||p.texture.image.width/1e3,p.needsRedraw=!0),p.updateQuadPanel()})},preGenerateCubeMapTextures:function(h,p){this.data.type==="monocubemap"?this.generateCubeMapTextures(h,0,p):(this.generateCubeMapTextures(h,0,p),this.generateCubeMapTextures(h,6,p))},generateCubeMapTextures:function(h,p,m){for(var u=this.data,l=this.cubeFaceSize,R=Math.min(h.width,h.height),N=[],Y,G,x=0;x<6;x++){var U=document.createElement("CANVAS");U.width=U.height=l;var j=U.getContext("2d");u.rotateCubemap&&(x===2||x===3)&&(j.save(),j.translate(l,l),j.rotate(Math.PI)),j.drawImage(h,(x+p)*R,0,R,R,0,0,l,l),j.restore(),m&&m(),N.push(U)}return u.rotateCubemap&&(Y=N[0],G=N[1],N[0]=G,N[1]=Y,Y=N[4],G=N[5],N[4]=G,N[5]=Y),m&&m(),N},loadCubeMapImage:function(h,p,m){var u=this.el.sceneEl.renderer.getContext(),l;u.pixelStorei(u.UNPACK_FLIP_Y_WEBGL,!1),u.bindTexture(u.TEXTURE_CUBE_MAP,h),!p.complete||this.loadingScreen?l=this.loadingScreenImages:l=this.generateCubeMapTextures(p,m);var R=0;l.forEach(function(N,Y){u.texSubImage2D(u.TEXTURE_CUBE_MAP_POSITIVE_X+Y,0,0,0,u.RGBA,u.UNSIGNED_BYTE,N),R=u.getError()}),R!==0&&console.log("renderingError, WebGL Error Code: "+R),u.bindTexture(u.TEXTURE_CUBE_MAP,null)},tick:function(){this.el.sceneEl.xrSession&&this.referenceSpace&&(!this.layer&&(this.el.sceneEl.is("vr-mode")||this.el.sceneEl.is("ar-mode"))&&this.initLayer(),this.updateTransform(),this.data.src.complete&&(this.pendingCubeMapUpdate||this.loadingScreen||this.visibilityChanged)&&this.loadCubeMapImages(),!(!this.needsRedraw&&!this.layer.needsRedraw&&!this.textureIsVideo)&&(this.data.type==="quad"&&this.draw(),this.needsRedraw=!1))},initLayer:function(){var h=this,p=this.data.type;if(this.el.sceneEl.xrSession.onvisibilitychange=function(m){h.visibilityChanged=m.session.visibilityState!=="hidden"},p==="quad"){this.initQuadLayer();return}if(p==="monocubemap"||p==="stereocubemap"){this.initCubeMapLayer();return}},initQuadLayer:function(){var h=this.el.sceneEl,p=h.renderer.getContext(),m=this.xrGLFactory=new XRWebGLBinding(h.xrSession,p);this.texture&&(this.layer=m.createQuadLayer({space:this.referenceSpace,viewPixelHeight:2048,viewPixelWidth:2048,height:this.data.height/2||this.texture.image.height/1e3,width:this.data.width/2||this.texture.image.width/1e3}),this.initLoadingScreenImages(),h.renderer.xr.addLayer(this.layer))},initCubeMapLayer:function(){var h=this.data.src,p=this.el.sceneEl,m=p.renderer.getContext(),u=m.getParameter(m.MAX_CUBE_MAP_TEXTURE_SIZE),l=this.cubeFaceSize=Math.min(u,Math.min(h.width,h.height)),R=this.xrGLFactory=new XRWebGLBinding(p.xrSession,m);this.layer=R.createCubeLayer({space:this.referenceSpace,viewPixelWidth:l,viewPixelHeight:l,layout:this.data.type==="monocubemap"?"mono":"stereo",isStatic:!1}),this.initLoadingScreenImages(),this.loadCubeMapImages(),p.renderer.xr.addLayer(this.layer)},initLoadingScreenImages:function(){for(var h=this.cubeFaceSize,p=this.loadingScreenImages=[],m=0;m<6;m++){var u=document.createElement("CANVAS");u.width=u.height=h;var l=u.getContext("2d");u.width=u.height=h,l.fillStyle="black",l.fillRect(0,0,h,h),m!==2&&m!==3&&(l.translate(h,0),l.scale(-1,1),l.fillStyle="white",l.font="30px Arial",l.fillText("Loading",h/2,h/2)),p.push(u)}},destroyLayer:function(){this.layer&&(this.el.sceneEl.renderer.xr.removeLayer(this.layer),this.layer.destroy(),this.layer=void 0)},toggleCompositorLayer:function(){this.enableCompositorLayer(!this.layerEnabled)},enableCompositorLayer:function(h){this.layerEnabled=h,this.quadPanelEl.object3D.visible=!this.layerEnabled},updateQuadPanel:function(){var h=this.quadPanelEl;this.quadPanelEl||(h=this.quadPanelEl=document.createElement("a-entity"),this.el.appendChild(h)),h.setAttribute("material",{shader:"flat",src:this.data.src,transparent:!0}),h.setAttribute("geometry",{primitive:"plane",height:this.data.height||this.texture.image.height/1e3,width:this.data.width||this.texture.image.height/1e3})},draw:function(){var h=this.el.sceneEl,p=this.el.sceneEl.renderer.getContext(),m=this.xrGLFactory.getSubImage(this.layer,h.frame),u=h.renderer.properties.get(this.texture).__webglTexture,l=p.getParameter(p.FRAMEBUFFER_BINDING);p.viewport(m.viewport.x,m.viewport.y,m.viewport.width,m.viewport.height),p.bindFramebuffer(p.FRAMEBUFFER,this.frameBuffer),p.framebufferTexture2D(p.FRAMEBUFFER,p.COLOR_ATTACHMENT0,p.TEXTURE_2D,m.colorTexture,0),D(p,u,m,this.data.src),p.bindFramebuffer(p.FRAMEBUFFER,l)},updateTransform:function(){var h=this.el,p=this.position,m=this.quaternion;h.object3D.updateMatrixWorld(),p.setFromMatrixPosition(h.object3D.matrixWorld),m.setFromRotationMatrix(h.object3D.matrixWorld),this.layerEnabled||p.set(0,0,1e8),this.layer.transform=new XRRigidTransform(p,m)},onEnterVR:function(){var h=this.el.sceneEl,p=h.xrSession;if(!h.hasWebXR||!XRWebGLBinding||!p){T("The layer component requires WebXR and the layers API enabled");return}p.requestReferenceSpace("local-floor").then(this.onRequestedReferenceSpace),this.layerEnabled=!0,this.quadPanelEl&&(this.quadPanelEl.object3D.visible=!1),this.data.src.play&&this.data.src.play()},onExitVR:function(){this.quadPanelEl&&(this.quadPanelEl.object3D.visible=!0),this.destroyLayer()},onRequestedReferenceSpace:function(h){this.referenceSpace=h}});function D(h,p,m,u){var l=h.createFramebuffer(),R=m.viewport.x,N=m.viewport.y,Y=m.viewport.x+m.viewport.width,G=m.viewport.y+m.viewport.height;u.tagName==="VIDEO"&&(h.bindTexture(h.TEXTURE_2D,p),h.texSubImage2D(h.TEXTURE_2D,0,0,0,u.width,u.height,h.RGB,h.UNSIGNED_BYTE,u)),h.bindFramebuffer(h.READ_FRAMEBUFFER,l),h.framebufferTexture2D(h.READ_FRAMEBUFFER,h.COLOR_ATTACHMENT0,h.TEXTURE_2D,p,0),h.readBuffer(h.COLOR_ATTACHMENT0),h.blitFramebuffer(0,0,u.width,u.height,R,N,Y,G,h.COLOR_BUFFER_BIT,h.NEAREST),h.bindFramebuffer(h.READ_FRAMEBUFFER,null),h.deleteFramebuffer(l)}},"./src/components/light.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>u});var s=d("./node_modules/three/build/three.core.js"),z=d("./node_modules/three/examples/jsm/lights/LightProbeGenerator.js"),_=d("./src/utils/index.js"),T=d("./src/core/component.js"),v=d("./src/utils/math.js"),D=s.MathUtils.degToRad,h=(0,_.debug)("components:light:warn"),p=new s.CubeTextureLoader,m={},u=(0,T.registerComponent)("light",{schema:{angle:{default:60,if:{type:["spot"]}},color:{type:"color",if:{type:["ambient","directional","hemisphere","point","spot"]}},envMap:{default:"",if:{type:["probe"]}},groundColor:{type:"color",if:{type:["hemisphere"]}},decay:{default:1,if:{type:["point","spot"]}},distance:{default:0,min:0,if:{type:["point","spot"]}},intensity:{default:3.14,min:0,if:{type:["ambient","directional","hemisphere","point","spot","probe"]}},penumbra:{default:0,min:0,max:1,if:{type:["spot"]}},type:{default:"directional",oneOf:["ambient","directional","hemisphere","point","spot","probe"],schemaChange:!0},target:{type:"selector",if:{type:["spot","directional"]}},castShadow:{default:!1,if:{type:["point","spot","directional"]}},shadowBias:{default:0,if:{castShadow:!0}},shadowCameraFar:{default:500,if:{castShadow:!0}},shadowCameraFov:{default:90,if:{castShadow:!0}},shadowCameraNear:{default:.5,if:{castShadow:!0}},shadowCameraTop:{default:5,if:{castShadow:!0}},shadowCameraRight:{default:5,if:{castShadow:!0}},shadowCameraBottom:{default:-5,if:{castShadow:!0}},shadowCameraLeft:{default:-5,if:{castShadow:!0}},shadowCameraVisible:{default:!1,if:{castShadow:!0}},shadowCameraAutomatic:{default:"",if:{type:["directional"]}},shadowMapHeight:{default:512,if:{castShadow:!0}},shadowMapWidth:{default:512,if:{castShadow:!0}},shadowRadius:{default:1,if:{castShadow:!0}}},init:function(){var l=this.el;this.light=null,this.defaultTarget=null,this.system.registerLight(l)},update:function(l){var R=this.data,N=(0,_.diff)(R,l),Y=this.light,G=this;if(Y&&!("type"in N)){var x=!1;Object.keys(N).forEach(function(U){var j=R[U];switch(U){case"color":{Y.color.set(j);break}case"groundColor":{Y.groundColor.set(j);break}case"angle":{Y.angle=D(j);break}case"target":{j===null?(R.type==="spot"||R.type==="directional")&&(Y.target=G.defaultTarget):j.hasLoaded?G.onSetTarget(j,Y):j.addEventListener("loaded",G.onSetTarget.bind(G,j,Y));break}case"envMap":G.updateProbeMap(R,Y);break;case"castShadow":case"shadowBias":case"shadowCameraFar":case"shadowCameraFov":case"shadowCameraNear":case"shadowCameraTop":case"shadowCameraRight":case"shadowCameraBottom":case"shadowCameraLeft":case"shadowCameraVisible":case"shadowMapHeight":case"shadowMapWidth":case"shadowRadius":x||(G.updateShadow(),x=!0);break;case"shadowCameraAutomatic":R.shadowCameraAutomatic?G.shadowCameraAutomaticEls=Array.from(document.querySelectorAll(R.shadowCameraAutomatic)):G.shadowCameraAutomaticEls=[];break;default:Y[U]=j}});return}this.setLight(this.data),this.updateShadow()},tick:function(){var l=new s.Box3,R=new s.Vector3,N=new s.Vector3,Y=new s.Matrix4,G=new s.Sphere,x=new s.Vector3;return function(){if(this.data.type==="directional"&&this.light.shadow&&this.light.shadow.camera instanceof s.OrthographicCamera&&this.shadowCameraAutomaticEls.length){var U=this.light.shadow.camera;U.getWorldDirection(R),U.getWorldPosition(N),Y.copy(U.matrixWorld),Y.invert(),U.near=1,U.left=1e5,U.right=-1e5,U.top=-1e5,U.bottom=1e5,this.shadowCameraAutomaticEls.forEach(function(j){l.setFromObject(j.object3D),l.getBoundingSphere(G);var Z=v.distanceOfPointFromPlane(N,R,G.center),CA=v.nearestPointInPlane(N,R,G.center,x),QA=CA.applyMatrix4(Y);U.near=Math.min(-Z-G.radius-1,U.near),U.left=Math.min(-G.radius+QA.x,U.left),U.right=Math.max(G.radius+QA.x,U.right),U.top=Math.max(G.radius+QA.y,U.top),U.bottom=Math.min(-G.radius+QA.y,U.bottom)}),U.updateProjectionMatrix()}}}(),setLight:function(l){var R=this.el,N=this.getLight(l);N&&(this.light&&R.removeObject3D("light"),this.light=N,this.light.el=R,R.setObject3D("light",this.light),(l.type==="spot"||l.type==="directional"||l.type==="hemisphere")&&R.getObject3D("light").translateY(-1),l.type==="spot"&&(R.setObject3D("light-target",this.defaultTarget),R.getObject3D("light-target").position.set(0,0,-1)),l.shadowCameraAutomatic?this.shadowCameraAutomaticEls=Array.from(document.querySelectorAll(l.shadowCameraAutomatic)):this.shadowCameraAutomaticEls=[])},updateShadow:function(){var l=this.el,R=this.data,N=this.light;N.castShadow=R.castShadow;var Y=l.getObject3D("cameraHelper");if(R.shadowCameraVisible&&!Y?(Y=new s.CameraHelper(N.shadow.camera),l.setObject3D("cameraHelper",Y)):!R.shadowCameraVisible&&Y&&l.removeObject3D("cameraHelper"),!R.castShadow)return N;N.shadow.bias=R.shadowBias,N.shadow.radius=R.shadowRadius,N.shadow.mapSize.height=R.shadowMapHeight,N.shadow.mapSize.width=R.shadowMapWidth,N.shadow.camera.near=R.shadowCameraNear,N.shadow.camera.far=R.shadowCameraFar,N.shadow.camera instanceof s.OrthographicCamera?(N.shadow.camera.top=R.shadowCameraTop,N.shadow.camera.right=R.shadowCameraRight,N.shadow.camera.bottom=R.shadowCameraBottom,N.shadow.camera.left=R.shadowCameraLeft):N.shadow.camera.fov=R.shadowCameraFov,N.shadow.camera.updateProjectionMatrix(),Y&&Y.update()},getLight:function(l){var R=l.angle,N=new s.Color(l.color);N=N.getHex();var Y=l.decay,G=l.distance,x=new s.Color(l.groundColor);x=x.getHex();var U=l.intensity,j=l.type,Z=l.target,CA=null;switch(j.toLowerCase()){case"ambient":return new s.AmbientLight(N,U);case"directional":return CA=new s.DirectionalLight(N,U),this.defaultTarget=CA.target,Z&&(Z.hasLoaded?this.onSetTarget(Z,CA):Z.addEventListener("loaded",this.onSetTarget.bind(this,Z,CA))),CA;case"hemisphere":return new s.HemisphereLight(N,x,U);case"point":return new s.PointLight(N,U,G,Y);case"spot":return CA=new s.SpotLight(N,U,G,D(R),l.penumbra,Y),this.defaultTarget=CA.target,Z&&(Z.hasLoaded?this.onSetTarget(Z,CA):Z.addEventListener("loaded",this.onSetTarget.bind(this,Z,CA))),CA;case"probe":return CA=new s.LightProbe,this.updateProbeMap(l,CA),CA;default:h("%s is not a valid light type. Choose from ambient, directional, hemisphere, point, spot.",j)}},updateProbeMap:function(l,R){if(!l.envMap){R.copy(new s.LightProbe);return}m[l.envMap]===void 0&&(m[l.envMap]=new window.Promise(function(N){_.srcLoader.validateCubemapSrc(l.envMap,function(G){p.load(G,function(x){var U=z.LightProbeGenerator.fromCubeTexture(x);m[l.envMap]=U,N(U)})})})),m[l.envMap]instanceof window.Promise?m[l.envMap].then(function(N){R.copy(N)}):m[l.envMap]instanceof s.LightProbe&&R.copy(m[l.envMap])},onSetTarget:function(l,R){R.target=l.object3D},remove:function(){var l=this.el;l.removeObject3D("light"),l.getObject3D("cameraHelper")&&l.removeObject3D("cameraHelper")}})},"./src/components/line.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>_});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=(0,z.registerComponent)("line",{schema:{start:{type:"vec3",default:{x:0,y:0,z:0}},end:{type:"vec3",default:{x:0,y:0,z:0}},color:{type:"color",default:"#74BEC1"},opacity:{type:"number",default:1},visible:{default:!0}},multiple:!0,init:function(){var v=this.data,D,h;h=this.material=new s.LineBasicMaterial({color:v.color,opacity:v.opacity,transparent:v.opacity<1,visible:v.visible}),D=this.geometry=new s.BufferGeometry,D.setAttribute("position",new s.BufferAttribute(new Float32Array(2*3),3)),this.line=new s.Line(D,h),this.el.setObject3D(this.attrName,this.line)},update:function(v){var D=this.data,h=this.geometry,p=!1,m=this.material,u=h.attributes.position.array;T(D.start,v.start)||(u[0]=D.start.x,u[1]=D.start.y,u[2]=D.start.z,p=!0),T(D.end,v.end)||(u[3]=D.end.x,u[4]=D.end.y,u[5]=D.end.z,p=!0),p&&(h.attributes.position.needsUpdate=!0,h.computeBoundingSphere()),m.color.setStyle(D.color),m.opacity=D.opacity,m.transparent=D.opacity<1,m.visible=D.visible},remove:function(){this.el.removeObject3D(this.attrName,this.line)}});function T(v,D){return!v||!D?!1:v.x===D.x&&v.y===D.y&&v.z===D.z}},"./src/components/link.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>v});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/core/shader.js"),T=15,v=(0,z.registerComponent)("link",{schema:{backgroundColor:{default:"red",type:"color"},borderColor:{default:"white",type:"color"},highlighted:{default:!1},highlightedColor:{default:"#24CAFF",type:"color"},href:{default:""},image:{type:"asset"},on:{default:"click"},peekMode:{default:!1},title:{default:""},titleColor:{default:"white",type:"color"},visualAspectEnabled:{default:!1}},init:function(){this.navigate=this.navigate.bind(this),this.previousQuaternion=void 0,this.quaternionClone=new s.Quaternion,this.hiddenEls=[]},update:function(D){var h=this.data,p=this.el,m,u;if(h.visualAspectEnabled){var l=this.el.getAttribute("scale");this.previewDistance=T*(l.x+l.y)/2,this.initVisualAspect(),m=h.highlighted?h.highlightedColor:h.backgroundColor,u=h.highlighted?h.highlightedColor:h.borderColor,p.setAttribute("material","backgroundColor",m),p.setAttribute("material","strokeColor",u),h.on!==D.on&&this.updateEventListener(),D.peekMode!==void 0&&h.peekMode!==D.peekMode&&this.updatePeekMode(),!(!h.image||D.image===h.image)&&p.setAttribute("material","pano",typeof h.image=="string"?h.image:h.image.src)}},updatePeekMode:function(){var D=this.el,h=this.sphereEl;this.data.peekMode?(this.hideAll(),D.getObject3D("mesh").visible=!1,h.setAttribute("visible",!0)):(this.showAll(),D.getObject3D("mesh").visible=!0,h.setAttribute("visible",!1))},play:function(){this.updateEventListener()},pause:function(){this.removeEventListener()},updateEventListener:function(){var D=this.el;D.isPlaying&&(this.removeEventListener(),D.addEventListener(this.data.on,this.navigate))},removeEventListener:function(){var D=this.data.on;D&&this.el.removeEventListener(D,this.navigate)},initVisualAspect:function(){var D=this.el,h,p,m;!this.data.visualAspectEnabled||this.visualAspectInitialized||(m=this.textEl=this.textEl||document.createElement("a-entity"),p=this.sphereEl=this.sphereEl||document.createElement("a-entity"),h=this.semiSphereEl=this.semiSphereEl||document.createElement("a-entity"),D.setAttribute("geometry",{primitive:"circle",radius:1,segments:64}),D.setAttribute("material",{shader:"portal",pano:this.data.image,side:"double",previewDistance:this.previewDistance}),m.setAttribute("text",{color:this.data.titleColor,align:"center",font:"kelsonsans",value:this.data.title||this.data.href,width:4}),m.setAttribute("position","0 1.5 0"),D.appendChild(m),h.setAttribute("geometry",{primitive:"sphere",radius:1,phiStart:0,segmentsWidth:64,segmentsHeight:64,phiLength:180,thetaStart:0,thetaLength:360}),h.setAttribute("material",{shader:"portal",borderEnabled:0,pano:this.data.image,side:"back",previewDistance:this.previewDistance}),h.setAttribute("rotation","0 180 0"),h.setAttribute("position","0 0 0"),h.setAttribute("visible",!1),D.appendChild(h),p.setAttribute("geometry",{primitive:"sphere",radius:10,segmentsWidth:64,segmentsHeight:64}),p.setAttribute("material",{shader:"portal",borderEnabled:0,pano:this.data.image,side:"back",previewDistance:this.previewDistance}),p.setAttribute("visible",!1),D.appendChild(p),this.visualAspectInitialized=!0)},navigate:function(){window.location=this.data.href},tick:function(){var D=new s.Vector3,h=new s.Vector3,p=new s.Quaternion,m=new s.Vector3;return function(){var u=this.el,l=u.object3D,R=u.sceneEl.camera,N,Y,G=this.textEl;if(this.data.visualAspectEnabled)if(l.updateMatrixWorld(),R.parent.updateMatrixWorld(),R.updateMatrixWorld(),l.matrix.decompose(h,p,m),h.setFromMatrixPosition(l.matrixWorld),D.setFromMatrixPosition(R.matrixWorld),Y=h.distanceTo(D),Y>this.previewDistance*1.33333)this.previousQuaternion||(this.quaternionClone.copy(p),this.previousQuaternion=this.quaternionClone),l.lookAt(D);else{if(N=this.calculateCameraPortalOrientation(),Y<.5){if(this.semiSphereEl.getAttribute("visible")===!0)return;G.setAttribute("text","width",1.5),N<=0?(G.setAttribute("position","0 0 0.75"),G.setAttribute("rotation","0 180 0"),this.semiSphereEl.setAttribute("rotation","0 0 0")):(G.setAttribute("position","0 0 -0.75"),G.setAttribute("rotation","0 0 0"),this.semiSphereEl.setAttribute("rotation","0 180 0")),u.getObject3D("mesh").visible=!1,this.semiSphereEl.setAttribute("visible",!0),this.peekCameraPortalOrientation=N}else N<=0?G.setAttribute("rotation","0 180 0"):G.setAttribute("rotation","0 0 0"),G.setAttribute("text","width",5),G.setAttribute("position","0 1.5 0"),u.getObject3D("mesh").visible=!0,this.semiSphereEl.setAttribute("visible",!1),this.peekCameraPortalOrientation=void 0;this.previousQuaternion&&(l.quaternion.copy(this.previousQuaternion),this.previousQuaternion=void 0)}}}(),hideAll:function(){var D=this.el,h=this.hiddenEls,p=this;h.length>0||D.sceneEl.object3D.traverse(function(m){m&&m.el&&m.el.hasAttribute("link-controls")||!m.el||m===D.sceneEl.object3D||m.el===D||m.el===p.sphereEl||m.el===D.sceneEl.cameraEl||m.el.getAttribute("visible")===!1||m.el===p.textEl||m.el===p.semiSphereEl||(m.el.setAttribute("visible",!1),h.push(m.el))})},showAll:function(){this.hiddenEls.forEach(function(D){D.setAttribute("visible",!0)}),this.hiddenEls=[]},calculateCameraPortalOrientation:function(){var D=new s.Matrix4,h=new s.Vector3,p=new s.Vector3(0,0,1),m=new s.Vector3(0,0,0);return function(){var u=this.el,l=u.sceneEl.camera;return h.set(0,0,0),p.set(0,0,1),m.set(0,0,0),u.object3D.matrixWorld.extractRotation(D),p.applyMatrix4(D),u.object3D.updateMatrixWorld(),u.object3D.localToWorld(m),l.parent.parent.updateMatrixWorld(),l.parent.updateMatrixWorld(),l.updateMatrixWorld(),l.localToWorld(h),h.sub(m).normalize(),p.normalize(),Math.sign(p.dot(h))}}(),remove:function(){this.removeEventListener()}});(0,_.registerShader)("portal",{schema:{borderEnabled:{default:1,type:"int",is:"uniform"},backgroundColor:{default:"red",type:"color",is:"uniform"},pano:{type:"map",is:"uniform"},strokeColor:{default:"white",type:"color",is:"uniform"},previewDistance:{default:T,type:"float",is:"uniform"}},vertexShader:["vec3 portalPosition;","varying vec3 vWorldPosition;","varying float vDistanceToCenter;","varying float vDistance;","void main() {","vDistanceToCenter = clamp(length(position - vec3(0.0, 0.0, 0.0)), 0.0, 1.0);","portalPosition = (modelMatrix * vec4(0.0, 0.0, 0.0, 1.0)).xyz;","vDistance = length(portalPosition - cameraPosition);","vWorldPosition = (modelMatrix * vec4(position, 1.0)).xyz;","gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);","}"].join(`
`),fragmentShader:["#define RECIPROCAL_PI2 0.15915494","uniform sampler2D pano;","uniform vec3 strokeColor;","uniform vec3 backgroundColor;","uniform float borderEnabled;","uniform float previewDistance;","varying float vDistanceToCenter;","varying float vDistance;","varying vec3 vWorldPosition;","void main() {","vec3 direction = normalize(vWorldPosition - cameraPosition);","vec2 sampleUV;","float borderThickness = clamp(exp(-vDistance / 50.0), 0.6, 0.95);","sampleUV.y = clamp(direction.y * 0.5 + 0.5, 0.0, 1.0);","sampleUV.x = atan(direction.z, -direction.x) * -RECIPROCAL_PI2 + 0.5;","if (vDistanceToCenter > borderThickness && borderEnabled == 1.0) {","gl_FragColor = vec4(strokeColor, 1.0);","} else {","gl_FragColor = mix(texture2D(pano, sampleUV), vec4(backgroundColor, 1.0), clamp(pow((vDistance / previewDistance), 2.0), 0.0, 1.0));","}","}"].join(`
`)})},"./src/components/logitech-mx-ink-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>p});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/constants/index.js"),T=d("./src/utils/tracked-controls.js"),v="logitech-mx-ink",D=_.AFRAME_CDN_ROOT+"controllers/logitech/",h={left:{buttons:["front","back","none","none","none","tip"]},right:{buttons:["front","back","none","none","none","tip"]}},p=(0,z.registerComponent)("logitech-mx-ink-controls",{schema:{hand:{default:"left"},model:{default:!0},orientationOffset:{type:"vec3"}},mapping:h,init:function(){var m=this;this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(u){(0,T.onButtonEvent)(u.detail.id,"down",m,m.data.hand)},this.onButtonUp=function(u){(0,T.onButtonEvent)(u.detail.id,"up",m,m.data.hand)},this.onButtonTouchEnd=function(u){(0,T.onButtonEvent)(u.detail.id,"touchend",m,m.data.hand)},this.onButtonTouchStart=function(u){(0,T.onButtonEvent)(u.detail.id,"touchstart",m,m.data.hand)},this.bindMethods()},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},addEventListeners:function(){var m=this.el;m.addEventListener("buttonchanged",this.onButtonChanged),m.addEventListener("buttondown",this.onButtonDown),m.addEventListener("buttonup",this.onButtonUp),m.addEventListener("touchstart",this.onButtonTouchStart),m.addEventListener("touchend",this.onButtonTouchEnd),m.addEventListener("axismove",this.onAxisMoved),m.addEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!0},removeEventListeners:function(){var m=this.el;m.removeEventListener("buttonchanged",this.onButtonChanged),m.removeEventListener("buttondown",this.onButtonDown),m.removeEventListener("buttonup",this.onButtonUp),m.removeEventListener("touchstart",this.onButtonTouchStart),m.removeEventListener("touchend",this.onButtonTouchEnd),m.removeEventListener("axismove",this.onAxisMoved),m.removeEventListener("model-loaded",this.onModelLoaded),m.sceneEl.removeEventListener("enter-vr",this.onEnterVR),m.sceneEl.removeEventListener("exit-vr",this.onExitVR),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var m=this.controllerObject3D;m&&(m.visible=!1),(0,T.checkControllerPresentAndSetup)(this,v,{hand:this.data.hand,iterateControllerProfiles:!0})},injectTrackedControls:function(){var m=this.el,u=this.data,l=v;m.setAttribute("tracked-controls",{id:l,hand:u.hand,handTrackingEnabled:!1,iterateControllerProfiles:!0,orientationOffset:u.orientationOffset}),this.loadModel()},loadModel:function(){var m=this.controllerObject3D;if(this.data.model){if(m){m.visible=this.el.sceneEl.is("vr-mode"),this.el.setObject3D("mesh",m);return}this.el.setAttribute("gltf-model",D+"logitech-mx-ink.glb")}},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(m){var u=this.mapping[this.data.hand].buttons[m.detail.id],l;u&&(u==="trigger"&&(l=m.detail.state.value,console.log("analog value of trigger press: "+l)),this.el.emit(u+"changed",m.detail.state))},onModelLoaded:function(m){m.target!==this.el||!this.data.model||(this.el.emit("controllermodelready",{name:"logitech-mx-ink-controls",model:this.data.model,rayOrigin:new s.Vector3(0,0,0)}),this.controllerObject3D=this.el.getObject3D("mesh"),this.controllerObject3D.visible=this.el.sceneEl.is("vr-mode"))},onAxisMoved:function(m){(0,T.emitIfAxesChanged)(this,this.mapping.axes,m)}})},"./src/components/look-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>D});var s=d("./node_modules/three/build/three.core.js"),z=d("./vendor/DeviceOrientationControls.js"),_=d("./src/core/component.js"),T=d("./src/utils/index.js"),v=Math.PI/2,D=(0,_.registerComponent)("look-controls",{dependencies:["position","rotation"],schema:{enabled:{default:!0},magicWindowTrackingEnabled:{default:!0},pointerLockEnabled:{default:!1},reverseMouseDrag:{default:!1},reverseTouchDrag:{default:!1},touchEnabled:{default:!0},mouseEnabled:{default:!0}},init:function(){this.deltaYaw=0,this.previousHMDPosition=new s.Vector3,this.hmdQuaternion=new s.Quaternion,this.magicWindowAbsoluteEuler=new s.Euler,this.magicWindowDeltaEuler=new s.Euler,this.position=new s.Vector3,this.magicWindowObject=new s.Object3D,this.rotation={},this.deltaRotation={},this.savedPose=null,this.pointerLocked=!1,this.setupMouseControls(),this.bindMethods(),this.previousMouseEvent={},this.setupMagicWindowControls(),this.savedPose={position:new s.Vector3,rotation:new s.Euler},(this.el.sceneEl.is("vr-mode")||this.el.sceneEl.is("ar-mode"))&&this.onEnterVR()},setupMagicWindowControls:function(){var h,p=this.data;(T.device.isMobile()||T.device.isMobileDeviceRequestingDesktopSite())&&(h=this.magicWindowControls=new z.DeviceOrientationControls(this.magicWindowObject),typeof DeviceOrientationEvent<"u"&&DeviceOrientationEvent.requestPermission&&(h.enabled=!1,this.el.sceneEl.components["device-orientation-permission-ui"].permissionGranted?h.enabled=p.magicWindowTrackingEnabled:this.el.sceneEl.addEventListener("deviceorientationpermissiongranted",function(){h.enabled=p.magicWindowTrackingEnabled})))},update:function(h){var p=this.data;p.enabled!==h.enabled&&this.updateGrabCursor(p.enabled),h&&!p.magicWindowTrackingEnabled&&h.magicWindowTrackingEnabled&&(this.magicWindowAbsoluteEuler.set(0,0,0),this.magicWindowDeltaEuler.set(0,0,0)),this.magicWindowControls&&(this.magicWindowControls.enabled=p.magicWindowTrackingEnabled),h&&!p.pointerLockEnabled!==h.pointerLockEnabled&&(this.removeEventListeners(),this.addEventListeners(),this.pointerLocked&&this.exitPointerLock())},tick:function(h){var p=this.data;p.enabled&&this.updateOrientation()},play:function(){this.addEventListeners()},pause:function(){this.removeEventListeners(),this.pointerLocked&&this.exitPointerLock()},remove:function(){this.removeEventListeners(),this.pointerLocked&&this.exitPointerLock()},bindMethods:function(){this.onMouseDown=this.onMouseDown.bind(this),this.onMouseMove=this.onMouseMove.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onTouchStart=this.onTouchStart.bind(this),this.onTouchMove=this.onTouchMove.bind(this),this.onTouchEnd=this.onTouchEnd.bind(this),this.onEnterVR=this.onEnterVR.bind(this),this.onExitVR=this.onExitVR.bind(this),this.onPointerLockChange=this.onPointerLockChange.bind(this),this.onPointerLockError=this.onPointerLockError.bind(this)},setupMouseControls:function(){this.mouseDown=!1,this.pitchObject=new s.Object3D,this.yawObject=new s.Object3D,this.yawObject.position.y=10,this.yawObject.add(this.pitchObject)},addEventListeners:function(){var h=this.el.sceneEl,p=h.canvas;if(!p){h.addEventListener("render-target-loaded",this.addEventListeners.bind(this));return}p.addEventListener("mousedown",this.onMouseDown,!1),window.addEventListener("mousemove",this.onMouseMove,!1),window.addEventListener("mouseup",this.onMouseUp,!1),p.addEventListener("touchstart",this.onTouchStart,{passive:!0}),window.addEventListener("touchmove",this.onTouchMove,{passive:!0}),window.addEventListener("touchend",this.onTouchEnd,{passive:!0}),h.addEventListener("enter-vr",this.onEnterVR),h.addEventListener("exit-vr",this.onExitVR),this.data.pointerLockEnabled&&(document.addEventListener("pointerlockchange",this.onPointerLockChange,!1),document.addEventListener("mozpointerlockchange",this.onPointerLockChange,!1),document.addEventListener("pointerlockerror",this.onPointerLockError,!1))},removeEventListeners:function(){var h=this.el.sceneEl,p=h&&h.canvas;p&&(p.removeEventListener("mousedown",this.onMouseDown),window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("mouseup",this.onMouseUp),p.removeEventListener("touchstart",this.onTouchStart),window.removeEventListener("touchmove",this.onTouchMove),window.removeEventListener("touchend",this.onTouchEnd),h.removeEventListener("enter-vr",this.onEnterVR),h.removeEventListener("exit-vr",this.onExitVR),document.removeEventListener("pointerlockchange",this.onPointerLockChange,!1),document.removeEventListener("mozpointerlockchange",this.onPointerLockChange,!1),document.removeEventListener("pointerlockerror",this.onPointerLockError,!1))},updateOrientation:function(){var h=this.el.object3D,p=this.pitchObject,m=this.yawObject,u=this.el.sceneEl;(u.is("vr-mode")||u.is("ar-mode"))&&u.checkHeadsetConnected()||(this.updateMagicWindowOrientation(),h.rotation.x=this.magicWindowDeltaEuler.x+p.rotation.x,h.rotation.y=this.magicWindowDeltaEuler.y+m.rotation.y,h.rotation.z=this.magicWindowDeltaEuler.z)},updateMagicWindowOrientation:function(){var h=this.magicWindowAbsoluteEuler,p=this.magicWindowDeltaEuler;this.magicWindowControls&&this.magicWindowControls.enabled&&(this.magicWindowControls.update(),h.setFromQuaternion(this.magicWindowObject.quaternion,"YXZ"),!this.previousMagicWindowYaw&&h.y!==0&&(this.previousMagicWindowYaw=h.y),this.previousMagicWindowYaw&&(p.x=h.x,p.y+=h.y-this.previousMagicWindowYaw,p.z=h.z,this.previousMagicWindowYaw=h.y))},onMouseMove:function(h){var p,m,u,l=this.pitchObject,R=this.previousMouseEvent,N=this.yawObject;!this.data.enabled||!this.mouseDown&&!this.pointerLocked||(this.pointerLocked?(m=h.movementX||h.mozMovementX||0,u=h.movementY||h.mozMovementY||0):(m=h.screenX-R.screenX,u=h.screenY-R.screenY),this.previousMouseEvent.screenX=h.screenX,this.previousMouseEvent.screenY=h.screenY,p=this.data.reverseMouseDrag?1:-1,N.rotation.y+=m*.002*p,l.rotation.x+=u*.002*p,l.rotation.x=Math.max(-v,Math.min(v,l.rotation.x)))},onMouseDown:function(h){var p=this.el.sceneEl;if(!(!this.data.enabled||!this.data.mouseEnabled||(p.is("vr-mode")||p.is("ar-mode"))&&p.checkHeadsetConnected())&&h.button===0){var m=p&&p.canvas;this.mouseDown=!0,this.previousMouseEvent.screenX=h.screenX,this.previousMouseEvent.screenY=h.screenY,this.showGrabbingCursor(),this.data.pointerLockEnabled&&!this.pointerLocked&&(m.requestPointerLock?m.requestPointerLock():m.mozRequestPointerLock&&m.mozRequestPointerLock())}},showGrabbingCursor:function(){this.el.sceneEl.canvas.style.cursor="grabbing"},hideGrabbingCursor:function(){this.el.sceneEl.canvas.style.cursor=""},onMouseUp:function(){this.mouseDown=!1,this.hideGrabbingCursor()},onTouchStart:function(h){h.touches.length!==1||!this.data.touchEnabled||this.el.sceneEl.is("vr-mode")||this.el.sceneEl.is("ar-mode")||(this.touchStart={x:h.touches[0].pageX,y:h.touches[0].pageY},this.touchStarted=!0)},onTouchMove:function(h){var p,m=this.el.sceneEl.canvas,u,l=this.yawObject;!this.touchStarted||!this.data.touchEnabled||(u=2*Math.PI*(h.touches[0].pageX-this.touchStart.x)/m.clientWidth,p=this.data.reverseTouchDrag?1:-1,l.rotation.y-=u*.5*p,this.touchStart={x:h.touches[0].pageX,y:h.touches[0].pageY})},onTouchEnd:function(){this.touchStarted=!1},onEnterVR:function(){var h=this.el.sceneEl;h.checkHeadsetConnected()&&(this.saveCameraPose(),this.el.object3D.position.set(0,0,0),this.el.object3D.rotation.set(0,0,0),h.hasWebXR&&(this.el.object3D.matrixAutoUpdate=!1,this.el.object3D.updateMatrix()))},onExitVR:function(){this.el.sceneEl.checkHeadsetConnected()&&(this.restoreCameraPose(),this.previousHMDPosition.set(0,0,0),this.el.object3D.matrixAutoUpdate=!0)},onPointerLockChange:function(){this.pointerLocked=!!(document.pointerLockElement||document.mozPointerLockElement)},onPointerLockError:function(){this.pointerLocked=!1},exitPointerLock:function(){document.exitPointerLock(),this.pointerLocked=!1},updateGrabCursor:function(h){var p=this.el.sceneEl;function m(){p.canvas.classList.add("a-grab-cursor")}function u(){p.canvas.classList.remove("a-grab-cursor")}if(!p.canvas){h?p.addEventListener("render-target-loaded",m):p.addEventListener("render-target-loaded",u);return}if(h){m();return}u()},saveCameraPose:function(){var h=this.el;this.savedPose.position.copy(h.object3D.position),this.savedPose.rotation.copy(h.object3D.rotation),this.hasSavedPose=!0},restoreCameraPose:function(){var h=this.el,p=this.savedPose;this.hasSavedPose&&(h.object3D.position.copy(p.position),h.object3D.rotation.copy(p.rotation),this.hasSavedPose=!1)}})},"./src/components/magicleap-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>m});var s=d("./src/core/component.js"),z=d("./src/constants/index.js"),_=d("./src/utils/tracked-controls.js"),T="magicleap",v="-one",D=T+v,h=z.AFRAME_CDN_ROOT+"controllers/magicleap/magicleap-one-controller.glb",p={axes:{touchpad:[0,1]},buttons:["trigger","grip","touchpad","menu"]},m=(0,s.registerComponent)("magicleap-controls",{schema:{hand:{default:"none"},model:{default:!0}},mapping:p,init:function(){var u=this;this.controllerPresent=!1,this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(l){(0,_.onButtonEvent)(l.detail.id,"down",u)},this.onButtonUp=function(l){(0,_.onButtonEvent)(l.detail.id,"up",u)},this.onButtonTouchEnd=function(l){(0,_.onButtonEvent)(l.detail.id,"touchend",u)},this.onButtonTouchStart=function(l){(0,_.onButtonEvent)(l.detail.id,"touchstart",u)},this.previousButtonValues={},this.bindMethods()},update:function(){var u=this.data;this.controllerIndex=u.hand==="right"?0:u.hand==="left"?1:2},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},addEventListeners:function(){var u=this.el;u.addEventListener("buttonchanged",this.onButtonChanged),u.addEventListener("buttondown",this.onButtonDown),u.addEventListener("buttonup",this.onButtonUp),u.addEventListener("touchstart",this.onButtonTouchStart),u.addEventListener("touchend",this.onButtonTouchEnd),u.addEventListener("axismove",this.onAxisMoved),u.addEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!0},removeEventListeners:function(){var u=this.el;u.removeEventListener("buttonchanged",this.onButtonChanged),u.removeEventListener("buttondown",this.onButtonDown),u.removeEventListener("buttonup",this.onButtonUp),u.removeEventListener("touchstart",this.onButtonTouchStart),u.removeEventListener("touchend",this.onButtonTouchEnd),u.removeEventListener("axismove",this.onAxisMoved),u.removeEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var u=this.data;(0,_.checkControllerPresentAndSetup)(this,D,{index:this.controllerIndex,hand:u.hand})},injectTrackedControls:function(){var u=this.el,l=this.data;u.setAttribute("tracked-controls",{idPrefix:D,hand:l.hand,controller:this.controllerIndex}),this.data.model&&this.el.setAttribute("gltf-model",h)},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(u){var l=this.mapping.buttons[u.detail.id],R;l&&(l==="trigger"&&(R=u.detail.state.value,console.log("analog value of trigger press: "+R)),this.el.emit(l+"changed",u.detail.state))},onModelLoaded:function(u){var l=u.detail.model;l.scale.set(.01,.01,.01)},onAxisMoved:function(u){(0,_.emitIfAxesChanged)(this,this.mapping.axes,u)},updateModel:function(u,l){},setButtonColor:function(u,l){}})},"./src/components/material.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>D});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/utils/index.js"),_=d("./src/core/component.js"),T=d("./src/core/shader.js"),v=z.debug("components:material:error"),D=(0,_.registerComponent)("material",{schema:{alphaTest:{default:0,min:0,max:1},depthTest:{default:!0},depthWrite:{default:!0},flatShading:{default:!1},npot:{default:!1},offset:{type:"vec2",default:{x:0,y:0}},opacity:{default:1,min:0,max:1},repeat:{type:"vec2",default:{x:1,y:1}},shader:{default:"standard",oneOf:T.shaderNames,schemaChange:!0},side:{default:"front",oneOf:["front","back","double"]},transparent:{default:!1},vertexColorsEnabled:{default:!1},visible:{default:!0},blending:{default:"normal",oneOf:["none","normal","additive","subtractive","multiply"]},dithering:{default:!0},anisotropy:{default:0,min:0}},init:function(){this.material=null},update:function(u){var l=this.data;(!this.shader||l.shader!==u.shader)&&this.updateShader(l.shader),this.shader.update(this.data),this.updateMaterial(u)},updateSchema:function(u){var l,R,N,Y;R=u&&u.shader,l=this.oldData&&this.oldData.shader,Y=R||l,N=T.shaders[Y]&&T.shaders[Y].schema,N||v("Unknown shader schema "+Y),!(l&&R===l)&&(this.extendSchema(N),this.updateBehavior())},updateBehavior:function(){var u,l=this.el.sceneEl,R=this.schema,N=this,Y;function G(x,U){var j;for(j in Y)Y[j]=x;N.shader.update(Y)}this.tick=void 0,Y={};for(u in R)R[u].type==="time"&&(this.tick=G,Y[u]=!0);l&&(this.tick?l.addBehavior(this):l.removeBehavior(this))},updateShader:function(u){var l=this.data,R=T.shaders[u]&&T.shaders[u].Shader,N;if(!R)throw new Error("Unknown shader "+u);N=this.shader=new R,N.el=this.el,N.init(l),this.setMaterial(N.material),this.updateSchema(l)},updateMaterial:function(u){var l=this.data,R=this.material,N;R.alphaTest=l.alphaTest,R.depthTest=l.depthTest!==!1,R.depthWrite=l.depthWrite!==!1,R.opacity=l.opacity,R.flatShading=l.flatShading,R.side=h(l.side),R.transparent=l.transparent!==!1||l.opacity<1,R.vertexColors=l.vertexColorsEnabled,R.visible=l.visible,R.blending=p(l.blending),R.dithering=l.dithering;for(N in u)break;N&&(u.alphaTest!==l.alphaTest||u.side!==l.side||u.vertexColorsEnabled!==l.vertexColorsEnabled)&&(R.needsUpdate=!0)},remove:function(){var u=new s.MeshBasicMaterial,l=this.material,R=this.el.getObject3D("mesh");R&&(R.material=u),m(l,this.system)},setMaterial:function(u){var l=this.el,R,N=this.system;this.material&&m(this.material,N),this.material=u,N.registerMaterial(u),R=l.getObject3D("mesh"),R?R.material=u:l.addEventListener("object3dset",function Y(G){G.detail.type!=="mesh"||G.target!==l||(l.getObject3D("mesh").material=u,l.removeEventListener("object3dset",Y))})}});function h(u){switch(u){case"back":return s.BackSide;case"double":return s.DoubleSide;default:return s.FrontSide}}function p(u){switch(u){case"none":return s.NoBlending;case"additive":return s.AdditiveBlending;case"subtractive":return s.SubtractiveBlending;case"multiply":return s.MultiplyBlending;default:return s.NormalBlending}}function m(u,l){u.dispose(),l.unregisterMaterial(u),Object.keys(u).filter(function(R){return u[R]&&u[R].isTexture}).forEach(function(R){u[R].dispose()})}},"./src/components/meta-touch-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>N});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/constants/index.js"),T=d("./src/utils/tracked-controls.js"),v="oculus-touch",D=_.AFRAME_CDN_ROOT+"controllers/oculus/oculus-touch-controller-",h=_.AFRAME_CDN_ROOT+"controllers/meta/",p={left:{modelUrl:D+"left.gltf",rayOrigin:{origin:{x:.002,y:-.005,z:-.03},direction:{x:0,y:-.8,z:-1}},modelPivotOffset:new s.Vector3(-.005,.036,-.037),modelPivotRotation:new s.Euler(Math.PI/4.5,0,0)},right:{modelUrl:D+"right.gltf",rayOrigin:{origin:{x:-.002,y:-.005,z:-.03},direction:{x:0,y:-.8,z:-1}},modelPivotOffset:new s.Vector3(.005,.036,-.037),modelPivotRotation:new s.Euler(Math.PI/4.5,0,0)}},m="oculus-touch",u={"oculus-touch":p,"oculus-touch-v2":{left:{modelUrl:D+"gen2-left.gltf",rayOrigin:{origin:{x:-.006,y:-.03,z:-.04},direction:{x:0,y:-.9,z:-1}},modelPivotOffset:new s.Vector3(0,-.007,-.021),modelPivotRotation:new s.Euler(-Math.PI/4,0,0)},right:{modelUrl:D+"gen2-right.gltf",rayOrigin:{origin:{x:.006,y:-.03,z:-.04},direction:{x:0,y:-.9,z:-1}},modelPivotOffset:new s.Vector3(0,-.007,-.021),modelPivotRotation:new s.Euler(-Math.PI/4,0,0)}},"oculus-touch-v3":{left:{modelUrl:D+"v3-left.glb",rayOrigin:{origin:{x:.0065,y:-.0186,z:-.05},direction:{x:.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)},right:{modelUrl:D+"v3-right.glb",rayOrigin:{origin:{x:-.0065,y:-.0186,z:-.05},direction:{x:-.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)}},"meta-quest-touch-pro":{left:{modelUrl:h+"quest-touch-pro-left.glb",rayOrigin:{origin:{x:.0065,y:-.0186,z:-.05},direction:{x:.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)},right:{modelUrl:h+"quest-touch-pro-right.glb",rayOrigin:{origin:{x:-.0065,y:-.0186,z:-.05},direction:{x:-.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)}},"meta-quest-touch-plus":{left:{modelUrl:h+"quest-touch-plus-left.glb",rayOrigin:{origin:{x:.0065,y:-.0186,z:-.05},direction:{x:.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)},right:{modelUrl:h+"quest-touch-plus-right.glb",rayOrigin:{origin:{x:-.0065,y:-.0186,z:-.05},direction:{x:-.12394785839500175,y:-.5944043672340157,z:-.7945567170519814}},modelPivotOffset:new s.Vector3(0,0,0),modelPivotRotation:new s.Euler(0,0,0)}}},l={left:{axes:{thumbstick:[2,3]},buttons:["trigger","grip","none","thumbstick","xbutton","ybutton","surface"]},right:{axes:{thumbstick:[2,3]},buttons:["trigger","grip","none","thumbstick","abutton","bbutton","surface"]}},R={schema:{hand:{default:"left"},buttonColor:{type:"color",default:"#999"},buttonTouchColor:{type:"color",default:"#8AB"},buttonHighlightColor:{type:"color",default:"#2DF"},model:{default:!0},controllerType:{default:"auto",oneOf:["auto","oculus-touch","oculus-touch-v2","oculus-touch-v3"]}},after:["tracked-controls"],mapping:l,bindMethods:function(){this.onButtonChanged=this.onButtonChanged.bind(this),this.onThumbstickMoved=this.onThumbstickMoved.bind(this),this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},init:function(){var G=this;this.onButtonDown=function(x){(0,T.onButtonEvent)(x.detail.id,"down",G,G.data.hand)},this.onButtonUp=function(x){(0,T.onButtonEvent)(x.detail.id,"up",G,G.data.hand)},this.onButtonTouchStart=function(x){(0,T.onButtonEvent)(x.detail.id,"touchstart",G,G.data.hand)},this.onButtonTouchEnd=function(x){(0,T.onButtonEvent)(x.detail.id,"touchend",G,G.data.hand)},this.controllerPresent=!1,this.previousButtonValues={},this.bindMethods(),this.triggerEuler=new s.Euler},addEventListeners:function(){var G=this.el;G.addEventListener("buttonchanged",this.onButtonChanged),G.addEventListener("buttondown",this.onButtonDown),G.addEventListener("buttonup",this.onButtonUp),G.addEventListener("touchstart",this.onButtonTouchStart),G.addEventListener("touchend",this.onButtonTouchEnd),G.addEventListener("axismove",this.onAxisMoved),G.addEventListener("model-loaded",this.onModelLoaded),G.addEventListener("thumbstickmoved",this.onThumbstickMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var G=this.el;G.removeEventListener("buttonchanged",this.onButtonChanged),G.removeEventListener("buttondown",this.onButtonDown),G.removeEventListener("buttonup",this.onButtonUp),G.removeEventListener("touchstart",this.onButtonTouchStart),G.removeEventListener("touchend",this.onButtonTouchEnd),G.removeEventListener("axismove",this.onAxisMoved),G.removeEventListener("model-loaded",this.onModelLoaded),G.removeEventListener("thumbstickmoved",this.onThumbstickMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var G=this.controllerObject3D;G&&(G.visible=!1),(0,T.checkControllerPresentAndSetup)(this,v,{hand:this.data.hand,iterateControllerProfiles:!0})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},loadModel:function(G){var x=this.data,U;if(x.model){if(this.controllerObject3D){this.controllerObject3D.visible=!0,this.el.setObject3D("mesh",this.controllerObject3D);return}if(this.displayModel=u[x.controllerType]||u[m],x.controllerType==="auto"){U=m;for(var j=Object.keys(u),Z=0;Z<G.profiles.length;Z++)if(j.indexOf(G.profiles[Z])!==-1){U=G.profiles[Z];break}this.displayModel=u[U]}var CA=this.displayModel[x.hand].modelUrl;this.isTouchV3orPROorPlus=this.displayModel===u["oculus-touch-v3"]||this.displayModel===u["meta-quest-touch-pro"]||this.displayModel===u["meta-quest-touch-plus"],this.el.setAttribute("gltf-model",CA)}},injectTrackedControls:function(G){var x=this.data,U=v;this.el.setAttribute("tracked-controls",{id:U,hand:x.hand,handTrackingEnabled:!1,iterateControllerProfiles:!0}),this.loadModel(G)},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(G){var x=this.mapping[this.data.hand].buttons[G.detail.id];if(x){if(this.isTouchV3orPROorPlus)this.onButtonChangedV3orPROorPlus(G);else{var U=this.buttonMeshes,j;(x==="trigger"||x==="grip")&&(j=G.detail.state.value),U&&(x==="trigger"&&U.trigger&&(U.trigger.rotation.x=this.originalXRotationTrigger-j*(Math.PI/26)),x==="grip"&&U.grip&&(j*=this.data.hand==="left"?-1:1,U.grip.position.x=this.originalXPositionGrip+j*.004))}this.el.emit(x+"changed",G.detail.state)}},onButtonChangedV3orPROorPlus:function(G){var x=this.mapping[this.data.hand].buttons[G.detail.id],U=this.buttonObjects,j;!U||!U[x]||(j=G.detail.state.value,U[x].quaternion.slerpQuaternions(this.buttonRanges[x].min.quaternion,this.buttonRanges[x].max.quaternion,j),U[x].position.lerpVectors(this.buttonRanges[x].min.position,this.buttonRanges[x].max.position,j))},onModelLoaded:function(G){if(!(G.target!==this.el||!this.data.model)){if(this.isTouchV3orPROorPlus)this.onTouchV3orPROorPlusModelLoaded(G);else{var x=this.controllerObject3D=G.detail.model,U;U=this.buttonMeshes={},U.grip=x.getObjectByName("buttonHand"),this.originalXPositionGrip=U.grip&&U.grip.position.x,U.trigger=x.getObjectByName("buttonTrigger"),this.originalXRotationTrigger=U.trigger&&U.trigger.rotation.x,U.thumbstick=x.getObjectByName("stick"),U.xbutton=x.getObjectByName("buttonX"),U.abutton=x.getObjectByName("buttonA"),U.ybutton=x.getObjectByName("buttonY"),U.bbutton=x.getObjectByName("buttonB")}for(var j in this.buttonMeshes)this.buttonMeshes[j]&&Y(this.buttonMeshes[j]);this.applyOffset(G.detail.model),this.el.emit("controllermodelready",{name:"meta-touch-controls",model:this.data.model,rayOrigin:this.displayModel[this.data.hand].rayOrigin})}},applyOffset:function(G){G.position.copy(this.displayModel[this.data.hand].modelPivotOffset),G.rotation.copy(this.displayModel[this.data.hand].modelPivotRotation)},onTouchV3orPROorPlusModelLoaded:function(G){var x=this.controllerObject3D=G.detail.model,U=this.buttonObjects={},j=this.buttonMeshes={},Z=this.buttonRanges={};j.grip=x.getObjectByName("squeeze"),U.grip=x.getObjectByName("xr_standard_squeeze_pressed_value"),Z.grip={min:x.getObjectByName("xr_standard_squeeze_pressed_min"),max:x.getObjectByName("xr_standard_squeeze_pressed_max")},U.grip.minX=U.grip.position.x,j.thumbstick=x.getObjectByName("thumbstick"),U.thumbstick=x.getObjectByName("xr_standard_thumbstick_pressed_value"),Z.thumbstick={min:x.getObjectByName("xr_standard_thumbstick_pressed_min"),max:x.getObjectByName("xr_standard_thumbstick_pressed_max")},U.thumbstickXAxis=x.getObjectByName("xr_standard_thumbstick_xaxis_pressed_value"),Z.thumbstickXAxis={min:x.getObjectByName("xr_standard_thumbstick_xaxis_pressed_min"),max:x.getObjectByName("xr_standard_thumbstick_xaxis_pressed_max")},U.thumbstickYAxis=x.getObjectByName("xr_standard_thumbstick_yaxis_pressed_value"),Z.thumbstickYAxis={min:x.getObjectByName("xr_standard_thumbstick_yaxis_pressed_min"),max:x.getObjectByName("xr_standard_thumbstick_yaxis_pressed_max")},j.trigger=x.getObjectByName("trigger"),U.trigger=x.getObjectByName("xr_standard_trigger_pressed_value"),Z.trigger={min:x.getObjectByName("xr_standard_trigger_pressed_min"),max:x.getObjectByName("xr_standard_trigger_pressed_max")},Z.trigger.diff={x:Math.abs(Z.trigger.max.rotation.x)-Math.abs(Z.trigger.min.rotation.x),y:Math.abs(Z.trigger.max.rotation.y)-Math.abs(Z.trigger.min.rotation.y),z:Math.abs(Z.trigger.max.rotation.z)-Math.abs(Z.trigger.min.rotation.z)};var CA=this.data.hand==="left"?"x":"a",QA=this.data.hand==="left"?"y":"b",SA=CA+"button",UA=QA+"button";j[SA]=x.getObjectByName(CA+"_button"),U[SA]=x.getObjectByName(CA+"_button_pressed_value"),Z[SA]={min:x.getObjectByName(CA+"_button_pressed_min"),max:x.getObjectByName(CA+"_button_pressed_max")},j[UA]=x.getObjectByName(QA+"_button"),U[UA]=x.getObjectByName(QA+"_button_pressed_value"),Z[UA]={min:x.getObjectByName(QA+"_button_pressed_min"),max:x.getObjectByName(QA+"_button_pressed_max")}},onAxisMoved:function(G){(0,T.emitIfAxesChanged)(this,this.mapping[this.data.hand].axes,G)},onThumbstickMoved:function(G){if(!(!this.buttonMeshes||!this.buttonMeshes.thumbstick)){if(this.isTouchV3orPROorPlus){this.updateThumbstickTouchV3orPROorPlus(G);return}for(var x in G.detail)this.buttonObjects.thumbstick.rotation[this.axisMap[x]]=this.buttonRanges.thumbstick.originalRotation[this.axisMap[x]]-Math.PI/8*G.detail[x]*(x==="y"||this.data.hand==="right"?-1:1)}},axisMap:{y:"x",x:"z"},updateThumbstickTouchV3orPROorPlus:function(G){var x=(G.detail.x+1)/2;this.buttonObjects.thumbstickXAxis.quaternion.slerpQuaternions(this.buttonRanges.thumbstickXAxis.min.quaternion,this.buttonRanges.thumbstickXAxis.max.quaternion,x);var U=(G.detail.y+1)/2;this.buttonObjects.thumbstickYAxis.quaternion.slerpQuaternions(this.buttonRanges.thumbstickYAxis.min.quaternion,this.buttonRanges.thumbstickYAxis.max.quaternion,U)},updateModel:function(G,x){this.data.model&&this.updateButtonModel(G,x)},updateButtonModel:function(G,x){var U=this.buttonMeshes,j,Z;U&&U[G]&&(Z=x==="up"||x==="touchend"?U[G].originalColor||this.data.buttonColor:x==="touchstart"?this.data.buttonTouchColor:this.data.buttonHighlightColor,j=U[G],j.material.color.set(Z))}};(0,z.registerComponent)("oculus-touch-controls",R);var N=(0,z.registerComponent)("meta-touch-controls",R);function Y(G){G.traverse(function(x){var U;x.type==="Mesh"&&(U=x.material.clone(),G.originalColor=x.material.color,x.material.dispose(),x.material=U)})}},"./src/components/obb-collider.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./node_modules/three/examples/jsm/math/OBB.js"),_=d("./src/core/component.js");(0,_.registerComponent)("obb-collider",{schema:{size:{default:0},trackedObject3D:{default:""},minimumColliderDimension:{default:.02},centerModel:{default:!1}},init:function(){this.previousScale=new s.Vector3().copy(this.el.object3D.scale),this.auxEuler=new s.Euler,this.boundingBox=new s.Box3,this.boundingBoxSize=new s.Vector3,this.updateCollider=this.updateCollider.bind(this),this.onModelLoaded=this.onModelLoaded.bind(this),this.updateBoundingBox=this.updateBoundingBox.bind(this),this.el.addEventListener("model-loaded",this.onModelLoaded),this.updateCollider(),this.system.addCollider(this.el)},remove:function(){this.system.removeCollider(this.el)},update:function(){this.data.trackedObject3D&&(this.trackedObject3DPath=this.data.trackedObject3D.split("."))},onModelLoaded:function(){this.data.centerModel&&this.centerModel(),this.updateCollider()},centerModel:function(){var T=this.el,v=T.components["gltf-model"]&&T.components["gltf-model"].model,D,h;v&&(this.el.removeObject3D("mesh"),D=new s.Box3().setFromObject(v),h=D.getCenter(new s.Vector3),v.position.x+=v.position.x-h.x,v.position.y+=v.position.y-h.y,v.position.z+=v.position.z-h.z,this.el.setObject3D("mesh",v))},updateCollider:function(){var T=this.el,v=this.boundingBoxSize,D=this.aabb=this.aabb||new z.OBB;if(this.obb=this.obb||new z.OBB,!T.hasLoaded){T.addEventListener("loaded",this.updateCollider);return}this.updateBoundingBox(),D.halfSize.copy(v).multiplyScalar(.5),this.el.sceneEl.systems["obb-collider"].data.showColliders&&this.showCollider()},showCollider:function(){this.updateColliderMesh(),this.renderColliderMesh.visible=!0},updateColliderMesh:function(){var T=this.renderColliderMesh,v=this.boundingBoxSize;if(!T){this.initColliderMesh();return}T.geometry.dispose(),T.geometry=new s.BoxGeometry(v.x,v.y,v.z)},hideCollider:function(){this.renderColliderMesh&&(this.renderColliderMesh.visible=!1)},initColliderMesh:function(){var T,v,D;T=this.boundingBoxSize,v=this.renderColliderGeometry=new s.BoxGeometry(T.x,T.y,T.z),D=this.renderColliderMesh=new s.Mesh(v,new s.MeshLambertMaterial({color:65280,side:s.DoubleSide})),D.matrixAutoUpdate=!1,D.matrixWorldAutoUpdate=!1,D.updateMatrixWorld=function(){},this.el.sceneEl.object3D.add(D)},updateBoundingBox:function(){var T=new s.Vector3,v=new s.Vector3,D=new s.Quaternion,h=new s.Quaternion,p=new s.Matrix4;return function(){var m=this.auxEuler,u=this.boundingBox,l=this.data.size,R=this.trackedObject3D||this.el.object3D,N=this.boundingBoxSize,Y=this.data.minimumColliderDimension;if(l){this.boundingBoxSize.x=l,this.boundingBoxSize.y=l,this.boundingBoxSize.z=l;return}m.copy(R.rotation),R.rotation.set(0,0,0),R.parent.matrixWorld.decompose(T,D,v),p.compose(T,h,v),R.parent.matrixWorld.copy(p),u.setFromObject(R,!0),u.getSize(N),N.x=N.x<Y?Y:N.x,N.y=N.y<Y?Y:N.y,N.z=N.z<Y?Y:N.z,R.parent.matrixWorld.compose(T,D,v),this.el.object3D.rotation.copy(m)}}(),checkTrackedObject:function(){var T=this.trackedObject3DPath,v;if(T&&T.length&&!this.trackedObject3D){v=this.el;for(var D=0;D<T.length&&(v=v[T[D]],!!v);D++);v&&(this.trackedObject3D=v,this.updateCollider())}return this.trackedObject3D},tick:function(){var T=new s.Vector3,v=new s.Vector3,D=new s.Quaternion,h=new s.Matrix4;return function(){var p=this.obb,m=this.renderColliderMesh,u=this.checkTrackedObject()||this.el.object3D;u&&(u.updateMatrix(),u.updateMatrixWorld(!0),u.matrixWorld.decompose(T,D,v),(Math.abs(v.x-this.previousScale.x)>1e-4||Math.abs(v.y-this.previousScale.y)>1e-4||Math.abs(v.z-this.previousScale.z)>1e-4)&&this.updateCollider(),this.previousScale.copy(v),v.set(1,1,1),h.compose(T,D,v),m&&m.matrixWorld.copy(h),p.copy(this.aabb),p.applyMatrix4(h))}}()})},"./src/components/obj-model.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>h});var s=d("./node_modules/three/build/three.core.js"),z=d("./node_modules/three/examples/jsm/loaders/OBJLoader.js"),_=d("./node_modules/three/examples/jsm/loaders/MTLLoader.js"),T=d("./src/utils/index.js"),v=d("./src/core/component.js"),D=(0,T.debug)("components:obj-model:warn"),h=(0,v.registerComponent)("obj-model",{schema:{mtl:{type:"model"},obj:{type:"model"}},init:function(){var p=this;this.model=null,this.objLoader=new z.OBJLoader,this.mtlLoader=new _.MTLLoader(this.objLoader.manager),this.mtlLoader.crossOrigin="",this.el.addEventListener("componentinitialized",function(m){p.model&&m.detail.name==="material"&&p.applyMaterial()})},update:function(){var p=this.data;p.obj&&(this.resetMesh(),this.loadObj(p.obj,p.mtl))},remove:function(){this.resetMesh()},resetMesh:function(){this.model&&this.el.removeObject3D("mesh")},loadObj:function(p,m){var u=this,l=this.el,R=this.mtlLoader,N=this.objLoader,Y=this.el.sceneEl.systems.renderer,G=m.substr(0,m.lastIndexOf("/")+1);if(m){l.hasAttribute("material")&&D("Material component properties are ignored when a .MTL is provided"),R.setResourcePath(G),R.load(m,function(x){x.preload(),N.setMaterials(x),N.load(p,function(U){u.model=U,u.model.traverse(function(j){if(j.isMesh){var Z=j.material;Z.map&&Y.applyColorCorrection(Z.map),Z.emissiveMap&&Y.applyColorCorrection(Z.emissiveMap)}}),l.setObject3D("mesh",U),l.emit("model-loaded",{format:"obj",model:U})})});return}N.load(p,function(U){u.model=U,u.applyMaterial(),l.setObject3D("mesh",U),l.emit("model-loaded",{format:"obj",model:U})})},applyMaterial:function(){var p=this.el.components.material;p&&this.model.traverse(function(m){m instanceof s.Mesh&&(m.material=p.material)})}})},"./src/components/oculus-go-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>h});var s=d("./src/core/component.js"),z=d("./src/constants/index.js"),_=d("./src/utils/tracked-controls.js"),T=z.AFRAME_CDN_ROOT+"controllers/oculus/go/oculus-go-controller.gltf",v="oculus-go",D={axes:{touchpad:[0,1]},buttons:["trigger","none","touchpad"]},h=(0,s.registerComponent)("oculus-go-controls",{schema:{hand:{default:""},buttonColor:{type:"color",default:"#FFFFFF"},buttonTouchedColor:{type:"color",default:"#BBBBBB"},buttonHighlightColor:{type:"color",default:"#7A7A7A"},model:{default:!0}},mapping:D,bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},init:function(){var p=this;this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(m){(0,_.onButtonEvent)(m.detail.id,"down",p)},this.onButtonUp=function(m){(0,_.onButtonEvent)(m.detail.id,"up",p)},this.onButtonTouchStart=function(m){(0,_.onButtonEvent)(m.detail.id,"touchstart",p)},this.onButtonTouchEnd=function(m){(0,_.onButtonEvent)(m.detail.id,"touchend",p)},this.controllerPresent=!1,this.bindMethods()},addEventListeners:function(){var p=this.el;p.addEventListener("buttonchanged",this.onButtonChanged),p.addEventListener("buttondown",this.onButtonDown),p.addEventListener("buttonup",this.onButtonUp),p.addEventListener("touchstart",this.onButtonTouchStart),p.addEventListener("touchend",this.onButtonTouchEnd),p.addEventListener("model-loaded",this.onModelLoaded),p.addEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var p=this.el;p.removeEventListener("buttonchanged",this.onButtonChanged),p.removeEventListener("buttondown",this.onButtonDown),p.removeEventListener("buttonup",this.onButtonUp),p.removeEventListener("touchstart",this.onButtonTouchStart),p.removeEventListener("touchend",this.onButtonTouchEnd),p.removeEventListener("model-loaded",this.onModelLoaded),p.removeEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){(0,_.checkControllerPresentAndSetup)(this,v,this.data.hand?{hand:this.data.hand}:{})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},injectTrackedControls:function(){var p=this.el,m=this.data;p.setAttribute("tracked-controls",{hand:m.hand,idPrefix:v}),this.data.model&&this.el.setAttribute("gltf-model",T)},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onModelLoaded:function(p){var m=p.detail.model,u;p.target!==this.el||!this.data.model||(u=this.buttonMeshes={},u.trigger=m.getObjectByName("oculus_go_button_trigger"),u.trackpad=m.getObjectByName("oculus_go_touchpad"),u.touchpad=m.getObjectByName("oculus_go_touchpad"))},onButtonChanged:function(p){var m=this.mapping.buttons[p.detail.id];m&&this.el.emit(m+"changed",p.detail.state)},onAxisMoved:function(p){(0,_.emitIfAxesChanged)(this,this.mapping.axes,p)},updateModel:function(p,m){this.data.model&&this.updateButtonModel(p,m)},updateButtonModel:function(p,m){var u=this.buttonMeshes;if(!(!u||!u[p])){var l,R;switch(m){case"down":l=this.data.buttonHighlightColor;break;case"touchstart":l=this.data.buttonTouchedColor;break;default:l=this.data.buttonColor}R=u[p],R.material.color.set(l)}}})},"./src/components/pico-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>p});var s=d("./src/core/component.js"),z=d("./node_modules/three/build/three.core.js"),_=d("./src/constants/index.js"),T=d("./src/utils/tracked-controls.js"),v="pico-4",D=_.AFRAME_CDN_ROOT+"controllers/pico/pico4/",h={left:{axes:{thumbstick:[2,3]},buttons:["trigger","grip","none","thumbstick","xbutton","ybutton"]},right:{axes:{thumbstick:[2,3]},buttons:["trigger","grip","none","thumbstick","abutton","bbutton"]}},p=(0,s.registerComponent)("pico-controls",{schema:{hand:{default:"none"},model:{default:!0}},mapping:h,init:function(){var m=this;this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(u){(0,T.onButtonEvent)(u.detail.id,"down",m,m.data.hand)},this.onButtonUp=function(u){(0,T.onButtonEvent)(u.detail.id,"up",m,m.data.hand)},this.onButtonTouchEnd=function(u){(0,T.onButtonEvent)(u.detail.id,"touchend",m,m.data.hand)},this.onButtonTouchStart=function(u){(0,T.onButtonEvent)(u.detail.id,"touchstart",m,m.data.hand)},this.bindMethods()},update:function(){var m=this.data;this.controllerIndex=m.hand==="right"?0:m.hand==="left"?1:2},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},addEventListeners:function(){var m=this.el;m.addEventListener("buttonchanged",this.onButtonChanged),m.addEventListener("buttondown",this.onButtonDown),m.addEventListener("buttonup",this.onButtonUp),m.addEventListener("touchstart",this.onButtonTouchStart),m.addEventListener("touchend",this.onButtonTouchEnd),m.addEventListener("axismove",this.onAxisMoved),m.addEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!0},removeEventListeners:function(){var m=this.el;m.removeEventListener("buttonchanged",this.onButtonChanged),m.removeEventListener("buttondown",this.onButtonDown),m.removeEventListener("buttonup",this.onButtonUp),m.removeEventListener("touchstart",this.onButtonTouchStart),m.removeEventListener("touchend",this.onButtonTouchEnd),m.removeEventListener("axismove",this.onAxisMoved),m.removeEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var m=this.data;(0,T.checkControllerPresentAndSetup)(this,v,{index:this.controllerIndex,hand:m.hand})},injectTrackedControls:function(){var m=this.el,u=this.data;m.setAttribute("tracked-controls",{idPrefix:v,hand:u.hand,controller:this.controllerIndex}),this.data.model&&this.el.setAttribute("gltf-model",D+this.data.hand+".glb")},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(m){var u=this.mapping[this.data.hand].buttons[m.detail.id],l;u&&(u==="trigger"&&(l=m.detail.state.value,console.log("analog value of trigger press: "+l)),this.el.emit(u+"changed",m.detail.state))},onModelLoaded:function(m){m.target!==this.el||!this.data.model||this.el.emit("controllermodelready",{name:"pico-controls",model:this.data.model,rayOrigin:new z.Vector3(0,0,0)})},onAxisMoved:function(m){(0,T.emitIfAxesChanged)(this,this.mapping[this.data.hand].axes,m)}})},"./src/components/position.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>z});var s=d("./src/core/component.js"),z=(0,s.registerComponent)("position",{schema:{type:"vec3"},update:function(){var _=this.el.object3D,T=this.data;_.position.set(T.x,T.y,T.z)},remove:function(){this.el.object3D.position.set(0,0,0)}})},"./src/components/raycaster.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>p});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T=_.debug("components:raycaster:warn"),v=/^[\w\s-.,[\]#]*$/,D={childList:!0,attributes:!0,subtree:!0},h={INTERSECT:"raycaster-intersected",INTERSECTION:"raycaster-intersection",INTERSECT_CLEAR:"raycaster-intersected-cleared",INTERSECTION_CLEAR:"raycaster-intersection-cleared",INTERSECTION_CLOSEST_ENTITY_CHANGED:"raycaster-closest-entity-changed"},p=(0,z.registerComponent)("raycaster",{schema:{autoRefresh:{default:!0},direction:{type:"vec3",default:{x:0,y:0,z:-1}},enabled:{default:!0},far:{default:1e3},interval:{default:0},near:{default:0},objects:{default:""},origin:{type:"vec3"},showLine:{default:!1},lineColor:{default:"white"},lineOpacity:{default:1},useWorldCoordinates:{default:!1}},multiple:!0,init:function(){this.clearedIntersectedEls=[],this.unitLineEndVec3=new s.Vector3,this.intersectedEls=[],this.intersections=[],this.newIntersectedEls=[],this.newIntersections=[],this.objects=[],this.prevCheckTime=void 0,this.prevIntersectedEls=[],this.rawIntersections=[],this.raycaster=new s.Raycaster,this.updateOriginDirection(),this.setDirty=this.setDirty.bind(this),this.updateLine=this.updateLine.bind(this),this.observer=new MutationObserver(this.setDirty),this.dirty=!0,this.lineEndVec3=new s.Vector3,this.otherLineEndVec3=new s.Vector3,this.lineData={end:this.lineEndVec3},this.getIntersection=this.getIntersection.bind(this),this.intersectedDetail={el:this.el,getIntersection:this.getIntersection},this.intersectedClearedDetail={el:this.el},this.intersectionClearedDetail={clearedEls:this.clearedIntersectedEls},this.intersectionDetail={}},update:function(u){var l=this.data,R=this.el,N=this.raycaster;N.far=l.far,N.near=l.near,l.showLine&&(l.far!==u.far||l.origin!==u.origin||l.direction!==u.direction||!u.showLine)&&(this.unitLineEndVec3.copy(l.direction).normalize(),this.drawLine()),!l.showLine&&u.showLine&&R.removeAttribute("line"),l.objects!==u.objects&&!v.test(l.objects)&&T('[raycaster] Selector "'+l.objects+'" may not update automatically with DOM changes.'),l.objects||T('[raycaster] For performance, please define raycaster.objects when using raycaster or cursor components to whitelist which entities to intersect with. e.g., raycaster="objects: [data-raycastable]".'),l.autoRefresh!==u.autoRefresh&&R.isPlaying&&(l.autoRefresh?this.addEventListeners():this.removeEventListeners()),u.enabled&&!l.enabled&&this.clearAllIntersections(),l.objects!==u.objects&&this.setDirty()},play:function(){this.addEventListeners()},pause:function(){this.removeEventListeners()},remove:function(){this.data.showLine&&this.el.removeAttribute("line"),this.clearAllIntersections()},addEventListeners:function(){this.data.autoRefresh&&(this.observer.observe(this.el.sceneEl,D),this.el.sceneEl.addEventListener("object3dset",this.setDirty),this.el.sceneEl.addEventListener("object3dremove",this.setDirty))},removeEventListeners:function(){this.observer.disconnect(),this.el.sceneEl.removeEventListener("object3dset",this.setDirty),this.el.sceneEl.removeEventListener("object3dremove",this.setDirty)},setDirty:function(){this.dirty=!0},refreshObjects:function(){var u=this.data,l;l=u.objects?this.el.sceneEl.querySelectorAll(u.objects):this.el.sceneEl.querySelectorAll("*"),this.objects=this.flattenObject3DMaps(l),this.dirty=!1},tock:function(u){var l=this.data,R=this.prevCheckTime;l.enabled&&(R&&u-R<l.interval||(this.prevCheckTime=u,this.checkIntersections()))},checkIntersections:function(){var u=this.clearedIntersectedEls,l=this.el,R=this.data,N,Y=this.intersectedEls,G,x=this.intersections,U=this.newIntersectedEls,j=this.newIntersections,Z=this.prevIntersectedEls,CA=this.rawIntersections;for(this.dirty&&this.refreshObjects(),m(this.prevIntersectedEls,this.intersectedEls),this.updateOriginDirection(),CA.length=0,this.raycaster.intersectObjects(this.objects,!0,CA),x.length=0,Y.length=0,N=0;N<CA.length;N++)G=CA[N],!(R.showLine&&G.object===l.getObject3D("line"))&&G.object.el&&(x.push(G),Y.push(G.object.el));for(j.length=0,U.length=0,N=0;N<x.length;N++)Z.indexOf(x[N].object.el)===-1&&(j.push(x[N]),U.push(x[N].object.el));for(u.length=0,N=0;N<Z.length;N++)Y.indexOf(Z[N])===-1&&(Z[N].emit(h.INTERSECT_CLEAR,this.intersectedClearedDetail),u.push(Z[N]));for(u.length&&l.emit(h.INTERSECTION_CLEAR,this.intersectionClearedDetail),N=0;N<U.length;N++)U[N].emit(h.INTERSECT,this.intersectedDetail);j.length&&(this.intersectionDetail.els=U,this.intersectionDetail.intersections=j,l.emit(h.INTERSECTION,this.intersectionDetail)),(Z.length===0&&x.length>0||Z.length>0&&x.length===0||Z.length&&x.length&&Z[0]!==x[0].object.el)&&(this.intersectionDetail.els=this.intersectedEls,this.intersectionDetail.intersections=x,l.emit(h.INTERSECTION_CLOSEST_ENTITY_CHANGED,this.intersectionDetail)),R.showLine&&setTimeout(this.updateLine)},updateLine:function(){var u=this.el,l=this.intersections,R;l.length&&(l[0].object.el===u&&l[1]?R=l[1].distance:R=l[0].distance),this.drawLine(R)},getIntersection:function(u){var l,R;for(l=0;l<this.intersections.length;l++)if(R=this.intersections[l],R.object.el===u)return R;return null},updateOriginDirection:function(){var u=new s.Vector3,l=new s.Vector3;return function(){var N=this.el,Y=this.data;if(Y.useWorldCoordinates){this.raycaster.set(Y.origin,Y.direction);return}N.object3D.updateMatrixWorld(),l.setFromMatrixPosition(N.object3D.matrixWorld),(Y.origin.x!==0||Y.origin.y!==0||Y.origin.z!==0)&&(l=N.object3D.localToWorld(l.copy(Y.origin))),u.copy(Y.direction).transformDirection(N.object3D.matrixWorld).normalize(),this.raycaster.set(l,u)}}(),drawLine:function(u){var l=this.data,R=this.el,N;N=this.lineData.end===this.lineEndVec3?this.otherLineEndVec3:this.lineEndVec3,u===void 0&&(u=l.far===1/0?1e3:l.far),this.lineData.start=l.origin,this.lineData.end=N.copy(this.unitLineEndVec3).multiplyScalar(u).add(l.origin),this.lineData.color=l.lineColor,this.lineData.opacity=l.lineOpacity,R.setAttribute("line",this.lineData)},flattenObject3DMaps:function(u){var l,R,N=this.objects,Y=this.el.sceneEl.object3D;function G(U){return U.parent?G(U.parent):U===Y}for(N.length=0,R=0;R<u.length;R++){var x=u[R];if(x.isEntity&&x.object3D&&G(x.object3D))for(l in x.object3DMap)N.push(x.getObject3D(l))}return N},clearAllIntersections:function(){var u;for(u=0;u<this.intersectedEls.length;u++)this.intersectedEls[u].emit(h.INTERSECT_CLEAR,this.intersectedClearedDetail);m(this.clearedIntersectedEls,this.intersectedEls),this.intersectedEls.length=0,this.intersections.length=0,this.el.emit(h.INTERSECTION_CLEAR,this.intersectionClearedDetail)}});function m(u,l){var R;for(u.length=l.length,R=0;R<l.length;R++)u[R]=l[R]}},"./src/components/rotation.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>T});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=s.MathUtils.degToRad,T=(0,z.registerComponent)("rotation",{schema:{type:"vec3"},update:function(){var v=this.data,D=this.el.object3D;D.rotation.set(_(v.x),_(v.y),_(v.z),"YXZ")},remove:function(){this.el.object3D.rotation.set(0,0,0)}})},"./src/components/scale.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>z});var s=d("./src/core/component.js"),z=(0,s.registerComponent)("scale",{schema:{type:"vec3",default:{x:1,y:1,z:1}},update:function(){var _=this.data,T=this.el.object3D;T.scale.set(_.x,_.y,_.z)},remove:function(){this.el.object3D.scale.set(1,1,1)}})},"./src/components/scene/ar-hit-test.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>m});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_="data:image/webp;base64,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",T=21,v=function(){var u=new s.Quaternion,l=new s.Vector3;function R(N,Y,G){Y.position.copy(N.transform.position),Y.quaternion.copy(N.transform.orientation),l.copy(G),u.copy(N.transform.orientation),l.applyQuaternion(u),Y.position.sub(l)}return R}();v.tempFakePose={transform:{orientation:new s.Quaternion,position:new s.Vector3}};function D(u,l){this.renderer=u,this.xrHitTestSource=null,u.xr.addEventListener("sessionend",(function(){this.xrHitTestSource=null}).bind(this)),u.xr.addEventListener("sessionstart",(function(){this.sessionStart(l)}).bind(this)),this.renderer.xr.isPresenting&&this.sessionStart(l)}D.prototype.previousFrameAnchors=new Set,D.prototype.anchorToObject3D=new Map;function h(u){console.warn(u.message),console.warn('Cannot requestHitTestSource Are you missing: webxr="optionalFeatures: hit-test;" from <a-scene>?')}D.prototype.sessionStart=function(l){if(this.session=this.renderer.xr.getSession(),!("requestHitTestSource"in this.session)){h({message:"No requestHitTestSource on the session."});return}l.space?this.session.requestHitTestSource(l).then((function(R){this.xrHitTestSource=R}).bind(this)).catch(h):l.profile&&this.session.requestHitTestSourceForTransientInput(l).then((function(R){this.xrHitTestSource=R,this.transient=!0}).bind(this)).catch(h)},D.prototype.anchorFromLastHitTestResult=function(u,l){var R=this.lastHitTest;if(R){var N={object3D:u,offset:l};Array.from(this.anchorToObject3D.entries()).forEach((function(Y){var G=Y[1].object3D,x=Y[0];G===u&&(this.anchorToObject3D.delete(x),x.delete())}).bind(this)),R.createAnchor&&R.createAnchor().then((function(Y){this.anchorToObject3D.set(Y,N)}).bind(this)).catch(function(Y){console.warn(Y.message),console.warn('Cannot create anchor, are you missing: webxr="optionalFeatures: anchors;" from <a-scene>?')})}},D.prototype.doHit=function(l){if(this.renderer.xr.isPresenting){var R=this.renderer.xr.getReferenceSpace(),N=l.getViewerPose(R),Y,G;if(this.xrHitTestSource&&N)return this.transient?(Y=l.getHitTestResultsForTransientInput(this.xrHitTestSource),Y.length>0?(G=Y[0].results,G.length>0?(this.lastHitTest=G[0],G[0].getPose(R)):!1):!1):(Y=l.getHitTestResults(this.xrHitTestSource),Y.length>0?(this.lastHitTest=Y[0],Y[0].getPose(R)):!1)}},D.updateAnchorPoses=function(u,l){var R=u.trackedAnchors||D.prototype.previousFrameAnchors;D.prototype.previousFrameAnchors.forEach(function(N){R.has(N)||D.prototype.anchorToObject3D.delete(N)}),R.forEach(function(N){var Y,G,x,U;try{if(Y=u.getPose(N.anchorSpace,l),Y){if(G=D.prototype.anchorToObject3D.get(N),!G)return;x=G.offset,U=G.object3D,v(Y,U,x)}}catch(j){console.error("while updating anchor poses:",j)}}),D.prototype.previousFrameAnchors=R};var p,m=(0,z.registerComponent)("ar-hit-test",{schema:{target:{type:"selector"},enabled:{default:!0},src:{default:_,type:"map"},type:{default:"footprint",oneOf:["footprint","map"]},footprintDepth:{default:.1},mapSize:{type:"vec2",default:{x:.5,y:.5}}},sceneOnly:!0,init:function(){this.hitTest=null,this.imageDataArray=new Uint8ClampedArray(512*512*4),this.imageData=new ImageData(this.imageDataArray,512,512),this.textureCache=new Map,this.orthoCam=new s.OrthographicCamera,this.orthoCam.layers.set(T),this.textureTarget=new s.WebGLRenderTarget(512,512,{}),this.basicMaterial=new s.MeshBasicMaterial({color:0,side:s.DoubleSide}),this.canvas=document.createElement("canvas"),this.context=this.canvas.getContext("2d"),this.context.imageSmoothingEnabled=!1,this.canvas.width=512,this.canvas.height=512,this.canvasTexture=new s.CanvasTexture(this.canvas,{alpha:!0}),this.canvasTexture.flipY=!1;var u=this.el.getAttribute("webxr"),l=u.optionalFeatures;(!l.includes("hit-test")||!l.includes("anchors"))&&(l.push("hit-test"),l.push("anchors"),this.el.setAttribute("webxr",u)),this.el.sceneEl.renderer.xr.addEventListener("sessionend",(function(){this.hitTest=null}).bind(this)),this.el.sceneEl.addEventListener("enter-vr",(function(){if(this.el.is("ar-mode")){var R=this.el.sceneEl.renderer,N=this.session=R.xr.getSession();this.hasPosedOnce=!1,this.bboxMesh.visible=!1,p||(p=new Map),N.requestReferenceSpace("viewer").then((function(U){this.viewerHitTest=this.hitTest=new D(R,{space:U}),this.el.emit("ar-hit-test-start")}).bind(this));var Y=this;this.el.sceneEl.addEventListener("controllersupdated",function(){var U=this,j=U.xrSession&&U.xrSession.inputSources;if(j){for(var Z=0;Z<j.length;++Z)if(j[Z].targetRayMode==="tracked-pointer"){Y.hitTest=new D(R,{space:j[Z].targetRaySpace}),p.set(j[Z],Y.hitTest),Y.viewerHitTest&&typeof Y.viewerHitTest.cancel=="function"&&(Y.viewerHitTest.cancel(),Y.viewerHitTest=null);break}}});var G="generic-touchscreen",x=new D(R,{profile:G});N.addEventListener("selectstart",(function(U){if(this.data.enabled===!0){var j=U.inputSource;this.bboxMesh.visible=!0,this.hasPosedOnce===!0&&(this.el.emit("ar-hit-test-select-start",{inputSource:j,position:this.bboxMesh.position,orientation:this.bboxMesh.quaternion}),j.profiles[0]===G?this.hitTest=x:(this.hitTest=p.get(j)||new D(R,{space:j.targetRaySpace}),p.set(j,this.hitTest)))}}).bind(this)),N.addEventListener("selectend",(function(U){if(!this.hitTest||this.data.enabled!==!0){this.hitTest=null;return}var j=U.inputSource,Z;this.hasPosedOnce===!0&&(this.bboxMesh.visible=!1,this.data.target&&(Z=this.data.target.object3D,Z&&(v.tempFakePose.transform.position.copy(this.bboxMesh.position),v.tempFakePose.transform.orientation.copy(this.bboxMesh.quaternion),v(v.tempFakePose,Z,this.bboxOffset),Z.visible=!0,this.hitTest.anchorFromLastHitTestResult(Z,this.bboxOffset))),this.el.emit("ar-hit-test-select",{inputSource:j,position:this.bboxMesh.position,orientation:this.bboxMesh.quaternion}),this.hitTest=null)}).bind(this))}}).bind(this)),this.bboxOffset=new s.Vector3,this.update=this.update.bind(this),this.makeBBox()},update:function(){this.data.enabled===!1&&(this.hitTest=null,this.bboxMesh.visible=!1),this.data.target&&(this.data.target.object3D?(this.data.target.addEventListener("model-loaded",this.update),this.data.target.object3D.layers.enable(T),this.data.target.object3D.traverse(function(u){u.layers.enable(T)})):this.data.target.addEventListener("loaded",this.update,{once:!0})),this.bboxNeedsUpdate=!0},makeBBox:function(){var u=new s.PlaneGeometry(1,1),l=new s.MeshBasicMaterial({transparent:!0,color:16777215});u.rotateX(-Math.PI/2),u.rotateY(-Math.PI/2),this.bbox=new s.Box3,this.bboxMesh=new s.Mesh(u,l),this.el.setObject3D("ar-hit-test",this.bboxMesh),this.bboxMesh.visible=!1},updateFootprint:function(){var u,l=this.el.sceneEl.renderer,R,N,Y=l.xr.enabled;this.bboxMesh.material.map=this.canvasTexture,this.bboxMesh.material.needsUpdate=!0,this.orthoCam.rotation.set(-Math.PI/2,0,-Math.PI/2),this.orthoCam.position.copy(this.bboxMesh.position),this.orthoCam.position.y-=this.bboxMesh.scale.y/2,this.orthoCam.near=.1,this.orthoCam.far=this.orthoCam.near+this.data.footprintDepth*this.bboxMesh.scale.y,this.orthoCam.position.y+=this.orthoCam.far,this.orthoCam.right=this.bboxMesh.scale.z/2,this.orthoCam.left=-this.bboxMesh.scale.z/2,this.orthoCam.top=this.bboxMesh.scale.x/2,this.orthoCam.bottom=-this.bboxMesh.scale.x/2,this.orthoCam.updateProjectionMatrix(),R=l.getRenderTarget(),l.setRenderTarget(this.textureTarget),l.xr.enabled=!1,N=this.el.object3D.background,this.el.object3D.overrideMaterial=this.basicMaterial,this.el.object3D.background=null,l.render(this.el.object3D,this.orthoCam),this.el.object3D.background=N,this.el.object3D.overrideMaterial=null,l.xr.enabled=Y,l.setRenderTarget(R),l.readRenderTargetPixels(this.textureTarget,0,0,512,512,this.imageDataArray),this.context.putImageData(this.imageData,0,0),this.context.shadowColor="white",this.context.shadowBlur=10,this.context.drawImage(this.canvas,0,0),u=this.context.getImageData(0,0,512,512);for(var G=0;G<512*512;G++)u.data[G*4+3]!==0&&u.data[G*4+3]!==255&&(u.data[G*4+3]=128);this.context.putImageData(u,0,0),this.canvasTexture.needsUpdate=!0},tick:function(){var u,l=this.el.sceneEl.frame,R=this.el.sceneEl.renderer;if(l&&D.updateAnchorPoses(l,R.xr.getReferenceSpace()),this.bboxNeedsUpdate){if(this.bboxNeedsUpdate=!1,!this.data.target||this.data.type==="map"){var N;this.textureCache.has(this.data.src)?N=this.textureCache.get(this.data.src):(N=new s.TextureLoader().load(this.data.src),this.textureCache.set(this.data.src,N)),this.bboxMesh.material.map=N,this.bboxMesh.material.needsUpdate=!0}this.data.target&&this.data.target.object3D?(this.bbox.setFromObject(this.data.target.object3D),this.bbox.getCenter(this.bboxMesh.position),this.bbox.getSize(this.bboxMesh.scale),this.data.type==="footprint"&&(this.bboxMesh.scale.x*=1.04,this.bboxMesh.scale.z*=1.04,this.updateFootprint()),this.bboxMesh.position.y-=this.bboxMesh.scale.y/2,this.bboxOffset.copy(this.bboxMesh.position),this.bboxOffset.sub(this.data.target.object3D.position)):this.bboxMesh.scale.set(this.data.mapSize.x,1,this.data.mapSize.y)}this.hitTest&&(u=this.hitTest.doHit(l),u&&(this.hasPosedOnce!==!0&&(this.hasPosedOnce=!0,this.el.emit("ar-hit-test-achieved")),this.bboxMesh.visible=!0,this.bboxMesh.position.copy(u.transform.position),this.bboxMesh.quaternion.copy(u.transform.orientation)))}})},"./src/components/scene/background.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>_});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=(0,z.registerComponent)("background",{schema:{color:{type:"color",default:"black"},transparent:{default:!1}},sceneOnly:!0,update:function(){var T=this.data,v=this.el.object3D;T.transparent?v.background=null:v.background=new s.Color(T.color)},remove:function(){var T=this.el.object3D;T.background=null}})},"./src/components/scene/debug.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>z});var s=d("./src/core/component.js"),z=(0,s.registerComponent)("debug",{schema:{default:!0},sceneOnly:!0})},"./src/components/scene/device-orientation-permission-ui.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>R});var s=d("./src/core/component.js"),z=d("./src/constants/index.js"),_="a-modal",T="a-dialog",v="a-dialog-text",D="a-dialog-text-container",h="a-dialog-buttons-container",p="a-dialog-button",m="a-dialog-allow-button",u="a-dialog-deny-button",l="a-dialog-ok-button",R=(0,s.registerComponent)("device-orientation-permission-ui",{schema:{enabled:{default:!0},deviceMotionMessage:{default:"This immersive website requires access to your device motion sensors."},httpsMessage:{default:"Access this site over HTTPS to enter VR mode and grant access to the device sensors."},denyButtonText:{default:"Deny"},allowButtonText:{default:"Allow"},cancelButtonText:{default:"Cancel"}},sceneOnly:!0,init:function(){var x=this;if(this.data.enabled){if(window.isSecureContext||this.showHTTPAlert(),typeof DeviceOrientationEvent>"u"||!DeviceOrientationEvent.requestPermission){this.permissionGranted=!0;return}this.onDeviceMotionDialogAllowClicked=this.onDeviceMotionDialogAllowClicked.bind(this),this.onDeviceMotionDialogDenyClicked=this.onDeviceMotionDialogDenyClicked.bind(this),DeviceOrientationEvent.requestPermission().then(function(){x.el.emit("deviceorientationpermissiongranted"),x.permissionGranted=!0}).catch(function(){x.devicePermissionDialogEl=N(x.data.denyButtonText,x.data.allowButtonText,x.data.deviceMotionMessage,x.onDeviceMotionDialogAllowClicked,x.onDeviceMotionDialogDenyClicked),x.el.appendChild(x.devicePermissionDialogEl)})}},remove:function(){this.devicePermissionDialogEl&&this.el.removeChild(this.devicePermissionDialogEl)},onDeviceMotionDialogDenyClicked:function(){this.remove()},showHTTPAlert:function(){var x=this,U=Y(x.data.cancelButtonText,x.data.httpsMessage,function(){x.el.removeChild(U)});this.el.appendChild(U)},onDeviceMotionDialogAllowClicked:function(){var x=this;this.el.emit("deviceorientationpermissionrequested"),DeviceOrientationEvent.requestPermission().then(function(U){U==="granted"?(x.el.emit("deviceorientationpermissiongranted"),x.permissionGranted=!0):x.el.emit("deviceorientationpermissionrejected"),x.remove()}).catch(console.error)}});function N(x,U,j,Z,CA){var QA,SA,UA;return QA=document.createElement("div"),QA.classList.add(h),SA=document.createElement("button"),SA.classList.add(p,u),SA.setAttribute(z.AFRAME_INJECTED,""),SA.innerHTML=x,QA.appendChild(SA),UA=document.createElement("button"),UA.classList.add(p,m),UA.setAttribute(z.AFRAME_INJECTED,""),UA.innerHTML=U,QA.appendChild(UA),UA.addEventListener("click",function(TA){TA.stopPropagation(),Z()}),SA.addEventListener("click",function(TA){TA.stopPropagation(),CA()}),G(j,QA)}function Y(x,U,j){var Z,CA;return Z=document.createElement("div"),Z.classList.add(h),CA=document.createElement("button"),CA.classList.add(p,l),CA.setAttribute(z.AFRAME_INJECTED,""),CA.innerHTML=x,Z.appendChild(CA),CA.addEventListener("click",function(QA){QA.stopPropagation(),j()}),G(U,Z)}function G(x,U){var j,Z,CA,QA;return j=document.createElement("div"),j.classList.add(_),j.setAttribute(z.AFRAME_INJECTED,""),Z=document.createElement("div"),Z.className=T,Z.setAttribute(z.AFRAME_INJECTED,""),j.appendChild(Z),CA=document.createElement("div"),CA.classList.add(D),Z.appendChild(CA),QA=document.createElement("div"),QA.classList.add(v),QA.innerHTML=x,CA.appendChild(QA),Z.appendChild(U),j}},"./src/components/scene/embedded.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>z});var s=d("./src/core/component.js"),z=(0,s.registerComponent)("embedded",{dependencies:["xr-mode-ui"],schema:{default:!0},sceneOnly:!0,update:function(){var _=this.el,T=_.querySelector(".a-enter-vr");this.data===!0?(T&&T.classList.add("embedded"),_.removeFullScreenStyles()):(T&&T.classList.remove("embedded"),_.addFullScreenStyles())}})},"./src/components/scene/fog.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>_});var s=d("./src/core/component.js"),z=d("./node_modules/three/build/three.core.js"),_=(0,s.registerComponent)("fog",{schema:{color:{type:"color",default:"#000"},density:{default:25e-5},far:{default:1e3,min:0},near:{default:1,min:0},type:{default:"linear",oneOf:["linear","exponential"]}},sceneOnly:!0,update:function(){var v=this.data,D=this.el,h=this.el.object3D.fog;if(!h||v.type!==h.name){D.object3D.fog=T(v);return}Object.keys(this.schema).forEach(function(p){var m=v[p];p==="color"&&(m=new z.Color(m)),h[p]=m})},remove:function(){var v=this.el,D=this.el.object3D.fog;D&&(v.object3D.fog=null)}});function T(v){var D;return v.type==="exponential"?D=new z.FogExp2(v.color,v.density):D=new z.Fog(v.color,v.near,v.far),D.name=v.type,D}},"./src/components/scene/inspector.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>u});var s=d("./src/constants/index.js"),z=d("./src/core/component.js"),_=d("./package.json"),T=d("./src/utils/index.js");function v(l){var R=l.split(".");return R[2]="x",R.join(".")}var D="https://unpkg.com/aframe-inspector@"+v(_.version)+"/dist/aframe-inspector.min.js",h=D,p="Loading Inspector",m="Error loading Inspector",u=(0,z.registerComponent)("inspector",{schema:{url:{default:h}},sceneOnly:!0,init:function(){this.firstPlay=!0,this.onKeydown=this.onKeydown.bind(this),this.onMessage=this.onMessage.bind(this),this.initOverlay(),window.addEventListener("keydown",this.onKeydown),window.addEventListener("message",this.onMessage)},play:function(){var l;this.firstPlay&&(l=T.getUrlParameter("inspector"),l!=="false"&&l&&(this.openInspector(),this.firstPlay=!1))},initOverlay:function(){var l='<span class="dots"><span>.</span><span>.</span><span>.</span></span>';this.loadingMessageEl=document.createElement("div"),this.loadingMessageEl.classList.add("a-inspector-loader"),this.loadingMessageEl.innerHTML=p+l},remove:function(){this.removeEventListeners()},onKeydown:function(l){var R=l.keyCode===73&&(l.ctrlKey&&l.altKey||l.getModifierState("AltGraph"));R&&this.openInspector()},showLoader:function(){document.body.appendChild(this.loadingMessageEl)},hideLoader:function(){document.body.removeChild(this.loadingMessageEl)},onMessage:function(l){l.data==="INJECT_AFRAME_INSPECTOR"&&this.openInspector()},openInspector:function(l){var R=this,N;if(AFRAME.INSPECTOR||AFRAME.inspectorInjected){AFRAME.INSPECTOR.open(l);return}this.showLoader(),N=document.createElement("script"),N.src=this.data.url,N.setAttribute("data-name","aframe-inspector"),N.setAttribute(s.AFRAME_INJECTED,""),N.onload=function(){AFRAME.INSPECTOR.open(l),R.hideLoader(),R.removeEventListeners()},N.onerror=function(){R.loadingMessageEl.innerHTML=m},document.head.appendChild(N),AFRAME.inspectorInjected=!0},removeEventListeners:function(){window.removeEventListener("keydown",this.onKeydown),window.removeEventListener("message",this.onMessage)}})},"./src/components/scene/keyboard-shortcuts.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>_});var s=d("./src/core/component.js"),z=d("./src/utils/index.js"),_=(0,s.registerComponent)("keyboard-shortcuts",{schema:{enterVR:{default:!0},exitVR:{default:!0}},sceneOnly:!0,init:function(){this.onKeyup=this.onKeyup.bind(this)},play:function(){window.addEventListener("keyup",this.onKeyup,!1)},pause:function(){window.removeEventListener("keyup",this.onKeyup)},onKeyup:function(T){var v=this.el;(0,z.shouldCaptureKeyEvent)(T)&&(this.data.enterVR&&T.keyCode===70&&v.enterVR(),this.data.exitVR&&T.keyCode===27&&v.exitVR())}})},"./src/components/scene/pool.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>T});var s=d("./src/utils/index.js"),z=d("./src/core/component.js"),_=(0,s.debug)("components:pool:warn"),T=(0,z.registerComponent)("pool",{schema:{container:{default:""},mixin:{default:""},size:{default:0},dynamic:{default:!1}},sceneOnly:!0,multiple:!0,initPool:function(){var v;for(this.availableEls=[],this.usedEls=[],this.data.mixin||_("No mixin provided for pool component."),this.data.container&&(this.container=document.querySelector(this.data.container),this.container||_("Container "+this.data.container+" not found.")),this.container=this.container||this.el,v=0;v<this.data.size;++v)this.createEntity()},update:function(v){var D=this.data;(v.mixin!==D.mixin||v.size!==D.size)&&this.initPool()},createEntity:function(){var v;v=document.createElement("a-entity"),v.play=this.wrapPlay(v.play),v.setAttribute("mixin",this.data.mixin),v.object3D.visible=!1,v.pause(),this.container.appendChild(v),this.availableEls.push(v);var D=this.usedEls;v.addEventListener("loaded",function(){D.indexOf(v)===-1&&(v.object3DParent=v.object3D.parent,v.object3D.parent.remove(v.object3D))})},wrapPlay:function(v){var D=this.usedEls;return function(){D.indexOf(this)!==-1&&v.call(this)}},requestEntity:function(){var v;if(this.availableEls.length===0){if(this.data.dynamic===!1){_("Requested entity from empty pool: "+this.attrName);return}else _("Requested entity from empty pool. This pool is dynamic and will resize automatically. You might want to increase its initial size: "+this.attrName);this.createEntity()}return v=this.availableEls.shift(),this.usedEls.push(v),v.object3DParent&&(v.object3DParent.add(v.object3D),this.updateRaycasters()),v.object3D.visible=!0,v},returnEntity:function(v){var D=this.usedEls.indexOf(v);if(D===-1){_("The returned entity was not previously pooled from "+this.attrName);return}return this.usedEls.splice(D,1),this.availableEls.push(v),v.object3DParent=v.object3D.parent,v.object3D.parent.remove(v.object3D),this.updateRaycasters(),v.object3D.visible=!1,v.pause(),v},updateRaycasters:function(){var v=document.querySelectorAll("[raycaster]");v.forEach(function(D){D.components.raycaster.setDirty()})}})},"./src/components/scene/real-world-meshing.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>_});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=(0,z.registerComponent)("real-world-meshing",{schema:{filterLabels:{type:"array"},meshesEnabled:{default:!0},meshMixin:{default:!0},planesEnabled:{default:!0},planeMixin:{default:""}},sceneOnly:!0,init:function(){var T=this.el.getAttribute("webxr"),v=T.requiredFeatures;v.indexOf("mesh-detection")===-1&&(v.push("mesh-detection"),this.el.setAttribute("webxr",T)),v.indexOf("plane-detection")===-1&&(v.push("plane-detection"),this.el.setAttribute("webxr",T)),this.meshEntities=[],this.initWorldMeshEntity=this.initWorldMeshEntity.bind(this)},tick:function(){this.el.is("ar-mode")&&(this.detectMeshes(),this.updateMeshes())},detectMeshes:function(){var T=this.data,v,D,h=this.el,p,m=this.meshEntities,u=!1,l=[],R=this.data.filterLabels;p=h.frame,v=p.detectedMeshes,D=p.detectedPlanes;for(var N=0;N<m.length;N++)m[N].present=!1;if(T.meshesEnabled){for(var Y of v.values())if(!(R.length&&R.indexOf(Y.semanticLabel)===-1)){for(N=0;N<m.length;N++)if(Y===m[N].mesh){u=!0,m[N].present=!0,m[N].lastChangedTime<Y.lastChangedTime&&this.updateMeshGeometry(m[N].el,Y),m[N].lastChangedTime=Y.lastChangedTime;break}u||l.push(Y),u=!1}}if(T.planesEnabled){for(Y of D.values())if(!(R.length&&R.indexOf(Y.semanticLabel)===-1)){for(N=0;N<m.length;N++)if(Y===m[N].mesh){u=!0,m[N].present=!0,m[N].lastChangedTime<Y.lastChangedTime&&this.updateMeshGeometry(m[N].el,Y),m[N].lastChangedTime=Y.lastChangedTime;break}u||l.push(Y),u=!1}}this.deleteMeshes(),this.createNewMeshes(l)},updateMeshes:function(){var T=new s.Matrix4;return function(){for(var v,D=this.el,h,p=D.frame,m=this.meshEntities,u=D.renderer.xr.getReferenceSpace(),l,R=0;R<m.length;R++)l=m[R].mesh.meshSpace||m[R].mesh.planeSpace,v=p.getPose(l,u),h=m[R].el,h.hasLoaded&&(T.fromArray(v.transform.matrix),T.decompose(h.object3D.position,h.object3D.quaternion,h.object3D.scale))}}(),deleteMeshes:function(){for(var T=this.meshEntities,v=[],D=0;D<T.length;D++)T[D].present?v.push(T[D]):this.el.removeChild(T[D]);this.meshEntities=v},createNewMeshes:function(T){for(var v,D=0;D<T.length;D++)v=document.createElement("a-entity"),this.meshEntities.push({mesh:T[D],el:v}),v.addEventListener("loaded",this.initWorldMeshEntity),this.el.appendChild(v)},initMeshGeometry:function(T){var v,D,h;if(T instanceof XRPlane){D=new s.Shape,h=T.polygon;for(var p=0;p<h.length;++p)p===0?D.moveTo(h[p].x,h[p].z):D.lineTo(h[p].x,h[p].z);return v=new s.ShapeGeometry(D),v.rotateX(Math.PI/2),v}return v=new s.BufferGeometry,v.setAttribute("position",new s.BufferAttribute(T.vertices,3)),v.setIndex(new s.BufferAttribute(T.indices,1)),v},initWorldMeshEntity:function(T){for(var v=T.target,D,h,p,m=this.meshEntities,u=0;u<m.length;u++)if(m[u].el===v){p=m[u];break}D=this.initMeshGeometry(p.mesh),h=new s.Mesh(D,new s.MeshBasicMaterial({color:Math.random()*16777215,side:s.DoubleSide})),v.setObject3D("mesh",h),p.mesh instanceof XRPlane&&this.data.planeMixin?v.setAttribute("mixin",this.data.planeMixin):this.data.meshMixin&&v.setAttribute("mixin",this.data.meshMixin),v.setAttribute("data-world-mesh",p.mesh.semanticLabel)},updateMeshGeometry:function(T,v){var D=T.getObject3D("mesh");D.geometry.dispose(),D.geometry=this.initMeshGeometry(v)}})},"./src/components/scene/reflection.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>T});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js");function _(v,D,h,p){var m=Math.max(v.primaryLightIntensity.x,Math.max(v.primaryLightIntensity.y,v.primaryLightIntensity.z));D.sh.fromArray(v.sphericalHarmonicsCoefficients),D.intensity=3.14,h&&(h.color.setRGB(v.primaryLightIntensity.x/m,v.primaryLightIntensity.y/m,v.primaryLightIntensity.z/m),h.intensity=m,p.copy(v.primaryLightDirection))}var T=(0,z.registerComponent)("reflection",{schema:{directionalLight:{type:"selector"}},sceneOnly:!0,init:function(){var v=this;this.cubeRenderTarget=new s.WebGLCubeRenderTarget(16),this.cubeCamera=new s.CubeCamera(.1,1e3,this.cubeRenderTarget),this.lightingEstimationTexture=new s.WebGLCubeRenderTarget(16).texture,this.needsVREnvironmentUpdate=!0;var D=this.el.getAttribute("webxr"),h=D.optionalFeatures;h.includes("light-estimation")||(h.push("light-estimation"),this.el.setAttribute("webxr",D)),this.el.addEventListener("enter-vr",function(){if(v.el.is("ar-mode")){var p=v.el.renderer,m=p.xr.getSession();m.requestLightProbe&&v.startLightProbe()}}),this.el.addEventListener("exit-vr",function(){v.xrLightProbe&&v.stopLightProbe()}),this.el.object3D.environment=this.cubeRenderTarget.texture},stopLightProbe:function(){this.xrLightProbe=null,this.probeLight&&(this.probeLight.components.light.light.intensity=0),this.needsVREnvironmentUpdate=!0,this.el.object3D.environment=this.cubeRenderTarget.texture},startLightProbe:function(){this.needsLightProbeUpdate=!0},setupLightProbe:function(){var v=this.el.renderer,D=v.xr.getSession(),h=this,p=v.getContext();if(!this.probeLight){var m=document.createElement("a-light");m.setAttribute("type","probe"),m.setAttribute("intensity",0),this.el.appendChild(m),this.probeLight=m}switch(D.preferredReflectionFormat){case"srgba8":p.getExtension("EXT_sRGB");break;case"rgba16f":p.getExtension("OES_texture_half_float");break}this.glBinding=new XRWebGLBinding(D,p),p.getExtension("EXT_sRGB"),p.getExtension("OES_texture_half_float"),D.requestLightProbe().then(function(u){h.xrLightProbe=u,u.addEventListener("reflectionchange",h.updateXRCubeMap.bind(h))}).catch(function(u){console.warn("Lighting estimation not supported: "+u.message),console.warn('Are you missing: webxr="optionalFeatures: light-estimation;" from <a-scene>?')})},updateXRCubeMap:function(){var v=this.el.renderer,D=this.glBinding.getReflectionCubeMap(this.xrLightProbe);if(D){var h=v.properties.get(this.lightingEstimationTexture);h.__webglTexture=D,this.lightingEstimationTexture.needsPMREMUpdate=!0,this.el.object3D.environment=this.lightingEstimationTexture}},tick:function(){var v=this.el.object3D,D=this.el.renderer,h=this.el.frame;if(h&&this.xrLightProbe){var p=h.getLightEstimate(this.xrLightProbe);p&&_(p,this.probeLight.components.light.light,this.data.directionalLight&&this.data.directionalLight.components.light.light,this.data.directionalLight&&this.data.directionalLight.object3D.position)}this.needsVREnvironmentUpdate&&(v.environment=null,this.needsVREnvironmentUpdate=!1,this.cubeCamera.position.set(0,1.6,0),this.cubeCamera.update(D,v),v.environment=this.cubeRenderTarget.texture),this.needsLightProbeUpdate&&h&&(this.setupLightProbe(),this.needsLightProbeUpdate=!1)},remove:function(){this.el.object3D.environment=null,this.probeLight&&this.el.removeChild(this.probeLight)}})},"./src/components/scene/screenshot.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>v});var s=d("./src/core/component.js"),z=d("./node_modules/three/build/three.core.js"),_=["attribute vec3 position;","attribute vec2 uv;","uniform mat4 projectionMatrix;","uniform mat4 modelViewMatrix;","varying vec2 vUv;","void main() {"," vUv = vec2( 1.- uv.x, uv.y );"," gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );","}"].join(`
`),T=["precision mediump float;","uniform samplerCube map;","varying vec2 vUv;","#define M_PI 3.141592653589793238462643383279","void main() {"," vec2 uv = vUv;"," float longitude = uv.x * 2. * M_PI - M_PI + M_PI / 2.;"," float latitude = uv.y * M_PI;"," vec3 dir = vec3("," - sin( longitude ) * sin( latitude ),"," cos( latitude ),"," - cos( longitude ) * sin( latitude )"," );"," normalize( dir );"," gl_FragColor = vec4( textureCube( map, dir ).rgb, 1.0 );","}"].join(`
`),v=(0,s.registerComponent)("screenshot",{schema:{width:{default:4096},height:{default:2048},camera:{type:"selector"}},sceneOnly:!0,setup:function(){var D=this.el;if(!this.canvas){var h=D.renderer.getContext();h&&(this.cubeMapSize=h.getParameter(h.MAX_CUBE_MAP_TEXTURE_SIZE),this.material=new z.RawShaderMaterial({uniforms:{map:{type:"t",value:null}},vertexShader:_,fragmentShader:T,side:z.DoubleSide}),this.quad=new z.Mesh(new z.PlaneGeometry(1,1),this.material),this.quad.visible=!1,this.camera=new z.OrthographicCamera(-1/2,1/2,1/2,-1/2,-1e4,1e4),this.canvas=document.createElement("canvas"),this.ctx=this.canvas.getContext("2d"),D.object3D.add(this.quad),this.onKeyDown=this.onKeyDown.bind(this))}},getRenderTarget:function(D,h){return new z.WebGLRenderTarget(D,h,{colorSpace:this.el.sceneEl.renderer.outputColorSpace,minFilter:z.LinearFilter,magFilter:z.LinearFilter,wrapS:z.ClampToEdgeWrapping,wrapT:z.ClampToEdgeWrapping,format:z.RGBAFormat,type:z.UnsignedByteType})},resize:function(D,h){this.quad.scale.set(D,h,1),this.camera.left=-1*D/2,this.camera.right=D/2,this.camera.top=h/2,this.camera.bottom=-1*h/2,this.camera.updateProjectionMatrix(),this.canvas.width=D,this.canvas.height=h},play:function(){window.addEventListener("keydown",this.onKeyDown)},onKeyDown:function(D){var h=D.keyCode===83&&D.ctrlKey&&D.altKey;if(!(!this.data||!h)){var p=D.shiftKey?"equirectangular":"perspective";this.capture(p)}},setCapture:function(D){var h=this.el,p,m,u,l;return D==="perspective"?(this.quad.visible=!1,m=this.data.camera&&this.data.camera.components.camera.camera||h.camera,p={width:this.data.width,height:this.data.height}):(m=this.camera,l=new z.WebGLCubeRenderTarget(Math.min(this.cubeMapSize,2048),{format:z.RGBFormat,generateMipmaps:!0,minFilter:z.LinearMipmapLinearFilter,colorSpace:z.SRGBColorSpace}),u=new z.CubeCamera(h.camera.near,h.camera.far,l),h.camera.getWorldPosition(u.position),h.camera.getWorldQuaternion(u.quaternion),u.update(h.renderer,h.object3D),this.quad.material.uniforms.map.value=u.renderTarget.texture,p={width:this.data.width,height:this.data.height},this.quad.visible=!0),{camera:m,size:p,projection:D}},capture:function(D){var h=this.el.renderer.xr.enabled,p=this.el.renderer,m;this.setup(),p.xr.enabled=!1,m=this.setCapture(D),this.renderCapture(m.camera,m.size,m.projection),this.saveCapture(),p.xr.enabled=h},getCanvas:function(D){var h=this.el.renderer.xr.enabled,p=this.el.renderer;this.setup();var m=this.setCapture(D);return p.xr.enabled=!1,this.renderCapture(m.camera,m.size,m.projection),p.xr.enabled=h,this.canvas},renderCapture:function(D,h,p){var m=this.el.renderer.autoClear,u=this.el,l,R,N,Y=u.renderer;R=this.getRenderTarget(h.width,h.height),N=new Uint8Array(4*h.width*h.height),this.resize(h.width,h.height),Y.autoClear=!0,Y.clear(),Y.setRenderTarget(R),Y.render(u.object3D,D),Y.autoClear=m,Y.readRenderTargetPixels(R,0,0,h.width,h.height,N),Y.setRenderTarget(null),p==="perspective"&&(N=this.flipPixelsVertically(N,h.width,h.height)),l=new ImageData(new Uint8ClampedArray(N),h.width,h.height),this.quad.visible=!1,this.ctx.putImageData(l,0,0)},flipPixelsVertically:function(D,h,p){for(var m=D.slice(0),u=0;u<h;++u)for(var l=0;l<p;++l)m[u*4+l*h*4]=D[u*4+(p-l)*h*4],m[u*4+1+l*h*4]=D[u*4+1+(p-l)*h*4],m[u*4+2+l*h*4]=D[u*4+2+(p-l)*h*4],m[u*4+3+l*h*4]=D[u*4+3+(p-l)*h*4];return m},saveCapture:function(){this.canvas.toBlob(function(D){var h="screenshot-"+document.title.toLowerCase()+"-"+Date.now()+".png",p=document.createElement("a"),m=URL.createObjectURL(D);p.href=m,p.setAttribute("download",h),p.innerHTML="downloading...",p.style.display="none",document.body.appendChild(p),setTimeout(function(){p.click(),document.body.removeChild(p)},1)},"image/png")}})},"./src/components/scene/stats.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>p});var s=d("./src/core/component.js"),z=d("./vendor/rStats.js"),_=d.n(z),T=d("./src/utils/index.js");d("./vendor/rStats.extras.js"),d("./src/lib/rStatsAframe.js");var v=window.aframeStats,D="a-hidden",h=window.threeStats,p=(0,s.registerComponent)("stats",{schema:{default:!0},sceneOnly:!0,init:function(){var u=this.el;T.getUrlParameter("stats")!=="false"&&(this.stats=m(u),this.statsEl=document.querySelector(".rs-base"),this.hideBound=this.hide.bind(this),this.showBound=this.show.bind(this),u.addEventListener("enter-vr",this.hideBound),u.addEventListener("exit-vr",this.showBound))},update:function(){if(this.stats)return this.data?this.show():this.hide()},remove:function(){this.el.removeEventListener("enter-vr",this.hideBound),this.el.removeEventListener("exit-vr",this.showBound),this.statsEl&&this.statsEl.parentNode.removeChild(this.statsEl)},tick:function(){var u=this.stats;u&&(u("rAF").tick(),u("FPS").frame(),u().update())},hide:function(){this.statsEl.classList.add(D)},show:function(){this.statsEl.classList.remove(D)}});function m(u){var l=new h(u.renderer),R=new v(u),N=u.isMobile?[]:[l,R];return new(_())({css:[],values:{fps:{caption:"fps",below:30}},groups:[{caption:"Framerate",values:["fps","raf"]}],plugins:N})}},"./src/components/scene/xr-mode-ui.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>u});var s=d("./src/core/component.js"),z=d("./src/constants/index.js"),_=d("./src/utils/index.js"),T="a-enter-vr",v="a-enter-ar",D="a-enter-vr-button",h="a-enter-ar-button",p="a-hidden",m="a-orientation-modal",u=(0,s.registerComponent)("xr-mode-ui",{dependencies:["canvas"],schema:{enabled:{default:!0},enterVRButton:{default:""},enterVREnabled:{default:!0},enterARButton:{default:""},enterAREnabled:{default:!0},XRMode:{default:"vr",oneOf:["vr","ar","xr"]}},sceneOnly:!0,init:function(){var G=this,x=this.el;_.getUrlParameter("ui")!=="false"&&(this.insideLoader=!1,this.enterVREl=null,this.enterAREl=null,this.orientationModalEl=null,this.bindMethods(),x.addEventListener("enter-vr",this.updateEnterInterfaces),x.addEventListener("exit-vr",this.updateEnterInterfaces),x.addEventListener("update-vr-devices",this.updateEnterInterfaces),window.addEventListener("message",function(U){U.data.type==="loaderReady"&&(G.insideLoader=!0,G.remove())}),window.addEventListener("orientationchange",this.toggleOrientationModalIfNeeded))},bindMethods:function(){this.onEnterVRButtonClick=this.onEnterVRButtonClick.bind(this),this.onEnterARButtonClick=this.onEnterARButtonClick.bind(this),this.onModalClick=this.onModalClick.bind(this),this.toggleOrientationModalIfNeeded=this.toggleOrientationModalIfNeeded.bind(this),this.updateEnterInterfaces=this.updateEnterInterfaces.bind(this)},onModalClick:function(){this.el.exitVR()},onEnterVRButtonClick:function(){this.el.enterVR()},onEnterARButtonClick:function(){this.el.enterAR()},update:function(){var G=this.data,x=this.el;if(!G.enabled||this.insideLoader||_.getUrlParameter("ui")==="false")return this.remove();this.enterVREl||this.enterAREl||this.orientationModalEl||(!this.enterVREl&&G.enterVREnabled&&(G.XRMode==="xr"||G.XRMode==="vr")&&(G.enterVRButton?(this.enterVREl=document.querySelector(G.enterVRButton),this.enterVREl.addEventListener("click",this.onEnterVRButtonClick)):(this.enterVREl=l(this.onEnterVRButtonClick),x.appendChild(this.enterVREl))),!this.enterAREl&&G.enterAREnabled&&(G.XRMode==="xr"||G.XRMode==="ar")&&(G.enterARButton?(this.enterAREl=document.querySelector(G.enterARButton),this.enterAREl.addEventListener("click",this.onEnterARButtonClick)):(this.enterAREl=R(this.onEnterARButtonClick,G.XRMode==="xr"),x.appendChild(this.enterAREl))),this.orientationModalEl=N(this.onModalClick),x.appendChild(this.orientationModalEl),this.updateEnterInterfaces())},remove:function(){[this.enterVREl,this.enterAREl,this.orientationModalEl].forEach(function(G){G&&G.parentNode&&G.parentNode.removeChild(G)}),this.enterVREl=void 0,this.enterAREl=void 0,this.orientationModalEl=void 0},updateEnterInterfaces:function(){this.toggleEnterVRButtonIfNeeded(),this.toggleEnterARButtonIfNeeded(),this.toggleOrientationModalIfNeeded()},toggleEnterVRButtonIfNeeded:function(){var G=this.el;this.enterVREl&&(G.is("vr-mode")||(G.isMobile||_.device.isMobileDeviceRequestingDesktopSite())&&!_.device.checkVRSupport()?this.enterVREl.classList.add(p):(_.device.checkVRSupport()||this.enterVREl.classList.add("fullscreen"),this.enterVREl.classList.remove(p),G.enterVR(!1,!0)))},toggleEnterARButtonIfNeeded:function(){var G=this.el;this.enterAREl&&(G.is("vr-mode")||!_.device.checkARSupport()?this.enterAREl.classList.add(p):(this.enterAREl.classList.remove(p),G.enterVR(!0,!0)))},toggleOrientationModalIfNeeded:function(){var G=this.el,x=this.orientationModalEl;!x||!G.isMobile||(!_.device.isLandscape()&&G.is("vr-mode")?x.classList.remove(p):x.classList.add(p))}});function l(G){var x,U;return U=document.createElement("div"),U.classList.add(T),U.setAttribute(z.AFRAME_INJECTED,""),x=document.createElement("button"),x.className=D,x.setAttribute("title","Enter VR mode with a headset or fullscreen without"),x.setAttribute(z.AFRAME_INJECTED,""),_.device.isMobile()&&Y(x),U.appendChild(x),x.addEventListener("click",function(j){G(),j.stopPropagation()}),U}function R(G,x){var U,j;return j=document.createElement("div"),j.classList.add(v),x&&j.classList.add("xr"),j.setAttribute(z.AFRAME_INJECTED,""),U=document.createElement("button"),U.className=h,U.setAttribute("title","Enter AR mode with a headset or handheld device."),U.setAttribute(z.AFRAME_INJECTED,""),_.device.isMobile()&&Y(U),j.appendChild(U),U.addEventListener("click",function(Z){G(),Z.stopPropagation()}),j}function N(G){var x=document.createElement("div");x.className=m,x.classList.add(p),x.setAttribute(z.AFRAME_INJECTED,"");var U=document.createElement("button");return U.setAttribute(z.AFRAME_INJECTED,""),U.innerHTML="Exit VR",U.addEventListener("click",G),x.appendChild(U),x}function Y(G){G.addEventListener("touchstart",function(){G.classList.remove("resethover")},{passive:!0}),G.addEventListener("touchend",function(){G.classList.add("resethover")},{passive:!0})}},"./src/components/shadow.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>_});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=(0,z.registerComponent)("shadow",{schema:{cast:{default:!0},receive:{default:!0}},init:function(){this.onMeshChanged=this.update.bind(this),this.el.addEventListener("object3dset",this.onMeshChanged),this.system.setShadowMapEnabled(!0)},update:function(){var T=this.data;this.updateDescendants(T.cast,T.receive)},remove:function(){var T=this.el;T.removeEventListener("object3dset",this.onMeshChanged),this.updateDescendants(!1,!1)},updateDescendants:function(T,v){var D=this.el.sceneEl;this.el.object3D.traverse(function(h){if(h instanceof s.Mesh&&(h.castShadow=T,h.receiveShadow=v,D.hasLoaded&&h.material))for(var p=Array.isArray(h.material)?h.material:[h.material],m=0;m<p.length;m++)p[m].needsUpdate=!0})}})},"./src/components/sound.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>v});var s=d("./src/core/component.js"),z=d("./src/utils/index.js"),_=d("./node_modules/three/build/three.core.js"),T=(0,z.debug)("components:sound:warn"),v=(0,s.registerComponent)("sound",{schema:{autoplay:{default:!1},distanceModel:{default:"inverse",oneOf:["linear","inverse","exponential"]},loop:{default:!1},loopStart:{default:0},loopEnd:{default:0},maxDistance:{default:1e4},on:{default:""},poolSize:{default:1},positional:{default:!0},refDistance:{default:1},rolloffFactor:{default:1},src:{type:"audio"},volume:{default:1}},multiple:!0,init:function(){var D=this;this.listener=null,this.audioLoader=new _.AudioLoader,this.pool=new _.Group,this.loaded=!1,this.mustPlay=!1,this.playSoundBound=function(){D.playSound()}},update:function(D){var h=this.data,p,m,u=h.src!==D.src;if(u){if(!h.src)return;this.setupSound()}for(p=0;p<this.pool.children.length;p++)m=this.pool.children[p],h.positional&&(m.setDistanceModel(h.distanceModel),m.setMaxDistance(h.maxDistance),m.setRefDistance(h.refDistance),m.setRolloffFactor(h.rolloffFactor)),m.setLoop(h.loop),m.setLoopStart(h.loopStart),h.loopStart!==0&&h.loopEnd===0?m.setLoopEnd(m.buffer.duration):m.setLoopEnd(h.loopEnd),m.setVolume(h.volume),m.isPaused=!1;if(h.on!==D.on&&this.updateEventListener(D.on),u){var l=this;this.loaded=!1,this.audioLoader.load(h.src,function(R){for(p=0;p<l.pool.children.length;p++)m=l.pool.children[p],m.setBuffer(R);l.loaded=!0,_.Cache.remove(h.src),(l.data.autoplay||l.mustPlay)&&l.playSound(l.processSound),l.el.emit("sound-loaded",l.evtDetail,!1)})}},pause:function(){this.stopSound(),this.removeEventListener()},play:function(){this.data.autoplay&&this.playSound(),this.updateEventListener()},remove:function(){var D,h;this.removeEventListener(),this.el.getObject3D(this.attrName)&&this.el.removeObject3D(this.attrName);try{for(D=0;D<this.pool.children.length;D++)h=this.pool.children[D],h.disconnect()}catch{T("Audio source not properly disconnected")}},updateEventListener:function(D){var h=this.el;D&&h.removeEventListener(D,this.playSoundBound),h.addEventListener(this.data.on,this.playSoundBound)},removeEventListener:function(){this.el.removeEventListener(this.data.on,this.playSoundBound)},setupSound:function(){var D=this.el,h,p=D.sceneEl,m=this,u;this.pool.children.length>0&&(this.stopSound(),D.removeObject3D("sound"));var l=this.listener=p.audioListener||new _.AudioListener;for(p.audioListener=l,p.camera&&p.camera.add(l),p.addEventListener("camera-set-active",function(R){R.detail.cameraEl.getObject3D("camera").add(l)}),this.pool=new _.Group,h=0;h<this.data.poolSize;h++)u=this.data.positional?new _.PositionalAudio(l):new _.Audio(l),this.pool.add(u);for(D.setObject3D(this.attrName,this.pool),h=0;h<this.pool.children.length;h++)u=this.pool.children[h],u.onEnded=function(){this.isPlaying=!1,m.el.emit("sound-ended",m.evtDetail,!1)}},pauseSound:function(){var D,h;for(this.isPlaying=!1,D=0;D<this.pool.children.length;D++)h=this.pool.children[D],!(!h.source||!h.source.buffer||!h.isPlaying||h.isPaused)&&(h.isPaused=!0,h.pause())},playSound:function(D){var h,p,m;if(!this.loaded){T("Sound not loaded yet. It will be played once it finished loading"),this.mustPlay=!0,this.processSound=D;return}for(h=!1,this.isPlaying=!0,p=0;p<this.pool.children.length;p++)if(m=this.pool.children[p],!m.isPlaying&&m.buffer&&!h){D&&D(m),m.play(),m.isPaused=!1,h=!0;continue}if(!h){T("All the sounds are playing. If you need to play more sounds simultaneously consider increasing the size of pool with the `poolSize` attribute.",this.el);return}this.mustPlay=!1,this.processSound=void 0},stopSound:function(){var D,h;for(this.isPlaying=!1,D=0;D<this.pool.children.length;D++){if(h=this.pool.children[D],!h.source||!h.source.buffer)return;h.stop()}}})},"./src/components/text.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>SA,FONTS:()=>G});var s=d("./node_modules/three-bmfont-text/index.js"),z=d.n(s),_=d("./node_modules/load-bmfont/browser.js"),T=d.n(_),v=d("./src/core/component.js"),D=d("./src/core/shader.js"),h=d("./node_modules/three/build/three.core.js"),p=d("./src/utils/index.js"),m=d("./src/constants/index.js"),u=p.debug("components:text:error"),l=p.debug("components:text:warn"),R=1,N=16,Y=m.AFRAME_CDN_ROOT+"fonts/",G={aileronsemibold:Y+"Aileron-Semibold.fnt",dejavu:Y+"DejaVu-sdf.fnt",exo2bold:Y+"Exo2Bold.fnt",exo2semibold:Y+"Exo2SemiBold.fnt",kelsonsans:Y+"KelsonSans.fnt",monoid:Y+"Monoid.fnt",mozillavr:Y+"mozillavr.fnt",roboto:Y+"Roboto-msdf.json",sourcecodepro:Y+"SourceCodePro.fnt"},x=["roboto"],U="roboto",j=new NA,Z={},CA={},QA=/^\w+:/,SA=(0,v.registerComponent)("text",{multiple:!0,schema:{align:{type:"string",default:"left",oneOf:["left","right","center"]},alphaTest:{default:.5},anchor:{default:"center",oneOf:["left","right","center","align"]},baseline:{default:"center",oneOf:["top","center","bottom"]},color:{type:"color",default:"#FFF"},font:{type:"string",default:U},fontImage:{type:"string"},height:{type:"number"},letterSpacing:{type:"number",default:0},lineHeight:{type:"number"},negate:{type:"boolean",default:!0},opacity:{type:"number",default:1},shader:{default:"sdf",oneOf:D.shaders},side:{default:"front",oneOf:["front","back","double"]},tabSize:{default:4},transparent:{default:!0},value:{type:"string"},whiteSpace:{default:"normal",oneOf:["normal","pre","nowrap"]},width:{type:"number"},wrapCount:{type:"number",default:40},wrapPixels:{type:"number"},xOffset:{type:"number",default:0},yOffset:{type:"number",default:0},zOffset:{type:"number",default:.001}},init:function(){this.shaderData={},this.geometry=z()(),this.createOrUpdateMaterial(),this.explicitGeoDimensionsChecked=!1},update:function(HA){var pe=this.data,He=this.currentFont;if(CA[pe.font]?this.texture=CA[pe.font]:(this.texture=CA[pe.font]=new h.Texture,this.texture.anisotropy=N),this.createOrUpdateMaterial(),HA.font!==pe.font){this.updateFont();return}He&&(this.updateGeometry(this.geometry,He),this.updateLayout())},remove:function(){this.geometry.dispose(),this.geometry=null,this.el.removeObject3D(this.attrName),this.material.dispose(),this.material=null,this.texture.dispose(),this.texture=null,this.shaderObject&&delete this.shaderObject},createOrUpdateMaterial:function(){var HA=this.data,pe,He=this.material,Oe,ye=this.shaderData,Ye;if(Ye=HA.shader,x.indexOf(HA.font)!==-1||HA.font.indexOf("-msdf.")>=0?Ye="msdf":HA.font in G&&x.indexOf(HA.font)===-1&&(Ye="sdf"),pe=(this.shaderObject&&this.shaderObject.name)!==Ye,ye.alphaTest=HA.alphaTest,ye.color=HA.color,ye.map=this.texture,ye.opacity=HA.opacity,ye.side=UA(HA.side),ye.transparent=HA.transparent,ye.negate=HA.negate,!pe){this.shaderObject.update(ye),He.transparent=ye.transparent,He.side=ye.side;return}Oe=hA(this.el,Ye,ye),this.material=Oe.material,this.shaderObject=Oe.shader,this.material.side=ye.side,this.mesh&&(this.mesh.material=this.material)},updateFont:function(){var HA=this.data,pe=this.el,He,Oe=this.geometry,ye=this;HA.font||l("No font specified. Using the default font."),this.mesh&&(this.mesh.visible=!1),He=this.lookupFont(HA.font||U)||HA.font,j.get(He,function(){return TA(He,HA.yOffset)}).then(function(Et){var ct;if(Et.pages.length!==1)throw new Error("Currently only single-page bitmap fonts are supported.");Z[He]||(Et.widthFactor=Z[Et]=lA(Et)),ye.currentFont=Et,ct=ye.getFontImageSrc(),j.get(ct,function(){return pA(ct)}).then(function(q){var gA=ye.texture;gA&&(gA.image=q,gA.needsUpdate=!0,CA[HA.font]=gA,ye.texture=gA,ye.initMesh(),ye.currentFont=Et,ye.updateGeometry(Oe,Et),ye.updateLayout(),ye.mesh.visible=!0,pe.emit("textfontset",{font:HA.font,fontObj:Et}))}).catch(function(q){u(q.message),u(q.stack)})}).catch(function(Ye){u(Ye.message),u(Ye.stack)})},initMesh:function(){this.mesh||(this.mesh=new h.Mesh(this.geometry,this.material),this.el.setObject3D(this.attrName,this.mesh))},getFontImageSrc:function(){if(this.data.fontImage)return this.data.fontImage;var HA=this.lookupFont(this.data.font||U)||this.data.font,pe=this.currentFont.pages[0];return pe.match(QA)&&pe.indexOf("http")!==0?HA.replace(/(\.fnt)|(\.json)/,".png"):h.LoaderUtils.extractUrlBase(HA)+pe},updateLayout:function(){var HA,pe,He=this.el,Oe=this.data,ye=this.geometry,Ye,Et,ct,q=this.mesh,gA,yA,ge,le,Qt;if(!(!q||!ye.layout)){if(Ye=He.getAttribute("geometry"),ge=Oe.width||Ye&&Ye.width||R,gA=uA(Oe.wrapPixels,Oe.wrapCount,this.currentFont.widthFactor),yA=ge/gA,ct=ye.layout,Et=yA*(ct.height+ct.descender),Ye&&Ye.primitive==="plane"&&(this.explicitGeoDimensionsChecked||(this.explicitGeoDimensionsChecked=!0,this.hasExplicitGeoWidth=!!Ye.width,this.hasExplicitGeoHeight=!!Ye.height),this.hasExplicitGeoWidth||He.setAttribute("geometry","width",ge),this.hasExplicitGeoHeight||He.setAttribute("geometry","height",Et)),HA=Oe.anchor==="align"?Oe.align:Oe.anchor,HA==="left")le=0;else if(HA==="right")le=-1*ct.width;else if(HA==="center")le=-1*ct.width/2;else throw new TypeError("Invalid text.anchor property value",HA);if(pe=Oe.baseline,pe==="bottom")Qt=0;else if(pe==="top")Qt=-1*ct.height+ct.ascender;else if(pe==="center")Qt=-1*ct.height/2;else throw new TypeError("Invalid text.baseline property value",pe);q.position.x=le*yA+Oe.xOffset,q.position.y=Qt*yA,q.position.z=Oe.zOffset,q.scale.set(yA,-1*yA,yA)}},lookupFont:function(HA){return G[HA]},updateGeometry:function(){var HA={},pe={},He=/\\n/g,Oe=/\\t/g;return function(ye,Ye){var Et=this.data;pe.font=Ye,pe.lineHeight=Et.lineHeight&&isFinite(Et.lineHeight)?Et.lineHeight:Ye.common.lineHeight,pe.text=Et.value.toString().replace(He,`
`).replace(Oe," "),pe.width=uA(Et.wrapPixels,Et.wrapCount,Ye.widthFactor),ye.update(p.extend(HA,Et,pe))}}()});function UA(HA){switch(HA){case"back":return h.FrontSide;case"double":return h.DoubleSide;default:return h.BackSide}}function TA(HA,pe){return new Promise(function(He,Oe){T()(HA,function(ye,Ye){if(ye){u("Error loading font",HA),Oe(ye);return}HA.indexOf("/Roboto-msdf.json")>=0&&(pe=30),pe&&Ye.chars.forEach(function(ct){ct.yoffset+=pe}),He(Ye)})})}function pA(HA){return new Promise(function(pe,He){new h.ImageLoader().load(HA,function(Oe){pe(Oe)},void 0,function(){u("Error loading font image",HA),He(null)})})}function hA(HA,pe,He){var Oe,ye;return ye=new D.shaders[pe].Shader,ye.el=HA,ye.init(He),ye.update(He),Oe=ye.material,Oe.transparent=He.transparent,{material:Oe,shader:ye}}function uA(HA,pe,He){return HA||(.5+pe)*He}function lA(HA){var pe=0,He=0,Oe=0;return HA.chars.forEach(function(ye){pe+=ye.xadvance,ye.id>=48&&ye.id<=57&&(Oe++,He+=ye.xadvance)}),Oe?He/Oe:pe/HA.chars.length}function NA(){var HA=this.cache={};this.get=function(pe,He){return pe in HA||(HA[pe]=He()),HA[pe]}}},"./src/components/tracked-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>T});var s=d("./src/core/component.js"),z=d("./src/utils/tracked-controls.js"),_={AXISMOVE:"axismove",BUTTONCHANGED:"buttonchanged",BUTTONDOWN:"buttondown",BUTTONUP:"buttonup",TOUCHSTART:"touchstart",TOUCHEND:"touchend"},T=(0,s.registerComponent)("tracked-controls",{schema:{id:{type:"string",default:""},controller:{default:-1},autoHide:{default:!0},hand:{type:"string",default:""},handTrackingEnabled:{default:!1},iterateControllerProfiles:{default:!1}},init:function(){this.buttonEventDetails={},this.buttonStates=this.el.components["tracked-controls"].buttonStates={},this.axis=this.el.components["tracked-controls"].axis=[0,0,0],this.changedAxes=[],this.axisMoveEventDetail={axis:this.axis,changed:this.changedAxes},this.updateController=this.updateController.bind(this)},update:function(){this.updateController()},play:function(){var v=this.el.sceneEl;this.updateController(),v.addEventListener("controllersupdated",this.updateController)},pause:function(){var v=this.el.sceneEl;v.removeEventListener("controllersupdated",this.updateController)},isControllerPresent:function(v){return!(!this.controller||this.controller.gamepad||v.inputSource.handedness!=="none"&&v.inputSource.handedness!==this.data.hand)},updateController:function(){this.controller=z.findMatchingControllerWebXR(this.system.controllers,this.data.id,this.data.hand,this.data.controller,this.data.iterateControllerProfiles,this.data.handTrackingEnabled),this.el.components["tracked-controls"].controller=this.controller},tick:function(){var v=this.el.sceneEl,D=this.controller,h=v.frame;this.data.autoHide&&(this.el.object3D.visible=!!D),!(!D||!v.frame||!this.system.referenceSpace)&&(D.hand||(this.pose=h.getPose(D.gripSpace,this.system.referenceSpace),this.updatePose(),this.updateButtons()))},updatePose:function(){var v=this.el.object3D,D=this.pose;D&&(v.matrix.elements=D.transform.matrix,v.matrix.decompose(v.position,v.rotation,v.scale))},updateButtons:function(){var v,D,h=this.controller,p;if(!(!h||!h.gamepad)){for(p=h.gamepad,D=0;D<p.buttons.length;++D)this.buttonStates[D]||(this.buttonStates[D]={pressed:!1,touched:!1,value:0}),this.buttonEventDetails[D]||(this.buttonEventDetails[D]={id:D,state:this.buttonStates[D]}),v=p.buttons[D],this.handleButton(D,v);this.handleAxes()}},handleButton:function(v,D){var h;return h=this.handlePress(v,D)|this.handleTouch(v,D)|this.handleValue(v,D),h?(this.el.emit(_.BUTTONCHANGED,this.buttonEventDetails[v],!1),!0):!1},handleAxes:function(){var v=!1,D=this.controller.gamepad.axes,h,p=this.axis,m=this.changedAxes;for(this.changedAxes.splice(0,this.changedAxes.length),h=0;h<D.length;++h)m.push(p[h]!==D[h]),m[h]&&(v=!0);if(!v)return!1;for(this.axis.splice(0,this.axis.length),h=0;h<D.length;h++)this.axis.push(D[h]);return this.el.emit(_.AXISMOVE,this.axisMoveEventDetail,!1),!0},handlePress:function(v,D){var h,p=this.buttonStates[v];return D.pressed===p.pressed?!1:(h=D.pressed?_.BUTTONDOWN:_.BUTTONUP,this.el.emit(h,this.buttonEventDetails[v],!1),p.pressed=D.pressed,!0)},handleTouch:function(v,D){var h,p=this.buttonStates[v];return D.touched===p.touched?!1:(h=D.touched?_.TOUCHSTART:_.TOUCHEND,this.el.emit(h,this.buttonEventDetails[v],!1),p.touched=D.touched,!0)},handleValue:function(v,D){var h=this.buttonStates[v];return D.value===h.value?!1:(h.value=D.value,!0)}})},"./src/components/valve-index-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>u});var s=d("./src/core/component.js"),z=d("./node_modules/three/build/three.core.js"),_=d("./src/constants/index.js"),T=d("./src/utils/tracked-controls.js"),v=_.AFRAME_CDN_ROOT+"controllers/valve/index/valve-index-",D={left:v+"left.glb",right:v+"right.glb"},h="valve",p={left:{x:0,y:-.05,z:.06},right:{x:0,y:-.05,z:.06}},m={left:{_x:Math.PI/3,_y:0,_z:0,_order:"XYZ"},right:{_x:Math.PI/3,_y:0,_z:0,_order:"XYZ"}},u=(0,s.registerComponent)("valve-index-controls",{schema:{hand:{default:"left"},buttonColor:{type:"color",default:"#FAFAFA"},buttonHighlightColor:{type:"color",default:"#22D1EE"},model:{default:!0}},after:["tracked-controls"],mapping:{axes:{trackpad:[0,1],thumbstick:[2,3]},buttons:["trigger","grip","trackpad","thumbstick","abutton"]},init:function(){var l=this;this.controllerPresent=!1,this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(R){(0,T.onButtonEvent)(R.detail.id,"down",l)},this.onButtonUp=function(R){(0,T.onButtonEvent)(R.detail.id,"up",l)},this.onButtonTouchEnd=function(R){(0,T.onButtonEvent)(R.detail.id,"touchend",l)},this.onButtonTouchStart=function(R){(0,T.onButtonEvent)(R.detail.id,"touchstart",l)},this.previousButtonValues={},this.bindMethods()},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},addEventListeners:function(){var l=this.el;l.addEventListener("buttonchanged",this.onButtonChanged),l.addEventListener("buttondown",this.onButtonDown),l.addEventListener("buttonup",this.onButtonUp),l.addEventListener("touchend",this.onButtonTouchEnd),l.addEventListener("touchstart",this.onButtonTouchStart),l.addEventListener("model-loaded",this.onModelLoaded),l.addEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var l=this.el;l.removeEventListener("buttonchanged",this.onButtonChanged),l.removeEventListener("buttondown",this.onButtonDown),l.removeEventListener("buttonup",this.onButtonUp),l.removeEventListener("touchend",this.onButtonTouchEnd),l.removeEventListener("touchstart",this.onButtonTouchStart),l.removeEventListener("model-loaded",this.onModelLoaded),l.removeEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var l=this.data,R=l.hand==="right"?0:l.hand==="left"?1:2;(0,T.checkControllerPresentAndSetup)(this,h,{index:R,iterateControllerProfiles:!0,hand:l.hand})},injectTrackedControls:function(){var l=this.el,R=this.data;l.setAttribute("tracked-controls",{idPrefix:h,controller:R.hand==="right"?1:R.hand==="left"?0:2,hand:R.hand}),this.loadModel()},loadModel:function(){var l=this.data;l.model&&this.el.setAttribute("gltf-model",""+D[l.hand])},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(l){var R=this.mapping.buttons[l.detail.id],N=this.buttonMeshes,Y;R&&(R==="trigger"&&(Y=l.detail.state.value,N&&N.trigger&&(N.trigger.rotation.x=this.triggerOriginalRotationX-Y*(Math.PI/40))),this.el.emit(R+"changed",l.detail.state))},onModelLoaded:function(l){var R,N=l.detail.model,Y=this;l.target!==this.el||!this.data.model||(R=this.buttonMeshes={},R.grip={left:N.getObjectByName("leftgrip"),right:N.getObjectByName("rightgrip")},R.menu=N.getObjectByName("menubutton"),R.system=N.getObjectByName("systembutton"),R.trackpad=N.getObjectByName("touchpad"),R.trigger=N.getObjectByName("trigger"),this.triggerOriginalRotationX=R.trigger.rotation.x,Object.keys(R).forEach(function(G){Y.setButtonColor(G,Y.data.buttonColor)}),N.position.copy(m[this.data.hand]),N.rotation.copy(p[this.data.hand]),this.el.emit("controllermodelready",{name:"valve-index-controls",model:this.data.model,rayOrigin:new z.Vector3(0,0,0)}))},onAxisMoved:function(l){(0,T.emitIfAxesChanged)(this,this.mapping.axes,l)},updateModel:function(l,R){var N,Y;this.data.model&&(Y=R.indexOf("touch")!==-1,!Y&&(N=R==="up"?this.data.buttonColor:this.data.buttonHighlightColor,this.setButtonColor(l,N)))},setButtonColor:function(l,R){}})},"./src/components/visible.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>z});var s=d("./src/core/component.js"),z=(0,s.registerComponent)("visible",{schema:{default:!0},update:function(){this.el.object3D.visible=this.data}})},"./src/components/vive-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>p});var s=d("./src/core/component.js"),z=d("./src/constants/index.js"),_=d("./src/utils/tracked-controls.js"),T=z.AFRAME_CDN_ROOT+"controllers/vive/vr_controller_vive.obj",v=z.AFRAME_CDN_ROOT+"controllers/vive/vr_controller_vive.mtl",D="htc-vive",h={axes:{touchpad:[0,1]},buttons:["trigger","grip","touchpad","none"]},p=(0,s.registerComponent)("vive-controls",{schema:{hand:{default:"left"},buttonColor:{type:"color",default:"#FAFAFA"},buttonHighlightColor:{type:"color",default:"#22D1EE"},model:{default:!0}},after:["tracked-controls"],mapping:h,init:function(){var m=this;this.controllerPresent=!1,this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(u){(0,_.onButtonEvent)(u.detail.id,"down",m)},this.onButtonUp=function(u){(0,_.onButtonEvent)(u.detail.id,"up",m)},this.onButtonTouchEnd=function(u){(0,_.onButtonEvent)(u.detail.id,"touchend",m)},this.onButtonTouchStart=function(u){(0,_.onButtonEvent)(u.detail.id,"touchstart",m)},this.previousButtonValues={},this.bindMethods()},update:function(){var m=this.data;this.controllerIndex=m.hand==="right"?0:m.hand==="left"?1:2},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},addEventListeners:function(){var m=this.el;m.addEventListener("buttonchanged",this.onButtonChanged),m.addEventListener("buttondown",this.onButtonDown),m.addEventListener("buttonup",this.onButtonUp),m.addEventListener("touchend",this.onButtonTouchEnd),m.addEventListener("touchstart",this.onButtonTouchStart),m.addEventListener("model-loaded",this.onModelLoaded),m.addEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!0},removeEventListeners:function(){var m=this.el;m.removeEventListener("buttonchanged",this.onButtonChanged),m.removeEventListener("buttondown",this.onButtonDown),m.removeEventListener("buttonup",this.onButtonUp),m.removeEventListener("touchend",this.onButtonTouchEnd),m.removeEventListener("touchstart",this.onButtonTouchStart),m.removeEventListener("model-loaded",this.onModelLoaded),m.removeEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!1},checkIfControllerPresent:function(){var m=this.data;(0,_.checkControllerPresentAndSetup)(this,D,{index:this.controllerIndex,hand:m.hand})},injectTrackedControls:function(){var m=this.el,u=this.data;m.setAttribute("tracked-controls",{idPrefix:D,hand:u.hand,controller:this.controllerIndex}),this.data.model&&this.el.setAttribute("obj-model",{obj:T,mtl:v})},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onButtonChanged:function(m){var u=this.mapping.buttons[m.detail.id],l=this.buttonMeshes,R;u&&(u==="trigger"&&(R=m.detail.state.value,l&&l.trigger&&(l.trigger.rotation.x=-R*(Math.PI/12))),this.el.emit(u+"changed",m.detail.state))},onModelLoaded:function(m){var u,l=m.detail.model,R=this;m.target!==this.el||!this.data.model||(u=this.buttonMeshes={},u.grip={left:l.getObjectByName("leftgrip"),right:l.getObjectByName("rightgrip")},u.menu=l.getObjectByName("menubutton"),u.system=l.getObjectByName("systembutton"),u.trackpad=l.getObjectByName("touchpad"),u.touchpad=l.getObjectByName("touchpad"),u.trigger=l.getObjectByName("trigger"),Object.keys(u).forEach(function(N){R.setButtonColor(N,R.data.buttonColor)}),l.position.set(0,-.015,.04))},onAxisMoved:function(m){(0,_.emitIfAxesChanged)(this,this.mapping.axes,m)},updateModel:function(m,u){var l,R;this.data.model&&(R=u.indexOf("touch")!==-1,!R&&(l=u==="up"?this.data.buttonColor:this.data.buttonHighlightColor,this.setButtonColor(m,l)))},setButtonColor:function(m,u){var l=this.buttonMeshes;if(l){if(m==="grip"){l.grip.left.material.color.set(u),l.grip.right.material.color.set(u);return}l[m].material.color.set(u)}}})},"./src/components/vive-focus-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>h});var s=d("./src/core/component.js"),z=d("./src/constants/index.js"),_=d("./src/utils/tracked-controls.js"),T=z.AFRAME_CDN_ROOT+"controllers/vive/focus-controller/focus-controller.gltf",v="htc-vive-focus",D={axes:{touchpad:[0,1]},buttons:["trigger","none","touchpad","none","menu"]},h=(0,s.registerComponent)("vive-focus-controls",{schema:{hand:{default:""},buttonTouchedColor:{type:"color",default:"#BBBBBB"},buttonHighlightColor:{type:"color",default:"#7A7A7A"},model:{default:!0}},after:["tracked-controls"],mapping:D,bindMethods:function(){this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.removeControllersUpdateListener=this.removeControllersUpdateListener.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},init:function(){var p=this;this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(m){(0,_.onButtonEvent)(m.detail.id,"down",p)},this.onButtonUp=function(m){(0,_.onButtonEvent)(m.detail.id,"up",p)},this.onButtonTouchStart=function(m){(0,_.onButtonEvent)(m.detail.id,"touchstart",p)},this.onButtonTouchEnd=function(m){(0,_.onButtonEvent)(m.detail.id,"touchend",p)},this.controllerPresent=!1,this.bindMethods()},addEventListeners:function(){var p=this.el;p.addEventListener("buttonchanged",this.onButtonChanged),p.addEventListener("buttondown",this.onButtonDown),p.addEventListener("buttonup",this.onButtonUp),p.addEventListener("touchstart",this.onButtonTouchStart),p.addEventListener("touchend",this.onButtonTouchEnd),p.addEventListener("model-loaded",this.onModelLoaded),p.addEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!0,this.addControllersUpdateListener()},removeEventListeners:function(){var p=this.el;p.removeEventListener("buttonchanged",this.onButtonChanged),p.removeEventListener("buttondown",this.onButtonDown),p.removeEventListener("buttonup",this.onButtonUp),p.removeEventListener("touchstart",this.onButtonTouchStart),p.removeEventListener("touchend",this.onButtonTouchEnd),p.removeEventListener("model-loaded",this.onModelLoaded),p.removeEventListener("axismove",this.onAxisMoved),this.controllerEventsActive=!1,this.removeControllersUpdateListener()},checkIfControllerPresent:function(){(0,_.checkControllerPresentAndSetup)(this,v,this.data.hand?{hand:this.data.hand}:{})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},injectTrackedControls:function(){var p=this.el;p.setAttribute("tracked-controls",{idPrefix:v}),this.data.model&&this.el.setAttribute("gltf-model",T)},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onModelLoaded:function(p){var m=p.detail.model,u;p.target!==this.el||!this.data.model||(u=this.buttonMeshes={},u.trigger=m.getObjectByName("BumperKey"),u.triggerPressed=m.getObjectByName("BumperKey_Press"),u.triggerPressed&&(u.triggerPressed.visible=!1),u.touchpad=m.getObjectByName("TouchPad"),u.touchpadPressed=m.getObjectByName("TouchPad_Press"),u.trackpad=m.getObjectByName("TouchPad"),u.trackpadPressed=m.getObjectByName("TouchPad_Press"),u.trackpadPressed&&(u.trackpadPressed.visible=!1))},onButtonChanged:function(p){var m=this.mapping.buttons[p.detail.id];m&&this.el.emit(m+"changed",p.detail.state)},onAxisMoved:function(p){(0,_.emitIfAxesChanged)(this,this.mapping.axes,p)},updateModel:function(p,m){this.data.model&&this.updateButtonModel(p,m)},updateButtonModel:function(p,m){var u=this.buttonMeshes,l=p+"Pressed";if(!(!u||!u[p]||!u[l])){var R;switch(m){case"down":R=this.data.buttonHighlightColor;break;case"touchstart":R=this.data.buttonTouchedColor;break}R&&u[l].material.color.set(R),u[l].visible=!!R,u[p].visible=!R}}})},"./src/components/wasd-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>m});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/constants/keyboardevent.js"),_=d("./src/core/component.js"),T=d("./src/utils/index.js"),v=T.shouldCaptureKeyEvent,D=1e-5,h=.2,p=["KeyW","KeyA","KeyS","KeyD","ArrowUp","ArrowLeft","ArrowRight","ArrowDown"],m=(0,_.registerComponent)("wasd-controls",{schema:{acceleration:{default:65},adAxis:{default:"x",oneOf:["x","y","z"]},adEnabled:{default:!0},adInverted:{default:!1},enabled:{default:!0},fly:{default:!1},wsAxis:{default:"z",oneOf:["x","y","z"]},wsEnabled:{default:!0},wsInverted:{default:!1}},after:["look-controls"],init:function(){this.keys={},this.easing=1.1,this.velocity=new s.Vector3,this.onBlur=this.onBlur.bind(this),this.onContextMenu=this.onContextMenu.bind(this),this.onFocus=this.onFocus.bind(this),this.onKeyDown=this.onKeyDown.bind(this),this.onKeyUp=this.onKeyUp.bind(this),this.onVisibilityChange=this.onVisibilityChange.bind(this),this.attachVisibilityEventListeners()},tick:function(l,R){var N=this.data,Y=this.el,G=this.velocity;!G[N.adAxis]&&!G[N.wsAxis]&&u(this.keys)||(R=R/1e3,this.updateVelocity(R),!(!G[N.adAxis]&&!G[N.wsAxis])&&Y.object3D.position.add(this.getMovementVector(R)))},update:function(l){l.adAxis!==this.data.adAxis&&(this.velocity[l.adAxis]=0),l.wsAxis!==this.data.wsAxis&&(this.velocity[l.wsAxis]=0)},remove:function(){this.removeKeyEventListeners(),this.removeVisibilityEventListeners()},play:function(){this.attachKeyEventListeners()},pause:function(){this.keys={},this.removeKeyEventListeners()},updateVelocity:function(l){var R,N,Y,G=this.data,x=this.keys,U=this.velocity,j,Z;if(N=G.adAxis,j=G.wsAxis,l>h){U[N]=0,U[j]=0;return}var CA=Math.pow(1/this.easing,l*60);U[N]!==0&&(U[N]=U[N]*CA),U[j]!==0&&(U[j]=U[j]*CA),Math.abs(U[N])<D&&(U[N]=0),Math.abs(U[j])<D&&(U[j]=0),G.enabled&&(R=G.acceleration,G.adEnabled&&(Y=G.adInverted?-1:1,(x.KeyA||x.ArrowLeft)&&(U[N]-=Y*R*l),(x.KeyD||x.ArrowRight)&&(U[N]+=Y*R*l)),G.wsEnabled&&(Z=G.wsInverted?-1:1,(x.KeyW||x.ArrowUp)&&(U[j]-=Z*R*l),(x.KeyS||x.ArrowDown)&&(U[j]+=Z*R*l)))},getMovementVector:function(){var l=new s.Vector3(0,0,0),R=new s.Euler(0,0,0,"YXZ");return function(N){var Y=this.el.getAttribute("rotation"),G=this.velocity,x;return l.copy(G),l.multiplyScalar(N),Y&&(x=this.data.fly?Y.x:0,R.set(s.MathUtils.degToRad(x),s.MathUtils.degToRad(Y.y),0),l.applyEuler(R)),l}}(),attachVisibilityEventListeners:function(){window.oncontextmenu=this.onContextMenu,window.addEventListener("blur",this.onBlur),window.addEventListener("focus",this.onFocus),document.addEventListener("visibilitychange",this.onVisibilityChange)},removeVisibilityEventListeners:function(){window.removeEventListener("blur",this.onBlur),window.removeEventListener("focus",this.onFocus),document.removeEventListener("visibilitychange",this.onVisibilityChange)},attachKeyEventListeners:function(){window.addEventListener("keydown",this.onKeyDown),window.addEventListener("keyup",this.onKeyUp)},removeKeyEventListeners:function(){window.removeEventListener("keydown",this.onKeyDown),window.removeEventListener("keyup",this.onKeyUp)},onContextMenu:function(){for(var l=Object.keys(this.keys),R=0;R<l.length;R++)delete this.keys[l[R]]},onBlur:function(){this.pause()},onFocus:function(){this.play()},onVisibilityChange:function(){document.hidden?this.onBlur():this.onFocus()},onKeyDown:function(l){var R;v(l)&&(R=l.code||z.KEYCODE_TO_CODE[l.keyCode],p.indexOf(R)!==-1&&(this.keys[R]=!0))},onKeyUp:function(l){var R;R=l.code||z.KEYCODE_TO_CODE[l.keyCode],delete this.keys[R]}});function u(l){var R;for(R in l)return!1;return!0}},"./src/components/windows-motion-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>R});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T=d("./src/constants/index.js"),v=d("./src/utils/tracked-controls.js"),D=_.debug("components:windows-motion-controls:debug"),h=_.debug("components:windows-motion-controls:warn"),p=T.AFRAME_CDN_ROOT+"controllers/microsoft/",m={left:"left.glb",right:"right.glb",default:"universal.glb"},u="windows-mixed-reality",l={axes:{touchpad:[0,1],thumbstick:[2,3]},buttons:["trigger","squeeze","touchpad","thumbstick","menu"],axisMeshNames:["TOUCHPAD_TOUCH_X","TOUCHPAD_TOUCH_X","THUMBSTICK_X","THUMBSTICK_Y"],buttonMeshNames:{trigger:"SELECT",menu:"MENU",squeeze:"GRASP",thumbstick:"THUMBSTICK_PRESS",touchpad:"TOUCHPAD_PRESS"},pointingPoseMeshName:"POINTING_POSE"},R=(0,z.registerComponent)("windows-motion-controls",{schema:{hand:{default:T.DEFAULT_HANDEDNESS},pair:{default:0},model:{default:!0}},after:["tracked-controls"],mapping:l,bindMethods:function(){this.onModelError=this.onModelError.bind(this),this.onModelLoaded=this.onModelLoaded.bind(this),this.onControllersUpdate=this.onControllersUpdate.bind(this),this.checkIfControllerPresent=this.checkIfControllerPresent.bind(this),this.onAxisMoved=this.onAxisMoved.bind(this)},init:function(){var N=this,Y=this.el;this.onButtonChanged=this.onButtonChanged.bind(this),this.onButtonDown=function(G){(0,v.onButtonEvent)(G.detail.id,"down",N)},this.onButtonUp=function(G){(0,v.onButtonEvent)(G.detail.id,"up",N)},this.onButtonTouchStart=function(G){(0,v.onButtonEvent)(G.detail.id,"touchstart",N)},this.onButtonTouchEnd=function(G){(0,v.onButtonEvent)(G.detail.id,"touchend",N)},this.onControllerConnected=function(){N.setModelVisibility(!0)},this.onControllerDisconnected=function(){N.setModelVisibility(!1)},this.controllerPresent=!1,this.previousButtonValues={},this.bindMethods(),this.loadedMeshInfo={buttonMeshes:null,axisMeshes:null},this.rayOrigin={origin:new s.Vector3,direction:new s.Vector3(0,0,-1),createdFromMesh:!1},Y.addEventListener("controllerconnected",this.onControllerConnected),Y.addEventListener("controllerdisconnected",this.onControllerDisconnected)},addEventListeners:function(){var N=this.el;N.addEventListener("buttonchanged",this.onButtonChanged),N.addEventListener("buttondown",this.onButtonDown),N.addEventListener("buttonup",this.onButtonUp),N.addEventListener("touchstart",this.onButtonTouchStart),N.addEventListener("touchend",this.onButtonTouchEnd),N.addEventListener("axismove",this.onAxisMoved),N.addEventListener("model-error",this.onModelError),N.addEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!0},removeEventListeners:function(){var N=this.el;N.removeEventListener("buttonchanged",this.onButtonChanged),N.removeEventListener("buttondown",this.onButtonDown),N.removeEventListener("buttonup",this.onButtonUp),N.removeEventListener("touchstart",this.onButtonTouchStart),N.removeEventListener("touchend",this.onButtonTouchEnd),N.removeEventListener("axismove",this.onAxisMoved),N.removeEventListener("model-error",this.onModelError),N.removeEventListener("model-loaded",this.onModelLoaded),this.controllerEventsActive=!1},checkIfControllerPresent:function(){(0,v.checkControllerPresentAndSetup)(this,u,{hand:this.data.hand,index:this.data.pair,iterateControllerProfiles:!0})},play:function(){this.checkIfControllerPresent(),this.addControllersUpdateListener()},pause:function(){this.removeEventListeners(),this.removeControllersUpdateListener()},updateControllerModel:function(){if(!this.data.model||this.rayOrigin.createdFromMesh){this.modelReady();return}var N=this.createControllerModelUrl();this.loadModel(N)},createControllerModelUrl:function(N){var Y="default",G=this.data.hand,x;return x=m[G]||m.default,p+Y+"/"+x},injectTrackedControls:function(){var N=this.data;this.el.setAttribute("tracked-controls",{idPrefix:u,controller:N.pair,hand:N.hand}),this.updateControllerModel()},addControllersUpdateListener:function(){this.el.sceneEl.addEventListener("controllersupdated",this.onControllersUpdate,!1)},removeControllersUpdateListener:function(){this.el.sceneEl.removeEventListener("controllersupdated",this.onControllersUpdate,!1)},onControllersUpdate:function(){this.checkIfControllerPresent()},onModelError:function(N){var Y=this.createControllerModelUrl(!0);N.detail.src!==Y?(h("Failed to load controller model for device, attempting to load default."),this.loadModel(Y)):h("Failed to load default controller model.")},loadModel:function(N){this.el.setAttribute("gltf-model","url("+N+")")},onModelLoaded:function(N){var Y=this.controllerModel=N.detail.model,G=this.loadedMeshInfo,x,U,j,Z;if(N.target!==this.el)return;if(D("Processing model"),G.buttonMeshes={},G.axisMeshes={},Y){for(x=0;x<this.mapping.buttons.length;x++){if(U=this.mapping.buttonMeshNames[this.mapping.buttons[x]],!U){D("Skipping unknown button at index: "+x+" with mapped name: "+this.mapping.buttons[x]);continue}if(j=Y.getObjectByName(U),!j){h("Missing button mesh with name: "+U);continue}Z={index:x,value:CA(j,"VALUE"),pressed:CA(j,"PRESSED"),unpressed:CA(j,"UNPRESSED")},Z.value&&Z.pressed&&Z.unpressed?G.buttonMeshes[this.mapping.buttons[x]]=Z:h("Missing button submesh under mesh with name: "+U+"(VALUE: "+!!Z.value+", PRESSED: "+!!Z.pressed+", UNPRESSED:"+!!Z.unpressed+")")}for(x=0;x<this.mapping.axisMeshNames.length;x++){if(U=this.mapping.axisMeshNames[x],!U){D("Skipping unknown axis at index: "+x);continue}if(j=Y.getObjectByName(U),!j){h("Missing axis mesh with name: "+U);continue}Z={index:x,value:CA(j,"VALUE"),min:CA(j,"MIN"),max:CA(j,"MAX")},Z.value&&Z.min&&Z.max?G.axisMeshes[x]=Z:h("Missing axis submesh under mesh with name: "+U+"(VALUE: "+!!Z.value+", MIN: "+!!Z.min+", MAX:"+!!Z.max+")")}this.calculateRayOriginFromMesh(Y),this.setModelVisibility()}D("Model load complete.");function CA(QA,SA){for(var UA=0,TA=QA.children.length;UA<TA;UA++){var pA=QA.children[UA];if(pA&&pA.name===SA)return pA}}},calculateRayOriginFromMesh:function(){var N=new s.Quaternion;return function(Y){var G;if(this.rayOrigin.origin.set(0,0,0),this.rayOrigin.direction.set(0,0,-1),this.rayOrigin.createdFromMesh=!0,G=Y.getObjectByName(this.mapping.pointingPoseMeshName),G){var x=Y.parent;x&&(Y.parent=null,Y.updateMatrixWorld(!0),Y.parent=x),G.getWorldPosition(this.rayOrigin.origin),G.getWorldQuaternion(N),this.rayOrigin.direction.applyQuaternion(N),x&&Y.updateMatrixWorld(!0)}else D("Mesh does not contain pointing origin data, defaulting to none.");this.modelReady()}}(),lerpAxisTransform:function(){var N=new s.Quaternion;return function(Y,G){var x=this.loadedMeshInfo.axisMeshes[Y];if(x){var U=x.min,j=x.max,Z=x.value,CA=G*.5+.5;Z.setRotationFromQuaternion(N.copy(U.quaternion).slerp(j.quaternion,CA)),Z.position.lerpVectors(U.position,j.position,CA)}}}(),lerpButtonTransform:function(){var N=new s.Quaternion;return function(Y,G){var x=this.loadedMeshInfo.buttonMeshes[Y];if(x){var U=x.unpressed,j=x.pressed,Z=x.value;Z.setRotationFromQuaternion(N.copy(U.quaternion).slerp(j.quaternion,G)),Z.position.lerpVectors(U.position,j.position,G)}}}(),modelReady:function(){this.el.emit("controllermodelready",{name:"windows-motion-controls",model:this.data.model,rayOrigin:this.rayOrigin})},onButtonChanged:function(N){var Y=this.mapping.buttons[N.detail.id];Y&&(this.loadedMeshInfo&&this.loadedMeshInfo.buttonMeshes&&this.lerpButtonTransform(Y,N.detail.state.value),this.el.emit(Y+"changed",N.detail.state))},onAxisMoved:function(N){var Y=this.mapping.axisMeshNames.length;if(this.loadedMeshInfo&&this.loadedMeshInfo.axisMeshes)for(var G=0;G<Y;G++)this.lerpAxisTransform(G,N.detail.axis[G]||0);(0,v.emitIfAxesChanged)(this,this.mapping.axes,N)},setModelVisibility:function(N){var Y=this.el.getObject3D("mesh");this.controllerPresent&&(N=N!==void 0?N:this.modelVisible,this.modelVisible=N,Y&&(Y.visible=N))}})},"./src/constants/index.js":(_A,O,d)=>{d.r(O),d.d(O,{AFRAME_CDN_ROOT:()=>s,AFRAME_INJECTED:()=>z,DEFAULT_CAMERA_HEIGHT:()=>_,DEFAULT_HANDEDNESS:()=>T});var s=window.AFRAME_CDN_ROOT||"https://cdn.aframe.io/",z="aframe-injected",_=1.6,T="right"},"./src/constants/keyboardevent.js":(_A,O,d)=>{d.r(O),d.d(O,{KEYCODE_TO_CODE:()=>s});var s={38:"ArrowUp",37:"ArrowLeft",40:"ArrowDown",39:"ArrowRight",87:"KeyW",65:"KeyA",83:"KeyS",68:"KeyD"}},"./src/core/a-assets.js":(_A,O,d)=>{d.r(O),d.d(O,{getFileNameFromURL:()=>N,inferResponseType:()=>R});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/a-node.js"),_=d("./src/utils/index.js"),T=new s.FileLoader,v=(0,_.debug)("core:a-assets:warn");class D extends z.ANode{constructor(){super(),this.isAssets=!0,this.fileLoader=T,this.timeout=null}doConnectedCallback(){var G=this,x,U=[],j,Z,CA,QA,SA,UA;if(super.doConnectedCallback(),!this.parentNode.isScene)throw new Error("<a-assets> must be a child of a <a-scene>.");for(QA=this.querySelectorAll("img"),x=0;x<QA.length;x++)CA=m(QA[x]),U.push(new Promise(function(TA,pA){if(s.Cache.add(QA[x].getAttribute("src"),CA),CA.complete){TA();return}CA.onload=TA,CA.onerror=pA}));for(Z=this.querySelectorAll("audio, video"),x=0;x<Z.length;x++)j=m(Z[x]),!j.src&&!j.srcObject&&v("Audio/video asset has neither `src` nor `srcObject` attributes."),U.push(p(j));UA=this.getChildren(),UA.forEach(function(TA){!TA.isAssetItem||!TA.hasAttribute("src")||U.push(new Promise(function(hA,uA){if(TA.hasLoaded)return hA();TA.addEventListener("loaded",hA),TA.addEventListener("error",uA)}))}),Promise.allSettled(U).then(function(){G.timeout!==null&&G.load()}),SA=parseInt(this.getAttribute("timeout"),10)||3e3,this.timeout=setTimeout(function(){G.hasLoaded||(v("Asset loading timed out in",SA,"ms"),G.timeout=null,G.emit("timeout"),G.load())},SA)}disconnectedCallback(){super.disconnectedCallback(),this.timeout&&clearTimeout(this.timeout)}load(){super.load.call(this,null,function(){return!1})}}customElements.define("a-assets",D);class h extends z.ANode{constructor(){super(),this.data=null,this.isAssetItem=!0}connectedCallback(){var G=this,x=this.getAttribute("src");T.setResponseType(this.getAttribute("response-type")||R(x)),T.load(x,function(j){G.data=j,z.ANode.prototype.load.call(G)},function(j){G.emit("progress",{loadedBytes:j.loaded,totalBytes:j.total,xhr:j})},function(j){G.emit("error",{xhr:j},!1)})}}customElements.define("a-asset-item",h);function p(Y){if(!(!Y.hasAttribute("autoplay")&&Y.getAttribute("preload")!=="auto"))return new Promise(function(G,x){if(Y.readyState===4)return G();if(Y.error)return x();Y.addEventListener("loadeddata",U,!1),Y.addEventListener("progress",U,!1),Y.addEventListener("error",x,!1);function U(){for(var j=0,Z=0;Z<Y.buffered.length;Z++)j+=Y.buffered.end(Z)-Y.buffered.start(Z);j>=Y.duration&&(Y.tagName==="VIDEO"&&s.Cache.add(Y.getAttribute("src"),Y),G())}})}function m(Y){var G=u(Y);return G.tagName&&G.tagName.toLowerCase()==="video"&&(G.setAttribute("playsinline",""),G.setAttribute("webkit-playsinline","")),G!==Y&&(Y.parentNode.appendChild(G),Y.parentNode.removeChild(Y)),G}function u(Y){var G,x;return Y.hasAttribute("crossorigin")||(x=Y.getAttribute("src"),x!==null&&(x.indexOf("://")===-1||l(x)===window.location.host))?Y:(v('Cross-origin element (e.g., <img>) was requested without `crossorigin` set. A-Frame will re-request the asset with `crossorigin` attribute set. Please set `crossorigin` on the element (e.g., <img crossorigin="anonymous">)',x),Y.crossOrigin="anonymous",G=Y.cloneNode(!0),G)}function l(Y){var G=Y.indexOf("://")>-1?Y.split("/")[2]:Y.split("/")[0];return G.substring(0,G.indexOf(":"))}function R(Y){var G=N(Y),x=G.lastIndexOf(".");if(x>=0){var U=G.slice(x,Y.search(/\?|#|$/));if(U===".glb")return"arraybuffer"}return"text"}function N(Y){var G=document.createElement("a");G.href=Y;var x=G.search.replace(/^\?/,""),U=Y.replace(x,"").replace("?","");return U.substring(U.lastIndexOf("/")+1)}},"./src/core/a-cubemap.js":(_A,O,d)=>{d.r(O);var s=d("./src/utils/index.js"),z=(0,s.debug)("core:cubemap:warn");class _ extends HTMLElement{constructor(v){return v=super(v),v}onReadyStateChange(){document.readyState==="complete"&&this.doConnectedCallback()}connectedCallback(){if(document.readyState!=="complete"){document.addEventListener("readystatechange",this.onReadyStateChange.bind(this));return}_.prototype.doConnectedCallback.call(this)}doConnectedCallback(){this.srcs=this.validate()}validate(){var v=this.querySelectorAll("[src]"),D,h=[];if(v.length===6){for(D=0;D<v.length;D++)v[D].tagName==="IMG"?h.push(v[D]):h.push(v[D].getAttribute("src"));return h}z("<a-cubemap> did not contain exactly six elements each with a `src` attribute.")}}customElements.define("a-cubemap",_)},"./src/core/a-entity.js":(_A,O,d)=>{d.r(O),d.d(O,{AEntity:()=>u});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/a-node.js"),_=d("./src/core/component.js"),T=d("./src/utils/index.js"),v=T.debug("core:a-entity:debug"),D=T.debug("core:a-entity:warn"),h="__",p=["position","rotation","scale","visible"],m={once:!0};class u extends z.ANode{constructor(){super(),this.components={},this.initializingComponents={},this.componentsToUpdate={},this.isEntity=!0,this.isPlaying=!1,this.object3D=new s.Group,this.object3D.rotation.order="YXZ",this.object3D.el=this,this.object3DMap={},this.parentEl=null,this.rotationObj={},this.states=[]}attributeChangedCallback(U,j,Z){var CA=this.components[U];if(super.attributeChangedCallback(),CA&&CA.justInitialized&&Z===""){delete CA.justInitialized;return}!CA&&Z===null||this.setEntityAttribute(U,j,Z)}doConnectedCallback(){var U=this,j,Z;if(super.doConnectedCallback(),Z=this.sceneEl,this.addToParent(),!this.isScene){if(!Z){this.load();return}if(j=Z.querySelector("a-assets"),j&&!j.hasLoaded){j.addEventListener("loaded",function(){U.load()});return}this.load()}}disconnectedCallback(){var U;if(this.parentEl){for(U in this.components)this.removeComponent(U,!1);this.isScene||(this.removeFromParent(),super.disconnectedCallback(),this.object3D.el=null)}}getObject3D(U){return this.object3DMap[U]}setObject3D(U,j){var Z,CA=this;if(!(j instanceof s.Object3D))throw new Error("`Entity.setObject3D` was called with an object that was not an instance of THREE.Object3D.");Z=this.getObject3D(U),Z&&this.object3D.remove(Z),j.el=this,j.children.length&&j.traverse(function(SA){SA.el=CA}),this.object3D.add(j),this.object3DMap[U]=j,this.emit("object3dset",{object:j,type:U})}removeObject3D(U){var j=this.getObject3D(U);if(!j){D("Tried to remove `Object3D` of type:",U,"which was not defined.");return}this.object3D.remove(j),delete this.object3DMap[U],this.emit("object3dremove",{type:U})}getOrCreateObject3D(U,j){var Z=this.getObject3D(U);return!Z&&j&&(Z=new j,this.setObject3D(U,Z)),D("`getOrCreateObject3D` has been deprecated. Use `setObject3D()` and `object3dset` event instead."),Z}add(U){if(!U.object3D)throw new Error("Trying to add an element that doesn't have an `object3D`");this.object3D.add(U.object3D),this.emit("child-attached",{el:U})}addToParent(){var U=this.parentEl=this.parentNode;!U||!U.add||this.attachedToParent||(U.add(this),this.attachedToParent=!0)}removeFromParent(){var U=this.parentEl;this.parentEl.remove(this),this.attachedToParent=!1,this.parentEl=null,U.emit("child-detached",{el:this})}load(){var U=this;this.hasLoaded||!this.parentEl||super.load.call(this,function(){U.parentEl&&(U.updateComponents(),(U.isScene||U.parentEl.isPlaying)&&U.play())})}remove(U){U?this.object3D.remove(U.object3D):this.parentNode.removeChild(this)}getChildEntities(){for(var U=this.children,j=[],Z=0;Z<U.length;Z++){var CA=U[Z];CA instanceof u&&j.push(CA)}return j}initComponent(U,j,Z){var CA,QA,SA,UA,TA;SA=T.split(U,h),UA=SA[0],QA=SA.length>2?SA.slice(1).join("__"):SA[1],_.components[UA]&&(TA=l(this,U)||j!==void 0,!(!TA&&!Z)&&(U in this.components||(this.initComponentDependencies(UA),CA=new _.components[UA].Component(this,j,QA),this.isPlaying&&CA.play(),this.hasAttribute(U)||(CA.justInitialized=!0,window.HTMLElement.prototype.setAttribute.call(this,U,"")),v("Component initialized: %s",U))))}initComponentDependencies(U){var j=this,Z=_.components[U],CA,QA;if(Z&&(CA=_.components[U].dependencies,!!CA))for(QA=0;QA<CA.length;QA++)j.initComponent(CA[QA],window.HTMLElement.prototype.getAttribute.call(j,CA[QA])||void 0,!0)}removeComponent(U,j){var Z;if(Z=this.components[U],!!Z){if(!Z.initialized){this.addEventListener("componentinitialized",function CA(QA){QA.detail.name===U&&(this.removeComponent(U,j),this.removeEventListener("componentinitialized",CA))});return}Z.pause(),Z.remove(),j&&(Z.destroy(),delete this.components[U],this.hasAttribute(U)&&window.HTMLElement.prototype.removeAttribute.call(this,U)),this.emit("componentremoved",Z.evtDetail,!1)}}updateComponents(){var U,j,Z,CA,QA=this.componentsToUpdate;if(!(!this.hasLoaded&&!this.isLoading)){for(Z=0;Z<this.mixinEls.length;Z++)for(CA in this.mixinEls[Z].componentCache)Y(CA)&&(QA[CA]=!0);if(this.getExtraComponents){j=this.getExtraComponents();for(CA in j)Y(CA)&&(QA[CA]=!0)}for(Z=0;Z<this.attributes.length;++Z)CA=this.attributes[Z].name,p.indexOf(CA)===-1&&Y(CA)&&(QA[CA]=!0);for(Z=0;Z<p.length;Z++)CA=p[Z],this.hasAttribute(CA)&&this.updateComponent(CA,this.getDOMAttribute(CA));for(CA in QA)U=N(this.getDOMAttribute(CA),j&&j[CA]),this.updateComponent(CA,U),delete QA[CA]}}updateComponent(U,j,Z){var CA=this.components[U];if(CA){if(j===null&&!l(this,U)){this.removeComponent(U,!0);return}CA.updateProperties(j,Z);return}this.initComponent(U,j,!1)}removeAttribute(U,j){var Z=this.components[U];if(Z&&j===void 0&&this.removeComponent(U,!0),Z&&j!==void 0){Z.resetProperty(j);return}U==="mixin"&&this.mixinUpdate(""),window.HTMLElement.prototype.removeAttribute.call(this,U)}play(){var U,j,Z;if(!(this.isPlaying||!this.hasLoaded&&!this.isLoading)){this.isPlaying=!0;for(Z in this.components)this.components[Z].play();for(U=this.getChildEntities(),j=0;j<U.length;j++)U[j].play();this.emit("play")}}pause(){var U,j,Z;if(this.isPlaying){this.isPlaying=!1;for(Z in this.components)this.components[Z].pause();for(U=this.getChildEntities(),j=0;j<U.length;j++)U[j].pause();this.emit("pause")}}setEntityAttribute(U,j,Z){if(_.components[U]||this.components[U]){this.updateComponent(U,Z);return}if(U==="mixin"){if(Z===this.computedMixinStr)return;this.mixinUpdate(Z,j)}}mixinUpdate(U,j,Z){var CA=u.componentsUpdated,QA,SA,UA,TA,pA=this;if(Z||(j=j||this.getAttribute("mixin")),!this.hasLoaded){this.addEventListener("loaded-private",function(){pA.mixinUpdate(U,j,!0)},m);return}for(UA=this.updateMixins(U,j),CA.length=0,TA=0;TA<this.mixinEls.length;TA++)for(QA in this.mixinEls[TA].componentCache)CA.indexOf(QA)===-1&&(this.components[QA]?this.components[QA].handleMixinUpdate():this.initComponent(QA,null),CA.push(QA));for(TA=0;TA<UA.oldMixinIds.length;TA++)if(SA=document.getElementById(UA.oldMixinIds[TA]),!!SA)for(QA in SA.componentCache)CA.indexOf(QA)===-1&&this.components[QA]&&(this.getDOMAttribute(QA)?this.components[QA].handleMixinUpdate():this.removeComponent(QA,!0))}setAttribute(U,j,Z){var CA=u.singlePropUpdate,QA,SA,UA,TA,pA,hA;if(TA=U.indexOf(h),UA=TA>0?U.substring(0,TA):U,!_.components[UA]){U==="mixin"&&this.mixinUpdate(j),super.setAttribute.call(this,U,j);return}if(!this.components[U]&&this.hasAttribute(U)&&this.updateComponent(U,window.HTMLElement.prototype.getAttribute.call(this,U)),typeof Z<"u"&&typeof j=="string"&&j.length>0&&typeof T.styleParser.parse(j)=="string"){for(hA in CA)delete CA[hA];QA=CA,QA[j]=Z,SA=!1}else QA=j,SA=Z===!0;this.updateComponent(U,QA,SA),pA=this.sceneEl&&this.sceneEl.getAttribute("debug"),pA&&this.components[U].flushToDOM()}flushToDOM(U){var j=this.components,Z,CA=this.children,QA,SA;for(SA in j)j[SA].flushToDOM();if(U)for(QA=0;QA<CA.length;++QA)Z=CA[QA],Z.flushToDOM&&Z.flushToDOM(U)}getAttribute(U){var j;return U==="position"?this.object3D.position:U==="rotation"?G(this):U==="scale"?this.object3D.scale:U==="visible"?this.object3D.visible:(j=this.components[U],j?j.data:window.HTMLElement.prototype.getAttribute.call(this,U))}getDOMAttribute(U){var j=this.components[U];return j?j.attrValue:window.HTMLElement.prototype.getAttribute.call(this,U)}addState(U){this.is(U)||(this.states.push(U),this.emit("stateadded",U))}removeState(U){var j=this.states.indexOf(U);j!==-1&&(this.states.splice(j,1),this.emit("stateremoved",U))}is(U){return this.states.indexOf(U)!==-1}inspect(){this.sceneEl.components.inspector.openInspector(this)}destroy(){var U;if(this.parentNode){D("Entity can only be destroyed if detached from scenegraph.");return}for(U in this.components)this.components[U].destroy()}}function l(x,U){return x.components[U]&&x.components[U].attrValue?!0:R(U,x.mixinEls)}function R(x,U){var j,Z=!1;for(j=0;j<U.length&&(Z=U[j].hasAttribute(x),!Z);++j);return Z}function N(x,U){return U?U.constructor===Object?T.extend(U,T.styleParser.parse(x||{})):x||U:x}function Y(x){return x.indexOf(h)!==-1&&(x=T.split(x,h)[0]),!!_.components[x]}function G(x){var U=s.MathUtils.radToDeg,j=x.object3D.rotation,Z=x.rotationObj;return Z.x=U(j.x),Z.y=U(j.y),Z.z=U(j.z),Z}u.componentsUpdated=[],u.singlePropUpdate={},customElements.define("a-entity",u)},"./src/core/a-mixin.js":(_A,O,d)=>{d.r(O);var s=d("./src/core/a-node.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T=d("./src/utils/styleParser.js"),v="__";class D extends s.ANode{constructor(){super(),this.componentCache={},this.rawAttributeCache={},this.isMixin=!0}doConnectedCallback(){super.doConnectedCallback(),this.sceneEl=this.closestScene(),this.id=this.getAttribute("id"),this.cacheAttributes(),this.updateEntities(),this.load()}attributeChangedCallback(p,m,u){super.attributeChangedCallback(),this.cacheAttribute(p,u),this.updateEntities()}setAttribute(p,m){window.HTMLElement.prototype.setAttribute.call(this,p,m),this.cacheAttribute(p,m)}cacheAttribute(p,m){var u,l;l=_.split(p,v)[0],u=z.components[l],m===void 0&&(m=window.HTMLElement.prototype.getAttribute.call(this,p)),this.rawAttributeCache[p]=m,u&&(this.componentCache[p]=this.parseComponentAttrValue(u,m))}parseComponentAttrValue(p,m){var u;return typeof m!="string"?m:(p.isSingleProperty?(u=p.schema.parse(m),typeof u=="string"&&(u=m)):u=T.parse(m),u)}getAttribute(p){return this.componentCache[p]||window.HTMLElement.prototype.getAttribute.call(this,p)}cacheAttributes(){var p=this.attributes,m,u;for(u=0;u<p.length;u++)m=p[u].name,this.cacheAttribute(m)}updateEntities(){var p,m,u;if(this.sceneEl)for(m=this.sceneEl.querySelectorAll("[mixin~="+this.id+"]"),u=0;u<m.length;u++)p=m[u],!(!p.hasLoaded||p.isMixin)&&p.mixinUpdate(this.id)}}customElements.define("a-mixin",D)},"./src/core/a-node.js":(_A,O,d)=>{d.r(O),d.d(O,{ANode:()=>D,knownTags:()=>T});var s=d("./src/utils/index.js"),z=d("./src/core/readyState.js"),_=s.debug("core:a-node:warn"),T={"a-scene":!0,"a-assets":!0,"a-assets-items":!0,"a-cubemap":!0,"a-mixin":!0,"a-node":!0,"a-entity":!0};function v(h){return h.tagName.toLowerCase()in T||h.isANode}class D extends HTMLElement{constructor(){super(),this.computedMixinStr="",this.hasLoaded=!1,this.isANode=!0,this.mixinEls=[]}connectedCallback(){if(!z.canInitializeElements){document.addEventListener("aframeready",this.connectedCallback.bind(this));return}this.doConnectedCallback()}doConnectedCallback(){var p;this.sceneEl=this.closestScene(),this.sceneEl||_("You are attempting to attach <"+this.tagName+"> outside of an A-Frame scene. Append this element to `<a-scene>` instead."),this.hasLoaded=!1,this.emit("nodeready",void 0,!1),this.isMixin||(p=this.getAttribute("mixin"),p&&this.updateMixins(p))}attributeChangedCallback(p,m,u){u!==this.computedMixinStr&&p==="mixin"&&!this.isMixin&&this.updateMixins(u,m)}closestScene(){for(var p=this;p&&!p.isScene;)p=p.parentElement;return p}closest(p){for(var m=this.matches||this.mozMatchesSelector||this.msMatchesSelector||this.oMatchesSelector||this.webkitMatchesSelector,u=this;u&&!m.call(u,p);)u=u.parentElement;return u}disconnectedCallback(){this.hasLoaded=!1}load(p,m){var u,l,R=this;this.hasLoaded||(m=m||v,u=this.getChildren(),l=u.filter(m).map(function(N){return new Promise(function(G,x){if(N.hasLoaded)return G();N.addEventListener("loaded",G),N.addEventListener("error",x)})}),Promise.allSettled(l).then(function(Y){Y.forEach(function(x){x.status==="rejected"&&_("Rendering scene with errors on node: ",x.reason.target)}),R.isLoading=!0,R.setupMutationObserver(),p&&p(),R.isLoading=!1,R.hasLoaded=!0,R.emit("loaded-private",void 0,!1),R.emit("loaded",void 0,!1)}))}setupMutationObserver(){var p=this,m={attributes:!0,attributeOldValue:!0},u=new MutationObserver(function(R){var N;for(N=0;N<R.length;N++)if(R[N].type==="attributes"){var Y=R[N].attributeName,G=window.HTMLElement.prototype.getAttribute.call(p,Y),x=R[N].oldValue;p.attributeChangedCallback(Y,x,G)}});u.observe(this,m)}getChildren(){return Array.prototype.slice.call(this.children,0)}updateMixins(p,m){var u=D.newMixinIdArray,l=D.oldMixinIdArray,R=D.mixinIds,N,Y,G;for(u.length=0,l.length=0,Y=p?s.split(p.trim(),/\s+/):u,G=m?s.split(m.trim(),/\s+/):l,R.newMixinIds=Y,R.oldMixinIds=G,N=0;N<G.length;N++)Y.indexOf(G[N])===-1&&this.unregisterMixin(G[N]);for(this.computedMixinStr="",this.mixinEls.length=0,N=0;N<Y.length;N++)this.registerMixin(Y[N]);return this.computedMixinStr&&(this.computedMixinStr=this.computedMixinStr.trim(),window.HTMLElement.prototype.setAttribute.call(this,"mixin",this.computedMixinStr)),Y.length===0&&window.HTMLElement.prototype.removeAttribute.call(this,"mixin"),R}registerMixin(p){var m,u,l,R=document.getElementById(p);if(!R){_("No mixin was found with id `%s`",p);return}if(l=R.getAttribute("mixin"),l)for(m=s.split(l.trim(),/\s+/),u=0;u<m.length;u++)this.registerMixin(m[u]);this.computedMixinStr=this.computedMixinStr+" "+R.id,this.mixinEls.push(R)}setAttribute(p,m){p==="mixin"&&this.updateMixins(m),window.HTMLElement.prototype.setAttribute.call(this,p,m)}unregisterMixin(p){var m,u=this.mixinEls,l;for(m=0;m<u.length;++m)if(l=u[m],p===l.id){u.splice(m,1);break}}emit(p,m,u,l){var R=D.evtData;u===void 0&&(u=!0),R.bubbles=!!u,R.detail=m,l&&(R=s.extend({},l,R)),this.dispatchEvent(new CustomEvent(p,R))}}D.evtData={},D.newMixinIdArray=[],D.oldMixinIdArray=[],D.mixinIds={},customElements.define("a-node",D)},"./src/core/component.js":(_A,O,d)=>{d.r(O),d.d(O,{Component:()=>Z,components:()=>v,registerComponent:()=>SA,registrationOrderWarnings:()=>QA});var s=d("./src/core/schema.js"),z=d("./src/core/scene/scenes.js"),_=d("./src/core/system.js"),T=d("./src/utils/index.js"),v={},D=s.parseProperty,h=s.process,p=s.isSingleProperty,m=s.stringifyProperties,u=s.stringifyProperty,l=T.styleParser,R=T.debug("core:component:warn"),N=document.currentScript,Y=new RegExp("[A-Z]+"),G={},x=Object.freeze({}),U=[],j={get:function(uA,lA){return uA.getComputedPropertyValue(lA)},set:function(uA,lA,NA){return lA in uA.schema?uA.recomputeProperty(lA,NA):NA!==void 0&&uA.handleUnknownProperty(lA,NA),!0}},Z=function(uA,lA,NA){var HA=this;if(this.sceneOnly&&!uA.isScene)throw new Error("Component `"+this.name+"` can only be applied to <a-scene>");if(NA&&!this.multiple)throw new Error("Trying to initialize multiple components of type `"+this.name+"`. There can only be one component of this type per entity.");this.el=uA,this.id=NA,this.attrName=this.name+(NA?"__"+NA:""),this.evtDetail={id:this.id,name:this.name},this.initialized=!1,this.el.components[this.attrName]=this,this.objectPool=G[this.name];var pe=this.events;this.events={},CA(this,pe),this.attrValue=void 0,this.isObjectBased?(this.data=this.objectPool.use(),T.objectPool.removeUnusedKeys(this.data,this.schema),this.oldData=this.objectPool.use(),T.objectPool.removeUnusedKeys(this.oldData,this.schema),this.attrValueProxy=new Proxy(this,j)):(this.data=void 0,this.oldData=void 0,this.attrValueProxy=void 0),this.deferUnknownPropertyWarnings=!!this.updateSchema,this.throttledEmitComponentChanged=T.throttleLeadingAndTrailing(function(){uA.emit("componentchanged",HA.evtDetail,!1)},200),this.updateProperties(lA,!0)};Z.prototype={schema:{},init:function(){},events:{},update:function(uA){},updateSchema:void 0,tick:void 0,tock:void 0,play:function(){},pause:function(){},remove:function(){},stringify:function(uA){var lA=this.schema;return typeof uA=="string"?uA:this.isSingleProperty?u(uA,lA):(uA=m(uA,lA),l.stringify(uA))},flushToDOM:function(uA){var lA=uA?this.data:this.attrValue;lA!=null&&window.HTMLElement.prototype.setAttribute.call(this.el,this.attrName,this.stringify(lA))},updateProperties:function(uA,lA){var NA=this.el;this.updateData(uA,lA),!(!NA.hasLoaded&&!NA.isLoading)&&(this.initialized?this.callUpdateHandler():this.initComponent())},initComponent:function(){var uA=this.el,lA;uA.initializingComponents[this.name]||(uA.initializingComponents[this.name]=!0,this.init(),this.initialized=!0,delete uA.initializingComponents[this.name],lA=this.isObjectBased?x:void 0,this.dataChanged=!1,this.storeOldData(),this.update(lA),uA.isPlaying&&this.play(),uA.emit("componentinitialized",this.evtDetail,!1))},updateData:function(uA,lA){if(this.isSingleProperty){this.recomputeProperty(void 0,uA);return}lA?(T.objectPool.clearObject(this.attrValue),this.recomputeData(uA),this.schemaChangeRequired=!!this.updateSchema):typeof uA=="string"?l.parse(uA,this.attrValueProxy):T.extend(this.attrValueProxy,uA),this.updateSchemaIfNeeded(uA)},updateSchemaIfNeeded:function(uA){if(this.schemaChangeRequired&&this.updateSchema){U.length=0,this.updateSchema(this.data),T.objectPool.removeUnusedKeys(this.data,this.schema),this.recomputeData(uA),this.schemaChangeRequired=!1;for(var lA in this.attrValue)this.attrValue[lA]!==void 0&&U.indexOf(lA)===-1&&(lA in this.schema||R("Unknown property `"+lA+"` for component `"+this.name+"`."))}for(var NA=0;NA<U.length;NA++)R("Unknown property `"+U[NA]+"` for component `"+this.name+"`.");U.length=0},callUpdateHandler:function(){if(!(!this.isPositionRotationScale&&!this.dataChanged)){this.dataChanged=!1;var uA=this.oldData;this.oldDataInUse=!0,this.update(uA),uA!==this.oldData&&this.objectPool.recycle(uA),this.oldDataInUse=!1,this.storeOldData(),this.throttledEmitComponentChanged()}},handleMixinUpdate:function(){this.recomputeData(),this.updateSchemaIfNeeded(),this.callUpdateHandler()},resetProperty:function(uA){!this.isSingleProperty&&!(uA in this.schema)||(uA?this.attrValue[uA]=void 0:(this.isObjectBased&&this.objectPool.recycle(this.attrValue),this.attrValue=void 0),this.recomputeProperty(uA,void 0),this.updateSchemaIfNeeded(),this.callUpdateHandler())},extendSchema:function(uA){var lA;lA=T.extend({},v[this.name].schema),T.extend(lA,uA),this.schema=h(lA),this.el.emit("schemachanged",this.evtDetail)},getComputedPropertyValue:function(uA){var lA=this.el.mixinEls,NA=this.attrValue&&uA?this.attrValue[uA]:this.attrValue;if(NA!==void 0)return NA;for(var HA=lA.length-1;HA>=0;HA--){var pe=lA[HA].getAttribute(this.attrName);if(!(pe===null||uA&&!(uA in pe)))return uA?pe[uA]:pe}var He=uA?this.schema[uA].default:this.schema.default;return He},recomputeProperty:function(uA,lA){var NA=uA?this.schema[uA]:this.schema;if(lA!=null){this.attrValue===void 0&&this.isObjectBased&&(this.attrValue=this.objectPool.use());var HA=uA?this.attrValue[uA]:this.attrValue;HA=NA.isCacheable?D(lA,NA,HA):lA,typeof HA=="string"&&(HA=lA===""?void 0:lA),uA?this.attrValue[uA]=HA:this.attrValue=HA}this.oldDataInUse&&(this.oldData=this.objectPool.use(),T.objectPool.removeUnusedKeys(this.oldData,this.schema),this.storeOldData(),this.oldDataInUse=!1);var pe=uA?this.oldData[uA]:this.oldData,He=uA?this.data[uA]:this.data,Oe=D(this.getComputedPropertyValue(uA),NA,He);return NA.type==="array"&&!uA&&(Oe=T.clone(Oe)),NA.equals(Oe,pe)||(this.dataChanged=!0,NA.schemaChange&&(this.schemaChangeRequired=!0)),uA?this.data[uA]=Oe:this.data=Oe,Oe},handleUnknownProperty:function(uA,lA){this.attrValue===void 0&&(this.attrValue=this.objectPool.use()),this.attrValue[uA]=lA,this.deferUnknownPropertyWarnings?U.push(uA):this.silenceUnknownPropertyWarnings||R("Unknown property `"+uA+"` for component `"+this.name+"`.")},storeOldData:function(){if(!this.isObjectBased){this.oldData=this.data;return}if(this.isSingleProperty){this.oldData=D(this.data,this.schema,this.oldData);return}var uA;for(uA in this.schema)this.data[uA]!==void 0&&(this.data[uA]&&typeof this.data[uA]=="object"?this.oldData[uA]=D(this.data[uA],this.schema[uA],this.oldData[uA]):this.oldData[uA]=this.data[uA])},recomputeData:function(uA){var lA;if(this.isSingleProperty){this.recomputeProperty(void 0,uA);return}for(lA in this.schema)this.attrValueProxy[lA]=void 0;uA&&typeof uA=="object"?T.extend(this.attrValueProxy,uA):typeof uA=="string"&&l.parse(uA,this.attrValueProxy)},eventsAttach:function(){var uA;this.eventsDetach();for(uA in this.events)this.el.addEventListener(uA,this.events[uA])},eventsDetach:function(){var uA;for(uA in this.events)this.el.removeEventListener(uA,this.events[uA])},destroy:function(){this.objectPool.recycle(this.attrValue),this.objectPool.recycle(this.data),this.objectPool.recycle(this.oldData),this.attrValue=this.data=this.oldData=this.attrValueProxy=void 0}};function CA(uA,lA){var NA;for(NA in lA)uA.events[NA]=lA[NA].bind(uA)}var QA={};function SA(uA,lA){var NA,HA={},pe,He;if(document.currentScript&&document.currentScript!==N&&z.default.forEach(function(Ye){Ye.hasLoaded||document.currentScript.compareDocumentPosition(Ye)!==Node.DOCUMENT_POSITION_FOLLOWING&&(R("The component `"+uA+"` was registered in a <script> tag after the scene. Component <script> tags in an HTML file should be declared *before* the scene such that the component is available to entities during scene initialization."),window.debug&&(QA[uA]=!0))}),Y.test(uA)===!0&&R("The component name `"+uA+"` contains uppercase characters, but HTML will ignore the capitalization of attribute names. Change the name to be lowercase: `"+uA.toLowerCase()+"`"),uA.indexOf("__")!==-1)throw new Error("The component name `"+uA+"` is not allowed. The sequence __ (double underscore) is reserved to specify an id for multiple components of the same type");if(Object.keys(lA).forEach(function(ye){HA[ye]={value:lA[ye],writable:!0}}),v[uA])throw new Error("The component `"+uA+"` has been already registered. Check that you are not loading two versions of the same component or two different components of the same name.");NA=function(ye,Ye,Et){Z.call(this,ye,Ye,Et)},NA.prototype=Object.create(Z.prototype,HA),NA.prototype.name=uA,NA.prototype.isPositionRotationScale=uA==="position"||uA==="rotation"||uA==="scale",NA.prototype.constructor=NA,NA.prototype.system=_&&_.systems[uA],NA.prototype.play=pA(NA.prototype.play),NA.prototype.pause=TA(NA.prototype.pause),pe=T.extend(h(NA.prototype.schema,NA.prototype.name)),NA.prototype.isSingleProperty=He=p(NA.prototype.schema),NA.prototype.isObjectBased=!He||He&&(hA(pe.default)||hA(D(void 0,pe))),G[uA]=T.objectPool.createPool(),v[uA]={Component:NA,dependencies:NA.prototype.dependencies,before:NA.prototype.before,after:NA.prototype.after,isSingleProperty:NA.prototype.isSingleProperty,isObjectBased:NA.prototype.isObjectBased,multiple:NA.prototype.multiple,sceneOnly:NA.prototype.sceneOnly,name:uA,schema:pe,stringify:NA.prototype.stringify};for(var Oe=0;Oe<z.default.length;Oe++)z.default[Oe].emit("componentregistered",{name:uA},!1);return NA}function UA(uA){return uA.tick||uA.tock}function TA(uA){return function(){var NA=this.el.sceneEl;this.isPlaying&&(uA.call(this),this.isPlaying=!1,this.eventsDetach(),UA(this)&&NA.removeBehavior(this))}}function pA(uA){return function(){var NA=this.el.sceneEl,HA=this.el.isPlaying&&!this.isPlaying;!this.initialized||!HA||(uA.call(this),this.isPlaying=!0,this.eventsAttach(),UA(this)&&NA.addBehavior(this))}}function hA(uA){return uA&&uA.constructor===Object&&!(uA instanceof window.HTMLElement)}},"./src/core/geometry.js":(_A,O,d)=>{d.r(O),d.d(O,{Geometry:()=>D,geometries:()=>T,geometryNames:()=>v,registerGeometry:()=>h});var s=d("./src/core/schema.js"),z=d("./node_modules/three/build/three.core.js"),_=s.process,T={},v=[],D=function(){};D.prototype={schema:{},init:function(p){return this.geometry=new z.BufferGeometry,this.geometry},update:function(p){}};function h(p,m){var u,l={};if(Object.keys(m).forEach(function(N){l[N]={value:m[N],writable:!0}}),T[p])throw new Error("The geometry `"+p+"` has been already registered");return u=function(){D.call(this)},u.prototype=Object.create(D.prototype,l),u.prototype.name=p,u.prototype.constructor=u,T[p]={Geometry:u,schema:_(u.prototype.schema)},v.push(p),u}},"./src/core/propertyTypes.js":(_A,O,d)=>{d.r(O),d.d(O,{isValidDefaultCoordinate:()=>uA,isValidDefaultValue:()=>hA,propertyTypes:()=>v,registerPropertyType:()=>p});var s=d("./src/utils/coordinates.js"),z=d("./node_modules/debug/src/browser.js"),_=d.n(z),T=_()("core:propertyTypes:warn"),v={},D=/[,> .[\]:]/,h=/url\((.+)\)/;p("audio","",R,N),p("array",[],m,u,l),p("asset","",R,N),p("boolean",!1,U),p("color","#FFF"),p("int",0,j),p("number",0,Z),p("map","",R,N),p("model","",R,N),p("selector",null,CA,SA,x,!1),p("selectorAll",null,QA,UA,l,!1),p("src","",TA,N),p("string",""),p("time",0,j),p("vec2",{x:0,y:0},pA,s.stringify,s.equals),p("vec3",{x:0,y:0,z:0},pA,s.stringify,s.equals),p("vec4",{x:0,y:0,z:0,w:1},pA,s.stringify,s.equals);function p(lA,NA,HA,pe,He,Oe){if(lA in v)throw new Error("Property type "+lA+" is already registered.");v[lA]={default:NA,parse:HA||Y,stringify:pe||G,equals:He||x,isCacheable:Oe!==!1}}function m(lA){if(Array.isArray(lA))return lA;if(!lA||typeof lA!="string")return[];return lA.split(",").map(NA);function NA(HA){return HA.trim()}}function u(lA){return lA.join(", ")}function l(lA,NA){if(!Array.isArray(lA)||!Array.isArray(NA))return lA===NA;if(lA.length!==NA.length)return!1;for(var HA=0;HA<lA.length;HA++)if(lA[HA]!==NA[HA])return!1;return!0}function R(lA){var NA,HA;if(typeof lA!="string")return lA;if(HA=lA.match(h),HA)return HA[1];if(lA.charAt(0)==="#"){if(NA=document.getElementById(lA.substring(1)),NA)return NA.tagName==="CANVAS"||NA.tagName==="VIDEO"||NA.tagName==="IMG"?NA:NA.getAttribute("src");T('"'+lA+'" asset not found.');return}return lA}function N(lA){if(lA.getAttribute){var NA=lA.getAttribute("id");return NA?"#"+lA.getAttribute("id"):lA.getAttribute("src")}return G(lA)}function Y(lA){return lA}function G(lA){return lA===null?"null":lA.toString()}function x(lA,NA){return lA===NA}function U(lA){return lA!=="false"&&lA!==!1}function j(lA){return parseInt(lA,10)}function Z(lA){return parseFloat(lA,10)}function CA(lA){return lA?typeof lA!="string"?lA:lA[0]==="#"&&!D.test(lA)?document.getElementById(lA.substring(1)):document.querySelector(lA):null}function QA(lA){return lA?typeof lA!="string"?lA:Array.prototype.slice.call(document.querySelectorAll(lA),0):null}function SA(lA){return lA.getAttribute?"#"+lA.getAttribute("id"):G(lA)}function UA(lA){return lA instanceof Array?lA.map(function(NA){return"#"+NA.getAttribute("id")}).join(", "):G(lA)}function TA(lA){return T("`src` property type is deprecated. Use `asset` instead."),R(lA)}function pA(lA,NA,HA){return s.parse(lA,NA,HA)}function hA(lA,NA){return lA==="audio"&&typeof NA!="string"||lA==="array"&&!Array.isArray(NA)||lA==="asset"&&typeof NA!="string"||lA==="boolean"&&typeof NA!="boolean"||lA==="color"&&typeof NA!="string"||lA==="int"&&typeof NA!="number"||lA==="number"&&typeof NA!="number"||lA==="map"&&typeof NA!="string"||lA==="model"&&typeof NA!="string"||lA==="selector"&&typeof NA!="string"&&NA!==null||lA==="selectorAll"&&typeof NA!="string"&&NA!==null||lA==="src"&&typeof NA!="string"||lA==="string"&&typeof NA!="string"||lA==="time"&&typeof NA!="number"?!1:lA==="vec2"?uA(NA,2):lA==="vec3"?uA(NA,3):lA==="vec4"?uA(NA,4):!0}function uA(lA,NA){if(lA===null)return!0;if(typeof lA!="object"||Object.keys(lA).length!==NA)return!1;var HA=lA.x,pe=lA.y,He=lA.z,Oe=lA.w;return!(typeof HA!="number"||typeof pe!="number"||NA>2&&typeof He!="number"||NA>3&&typeof Oe!="number")}},"./src/core/readyState.js":(_A,O,d)=>{d.r(O),d.d(O,{canInitializeElements:()=>s,emitReady:()=>_,reset:()=>T,waitForDocumentReadyState:()=>z});var s=!1;function z(){if(document.readyState==="complete"){_();return}document.addEventListener("readystatechange",function v(){document.readyState==="complete"&&(document.removeEventListener("readystatechange",v),_())})}function _(){s||(s=!0,setTimeout(function(){document.dispatchEvent(new CustomEvent("aframeready"))}))}function T(){s=!1}},"./src/core/scene/a-scene.js":(_A,O,d)=>{d.r(O),d.d(O,{AScene:()=>U,determineComponentBehaviorOrder:()=>j,setupCanvas:()=>TA});var s=d("./node_modules/three/build/three.core.js"),z=d("./node_modules/three/build/three.module.js"),_=d("./src/core/scene/metaTags.js"),T=d("./src/core/scene/wakelock.js"),v=d("./src/core/scene/loadingScreen.js"),D=d("./src/core/scene/scenes.js"),h=d("./src/core/system.js"),p=d("./src/core/component.js"),m=d("./src/utils/index.js"),u=d("./src/core/a-entity.js"),l=d("./src/core/a-node.js"),R=d("./src/core/scene/postMessage.js");d("./src/utils/ios-orientationchange-blank-bug.js");var N=m.debug("core:a-scene:warn"),Y=m.device.isIOS(),G=m.device.isMobile(),x=m.device.isWebXRAvailable;class U extends u.AEntity{constructor(){var hA;super(),hA=this,hA.clock=new s.Clock,hA.isIOS=Y,hA.isMobile=G,hA.hasWebXR=x,hA.isAR=!1,hA.isScene=!0,hA.object3D=new s.Scene,hA.resize=hA.resize.bind(hA),hA.render=hA.render.bind(hA),hA.systems={},hA.systemNames=[],hA.time=hA.delta=0,hA.usedOfferSession=!1,hA.componentOrder=[],hA.behaviors={},hA.hasLoaded=!1,hA.isPlaying=!1,hA.originalHTML=hA.innerHTML}addFullScreenStyles(){document.documentElement.classList.add("a-fullscreen")}removeFullScreenStyles(){document.documentElement.classList.remove("a-fullscreen")}doConnectedCallback(){var hA=this,uA=this.hasAttribute("embedded");this.setAttribute("inspector",""),this.setAttribute("keyboard-shortcuts",""),this.setAttribute("screenshot",""),this.setAttribute("xr-mode-ui",""),this.setAttribute("device-orientation-permission-ui",""),super.doConnectedCallback(),TA(this),this.setupRenderer(),v.setup(this,CA),this.resize(),uA||this.addFullScreenStyles(),(0,R.initPostMessageAPI)(this),(0,_.inject)(this),(0,T.initWakelock)(this),this.enterVRBound=function(){hA.enterVR()},this.exitVRBound=function(){hA.exitVR()},window.addEventListener("sessionend",this.resize),this.addEventListener("cameraready",function(){hA.attachedCallbackPostCamera()}),this.initSystems(),this.componentOrder=j(p.components,this.componentOrder),this.addEventListener("componentregistered",function(){hA.componentOrder=j(p.components,hA.componentOrder)}),this.hasWebXR&&navigator.xr&&navigator.xr.addEventListener&&navigator.xr.addEventListener("sessiongranted",function(){hA.enterVR()})}attachedCallbackPostCamera(){var hA,uA=this;window.addEventListener("load",hA),window.addEventListener("resize",function(){uA.isIOS?setTimeout(uA.resize,100):uA.resize()}),this.play(),D.default.push(this)}initSystems(){var hA;this.initSystem("camera");for(hA in h.systems)hA!=="camera"&&this.initSystem(hA)}initSystem(hA){this.systems[hA]||(this.systems[hA]=new h.systems[hA](this),this.systemNames.push(hA))}disconnectedCallback(){var hA=D.default.indexOf(this);super.disconnectedCallback(),D.default.splice(hA,1),window.removeEventListener("sessionend",this.resize),this.removeFullScreenStyles(),this.renderer.dispose()}addBehavior(hA){var uA,lA=this.behaviors[hA.name],NA;lA||(lA=this.behaviors[hA.name]={tick:{inUse:!1,array:[],markedForRemoval:[]},tock:{inUse:!1,array:[],markedForRemoval:[]}});for(NA in lA)if(hA[NA]){if(uA=lA[NA],uA.inUse){var HA=uA.markedForRemoval.indexOf(hA);HA!==-1&&uA.markedForRemoval.splice(HA,1)}uA.array.indexOf(hA)===-1&&uA.array.push(hA)}}getPointerLockElement(){return document.pointerLockElement}checkHeadsetConnected(){return m.device.checkHeadsetConnected()}enterAR(){var hA;if(!this.hasWebXR)throw hA="Failed to enter AR mode, WebXR not supported.",new Error(hA);if(!m.device.checkARSupport())throw hA="Failed to enter AR, WebXR immersive-ar mode not supported in your browser or device.",new Error(hA);return this.enterVR(!0)}enterVR(hA,uA){var lA=this,NA=lA.renderer.xr,HA;if(uA&&(!navigator.xr||!navigator.xr.offerSession))return Promise.resolve("OfferSession is not supported.");if(lA.usedOfferSession&&uA)return Promise.resolve("OfferSession was already called.");if(this.is("vr-mode"))return Promise.resolve("Already in VR.");if(this.checkHeadsetConnected()||this.isMobile){var pe=lA.getAttribute("renderer");if(NA.enabled=!0,this.hasWebXR){this.xrSession&&this.xrSession.removeEventListener("end",this.exitVRBound);var He=this.sceneEl.systems.webxr.sessionReferenceSpaceType;NA.setReferenceSpaceType(He);var Oe=hA?"immersive-ar":"immersive-vr";return HA=this.sceneEl.systems.webxr.sessionConfiguration,new Promise(function(Et,ct){var q=uA?navigator.xr.offerSession.bind(navigator.xr):navigator.xr.requestSession.bind(navigator.xr);lA.usedOfferSession|=uA,q(Oe,HA).then(function(yA){uA&&(lA.usedOfferSession=!1),NA.layersEnabled=HA.requiredFeatures.indexOf("layers")!==-1,NA.setSession(yA).then(function(){NA.setFoveation(pe.foveationLevel),lA.xrSession=yA,lA.systems.renderer.setWebXRFrameRate(yA),yA.addEventListener("end",lA.exitVRBound),Ye(Et)})},function(yA){var ge=Oe==="immersive-ar",le=ge?"AR":"VR";ct(new Error("Failed to enter "+le+" mode (`requestSession`)",{cause:yA}))})})}else{var ye=hA?"AR":"VR";throw new Error("Failed to enter "+ye+" no WebXR")}}return Ye(),Promise.resolve();function Ye(Et){hA?lA.addState("ar-mode"):lA.addState("vr-mode"),lA.emit("enter-vr",{target:lA}),!lA.hasWebXR&&lA.isMobile&&screen.orientation&&screen.orientation.lock&&screen.orientation.lock("landscape"),lA.addFullScreenStyles(),!lA.isMobile&&!lA.checkHeadsetConnected()&&SA(lA.canvas),lA.resize(),Et&&Et()}}exitVR(){var hA=this,uA=this.renderer.xr;if(!this.is("vr-mode")&&!this.is("ar-mode"))return Promise.resolve("Not in immersive mode.");if(this.checkHeadsetConnected()||this.isMobile)if(uA.enabled=!1,this.hasWebXR)this.xrSession.removeEventListener("end",this.exitVRBound),this.xrSession.end().then(function(){},function(){}),this.xrSession=void 0;else throw Error("Failed to exit VR - no WebXR");else UA();return lA(),Promise.resolve();function lA(){hA.removeState("vr-mode"),hA.removeState("ar-mode"),hA.isMobile&&screen.orientation&&screen.orientation.unlock&&screen.orientation.unlock(),hA.hasAttribute("embedded")&&hA.removeFullScreenStyles(),hA.resize(),hA.isIOS&&m.forceCanvasResizeSafariMobile(hA.canvas),hA.renderer.setPixelRatio(window.devicePixelRatio),hA.emit("exit-vr",{target:hA})}}getAttribute(hA){var uA=this.systems[hA];return uA?uA.data:u.AEntity.prototype.getAttribute.call(this,hA)}getDOMAttribute(hA){var uA=this.systems[hA];return uA?uA.data:u.AEntity.prototype.getDOMAttribute.call(this,hA)}setAttribute(hA,uA,lA){if(h.systems[hA]){l.ANode.prototype.setAttribute.call(this,hA,uA);var NA=this.systems[hA];NA&&NA.updateProperties(uA);return}u.AEntity.prototype.setAttribute.call(this,hA,uA,lA)}removeBehavior(hA){var uA,lA,NA=this.behaviors[hA.name],HA;for(lA in NA)hA[lA]&&(uA=NA[lA],HA=uA.array.indexOf(hA),HA!==-1&&(uA.inUse?uA.markedForRemoval.indexOf(hA)===-1&&uA.markedForRemoval.push(hA):(uA.array[HA]=uA.array[uA.array.length-1],uA.array.pop())))}resize(){var hA=this.camera,uA=this.canvas,lA,NA,HA,pe=this.renderer.xr.isPresenting;NA=this.renderer.xr.enabled&&pe,!(!hA||!uA||this.is("vr-mode")&&(this.isMobile||NA))&&(lA=this.getAttribute("embedded")&&!this.is("vr-mode"),HA=CA(uA,lA,this.maxCanvasSize,this.is("vr-mode")),hA.aspect=HA.width/HA.height,hA.updateProjectionMatrix(),this.renderer.setSize(HA.width,HA.height,!1),this.emit("rendererresize",null,!1))}setupRenderer(){var hA=this,uA,lA,NA,HA;HA={alpha:!0,antialias:!G,canvas:this.canvas,logarithmicDepthBuffer:!1,powerPreference:"high-performance"},this.maxCanvasSize={height:-1,width:-1},this.hasAttribute("renderer")&&(NA=this.getAttribute("renderer"),lA=m.styleParser.parse(NA),lA.precision&&(HA.precision=lA.precision+"p"),lA.antialias&&lA.antialias!=="auto"&&(HA.antialias=lA.antialias==="true"),lA.logarithmicDepthBuffer&&lA.logarithmicDepthBuffer!=="auto"&&(HA.logarithmicDepthBuffer=lA.logarithmicDepthBuffer==="true"),lA.alpha&&(HA.alpha=lA.alpha==="true"),lA.stencil&&(HA.stencil=lA.stencil==="true"),lA.multiviewStereo&&(HA.multiviewStereo=lA.multiviewStereo==="true"),this.maxCanvasSize={width:lA.maxCanvasWidth?parseInt(lA.maxCanvasWidth):this.maxCanvasSize.width,height:lA.maxCanvasHeight?parseInt(lA.maxCanvasHeight):this.maxCanvasSize.height});var pe=["WebGLRenderer","WebGPURenderer"].find(function(He){return z[He]});uA=this.renderer=new z[pe](HA),uA.xr.setPoseTarget||(uA.xr.setPoseTarget=function(){}),uA.setPixelRatio(window.devicePixelRatio),this.camera&&uA.xr.setPoseTarget(this.camera.el.object3D),this.addEventListener("camera-set-active",function(){uA.xr.setPoseTarget(hA.camera.el.object3D)})}play(){var hA=this,uA=this;if(this.renderStarted){u.AEntity.prototype.play.call(this);return}this.addEventListener("loaded",function(){var lA=this.renderer;u.AEntity.prototype.play.call(this),!uA.renderStarted&&(uA.resize(),uA.renderer&&(window.performance&&window.performance.mark("render-started"),v.remove(),lA.setAnimationLoop(this.render),uA.renderStarted=!0,uA.emit("renderstart")))}),setTimeout(function(){u.AEntity.prototype.load.call(hA)})}updateComponent(hA){hA in h.systems||u.AEntity.prototype.updateComponent.apply(this,arguments)}tick(hA,uA){var lA,NA=this.systems;for(this.callComponentBehaviors("tick",hA,uA),lA=0;lA<this.systemNames.length;lA++)NA[this.systemNames[lA]].tick&&NA[this.systemNames[lA]].tick(hA,uA)}tock(hA,uA,lA){var NA,HA=this.systems;for(this.callComponentBehaviors("tock",hA,uA),NA=0;NA<this.systemNames.length;NA++)HA[this.systemNames[NA]].tock&&HA[this.systemNames[NA]].tock(hA,uA,lA)}render(hA,uA){var lA=this.renderer;this.frame=uA,this.delta=this.clock.getDelta()*1e3,this.time=this.clock.elapsedTime*1e3,this.isPlaying&&this.tick(this.time,this.delta);var NA=null;if(this.is("ar-mode")&&(NA=this.object3D.background,this.object3D.background=null),lA.render(this.object3D,this.camera),NA&&(this.object3D.background=NA),this.isPlaying){var HA=lA.xr.isPresenting?lA.xr.getCamera():this.camera;this.tock(this.time,this.delta,HA)}}callComponentBehaviors(hA,uA,lA){for(var NA,HA=0;HA<this.componentOrder.length;HA++){var pe=this.behaviors[this.componentOrder[HA]];if(pe){var He=pe[hA];for(He.inUse=!0,NA=0;NA<He.array.length;NA++)He.array[NA].isPlaying&&He.array[NA][hA](uA,lA);for(He.inUse=!1,NA=0;NA<He.markedForRemoval.length;NA++)this.removeBehavior(He.markedForRemoval[NA]);He.markedForRemoval.length=0}}}}function j(pA,hA){var uA={},lA,NA,HA=hA||[];HA.length=0;for(NA in pA){var pe=pA[NA];if(pe!==void 0){var He=pe.before?pe.before.slice(0):[],Oe=pe.after?pe.after.slice(0):[];uA[NA]={before:He,after:Oe,visited:!1,done:!1}}}for(NA in uA)for(lA=0;lA<uA[NA].before.length;lA++){var ye=uA[NA].before[lA];if(!(ye in uA)){N("Invalid ordering constraint, no component named `"+ye+"` referenced by `"+NA+"`");continue}uA[ye].after.push(NA)}function Ye(Et){if(!(!(Et in uA)||uA[Et].done)){if(uA[Et].visited){N("Cycle detected, ignoring one or more before/after constraints. The resulting order might be incorrect");return}uA[Et].visited=!0;for(var ct=0;ct<uA[Et].after.length;ct++){var q=uA[Et].after[ct];q in uA||N("Invalid before/after constraint, no component named `"+q+"` referenced in `"+Et+"`"),Ye(q)}uA[Et].done=!0,HA.push(Et)}}for(NA in uA)uA[NA].done||Ye(NA);return HA}function Z(pA,hA){var uA,lA=window.devicePixelRatio;return!hA||hA.width===-1&&hA.height===-1||pA.width*lA<hA.width&&pA.height*lA<hA.height||(uA=pA.width/pA.height,pA.width*lA>hA.width&&hA.width!==-1&&(pA.width=Math.round(hA.width/lA),pA.height=Math.round(hA.width/uA/lA)),pA.height*lA>hA.height&&hA.height!==-1&&(pA.height=Math.round(hA.height/lA),pA.width=Math.round(hA.height*uA/lA))),pA}customElements.define("a-scene",U);function CA(pA,hA,uA,lA){if(!pA.parentElement)return{height:0,width:0};if(hA){var NA;return NA={height:pA.parentElement.offsetHeight,width:pA.parentElement.offsetWidth},Z(NA,uA)}return QA(uA,lA)}function QA(pA,hA){var uA;return uA={height:document.body.offsetHeight,width:document.body.offsetWidth},hA?uA:Z(uA,pA)}function SA(pA){var hA=pA.requestFullscreen||pA.webkitRequestFullscreen||pA.mozRequestFullScreen||pA.msRequestFullscreen;hA.apply(pA,[{navigationUI:"hide"}])}function UA(){var pA=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement;pA&&(document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen())}function TA(pA){var hA;hA=document.createElement("canvas"),hA.classList.add("a-canvas"),hA.dataset.aframeCanvas=!0,pA.appendChild(hA),document.addEventListener("fullscreenchange",uA),document.addEventListener("mozfullscreenchange",uA),document.addEventListener("webkitfullscreenchange",uA),document.addEventListener("MSFullscreenChange",uA),hA.addEventListener("touchmove",function(lA){lA.preventDefault()},{passive:!1}),pA.canvas=hA,pA.emit("render-target-loaded",{target:hA}),setTimeout(pA.resize.bind(pA),0);function uA(){var lA=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement;lA||pA.exitVR(),document.activeElement.blur(),document.body.focus()}}},"./src/core/scene/loadingScreen.js":(_A,O,d)=>{d.r(O),d.d(O,{remove:()=>l,setup:()=>u});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/constants/index.js"),_=d("./src/utils/index.js"),T=_.styleParser,v,D,h,p="loading-screen",m="a-loader-title";function u(Y,G){v=Y,h=G;var x=v.hasAttribute(p)?T.parse(v.getAttribute(p)):void 0,U=x&&x.dotsColor||"white",j=x&&x.backgroundColor||"#24CAFF",Z=x===void 0||x.enabled==="true"||x.enabled===void 0,CA,QA,SA,UA,TA,pA,hA,uA,lA,NA;Z&&(CA=new s.Scene,QA=new s.SphereGeometry(.2,36,18,0,2*Math.PI,0,Math.PI),SA=new s.MeshBasicMaterial({color:U}),UA=new s.Mesh(QA,SA),TA=UA.clone(),pA=UA.clone(),hA=new s.PerspectiveCamera(80,window.innerWidth/window.innerHeight,5e-4,1e4),uA=new s.Clock,lA=0,NA=function(){v.renderer.render(CA,hA),lA=uA.getElapsedTime()%4,UA.visible=lA>=1,TA.visible=lA>=2,pA.visible=lA>=3},CA.background=new s.Color(j),CA.add(hA),UA.position.set(-1,0,-15),TA.position.set(0,0,-15),pA.position.set(1,0,-15),hA.add(UA),hA.add(TA),hA.add(pA),N(),setTimeout(function(){v.hasLoaded||(R(hA),D.style.display="block",window.addEventListener("resize",function(){R(hA)}),v.renderer.setAnimationLoop(NA))},200))}function l(){window.removeEventListener("resize",R),D&&(D.style.display="none")}function R(Y){var G=v.hasAttribute("embedded"),x=h(v.canvas,G,v.maxCanvasSize,v.is("vr-mode"));Y.aspect=x.width/x.height,Y.updateProjectionMatrix(),v.renderer.setSize(x.width,x.height,!1)}function N(){D=document.createElement("div"),D.className=m,D.innerHTML=document.title,D.style.display="none",D.setAttribute(z.AFRAME_INJECTED,""),v.appendChild(D)}},"./src/core/scene/metaTags.js":(_A,O,d)=>{d.r(O),d.d(O,{MOBILE_HEAD_TAGS:()=>_,MOBILE_IOS_HEAD_TAGS:()=>T,inject:()=>h});var s=d("./src/constants/index.js"),z=d("./src/utils/index.js"),_=[v({name:"viewport",content:"width=device-width,initial-scale=1,maximum-scale=1,shrink-to-fit=no,user-scalable=no,minimal-ui,viewport-fit=cover"}),v({name:"mobile-web-app-capable",content:"yes"}),v({name:"theme-color",content:"black"})],T=[v({name:"apple-mobile-web-app-capable",content:"yes"}),v({name:"apple-mobile-web-app-status-bar-style",content:"black"}),D({rel:"apple-touch-icon",href:"https://aframe.io/images/aframe-logo-152.png"})];function v(m){return{tagName:"meta",attributes:m,exists:function(){return document.querySelector('meta[name="'+m.name+'"]')}}}function D(m){return{tagName:"link",attributes:m,exists:function(){return document.querySelector('link[rel="'+m.rel+'"]')}}}var h=function(u){var l=document.head,R=l.querySelector("script"),N,Y=[];return _.forEach(G),u.isIOS&&T.forEach(G),Y;function G(x){!x||x.exists()||(N=p(x),N&&(R?R.parentNode.insertBefore(N,R):l.appendChild(N),Y.push(N)))}};function p(m){if(!(!m||!m.tagName)){var u=document.createElement(m.tagName);return u.setAttribute(s.AFRAME_INJECTED,""),(0,z.extend)(u,m.attributes)}}},"./src/core/scene/postMessage.js":(_A,O,d)=>{d.r(O),d.d(O,{initPostMessageAPI:()=>z});var s=d("./src/utils/index.js");function z(T){(0,s.isIframed)()&&window.addEventListener("message",_.bind(T))}function _(T){var v=this;if(T.data)switch(T.data.type){case"vr":switch(T.data.data){case"enter":v.enterVR();break;case"exit":v.exitVR();break}}}},"./src/core/scene/scenes.js":(_A,O,d)=>{d.r(O),d.d(O,{default:()=>s});const s=[]},"./src/core/scene/wakelock.js":(_A,O,d)=>{d.r(O),d.d(O,{initWakelock:()=>_});var s=d("./vendor/wakelock/wakelock.js"),z=d.n(s);function _(T){if(T.isMobile){var v=T.wakelock=new(z());T.addEventListener("enter-vr",function(){v.request()}),T.addEventListener("exit-vr",function(){v.release()})}}},"./src/core/schema.js":(_A,O,d)=>{d.r(O),d.d(O,{isSingleProperty:()=>h,parseProperties:()=>u,parseProperty:()=>l,process:()=>p,processPropertyDefinition:()=>m,stringifyProperties:()=>R,stringifyProperty:()=>N});var s=d("./src/utils/index.js"),z=d("./src/core/propertyTypes.js"),_=s.debug,T=z.isValidDefaultValue,v=z.propertyTypes,D=_("core:schema:warn");function h(Y){return"type"in Y?typeof Y.type=="string":"default"in Y}function p(Y,G){var x;if(h(Y))return m(Y,G);for(x in Y)Y[x]=m(Y[x],G);return Y}function m(Y,G){var x=Y.default,U,j,Z=Y.type;return Y.type?Y.type==="bool"?Z="boolean":Y.type==="float"&&(Z="number"):x!==void 0&&(typeof x=="boolean"||typeof x=="number")?Z=typeof x:Array.isArray(x)?Z="array":Z="string",j=v[Z],j||D("Unknown property type for component `"+G+"`: "+Z),U=!!Y.parse,Y.parse=Y.parse||j.parse,Y.stringify=Y.stringify||j.stringify,Y.equals=Y.equals||j.equals,Y.isCacheable=Y.isCacheable===!0||j.isCacheable,Y.type=Z,"default"in Y?!U&&!T(Z,x)&&D("Default value `"+x+"` does not match type `"+Z+"` in component `"+G+"`"):Y.default=j.default,Y}var u=function(){var Y=[];return function(G,x,U,j,Z){var CA,QA,SA,UA;Y.length=0;for(QA in U?G:x)U&&G[QA]===void 0||Y.push(QA);if(G===null||typeof G!="object")return G;for(QA in G)G[QA]!==void 0&&!x[QA]&&!Z&&D("Unknown property `"+QA+"` for component/system `"+j+"`.");for(CA=0;CA<Y.length;CA++){if(QA=Y[CA],SA=x[QA],UA=G[QA],!x[QA])return;G[QA]=l(UA,SA)}return G}}();function l(Y,G,x){return(Y==null||Y==="")&&(Y=G.default,Array.isArray(Y)&&(Y=Y.slice())),G.parse(Y,G.default,x)}function R(Y,G){var x,U,j,Z={},CA;for(x in Y)U=G[x],j=Y[x],CA=j,typeof CA=="object"&&(CA=N(j,U),U||D("Unknown component property: "+x)),CA!==void 0&&(Z[x]=CA);return Z}function N(Y,G){return typeof Y!="object"?Y:!G||Y===null?JSON.stringify(Y):G.stringify(Y)}},"./src/core/shader.js":(_A,O,d)=>{d.r(O),d.d(O,{Shader:()=>h,registerShader:()=>p,shaderNames:()=>v,shaders:()=>T});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/schema.js"),_=d("./src/utils/index.js"),T={},v=[],D={array:"v3",color:"v3",int:"i",number:"f",map:"t",time:"f",vec2:"v2",vec3:"v3",vec4:"v4"},h=function(){};h.prototype={schema:{},vertexShader:"void main() {gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);}",fragmentShader:"void main() {gl_FragColor = vec4(1.0, 0.0, 1.0, 1.0);}",init:function(m){return this.uniforms=this.initUniforms(),this.material=new(this.raw?s.RawShaderMaterial:s.ShaderMaterial)({uniforms:this.uniforms,glslVersion:this.raw||this.glsl3?s.GLSL3:null,vertexShader:this.vertexShader,fragmentShader:this.fragmentShader}),this.material},initUniforms:function(){var m,u=this.schema,l={},R;for(m in u)u[m].is==="uniform"&&(R=D[u[m].type],l[m]={type:R,value:void 0});return l},update:function(m){var u,l,R=this.schema,N=this.uniforms;for(u in m)if(!(!R[u]||R[u].is!=="uniform")){if(R[u].type==="map"){if(!N[u]||N[u].value===m[u])continue;l="_texture_"+u,this.setMapOnTextureLoad(N,u,l),_.material.updateMapMaterialFromData(l,u,this,m);continue}N[u].value=this.parseValue(R[u].type,m[u]),N[u].needsUpdate=!0}},parseValue:function(m,u){var l;switch(m){case"vec2":return new s.Vector2(u.x,u.y);case"vec3":return new s.Vector3(u.x,u.y,u.z);case"vec4":return new s.Vector4(u.x,u.y,u.z,u.w);case"color":return l=new s.Color(u),new s.Vector3(l.r,l.g,l.b);default:return u}},setMapOnTextureLoad:function(m,u,l){var R=this;this.el.addEventListener("materialtextureloaded",function(){m[u].value=R.material[l],m[u].needsUpdate=!0})}};function p(m,u){var l,R={};if(Object.keys(u).forEach(function(N){R[N]={value:u[N],writable:!0}}),T[m])throw new Error("The shader "+m+" has already been registered");return l=function(){h.call(this)},l.prototype=Object.create(h.prototype,R),l.prototype.name=m,l.prototype.constructor=l,T[m]={Shader:l,schema:(0,z.process)(l.prototype.schema)},v.push(m),l}},"./src/core/system.js":(_A,O,d)=>{d.r(O),d.d(O,{System:()=>h,registerSystem:()=>p,systems:()=>D});var s=d("./src/core/schema.js"),z=d("./src/core/component.js"),_=d("./src/utils/index.js"),T=d("./src/core/readyState.js"),v=_.styleParser,D={},h=function(m){var u=z&&z.components[this.name];this.el=m,this.sceneEl=m,u&&(u.Component.prototype.system=this),this.buildData(),this.init(),this.update({})};h.prototype={schema:{},init:function(){},update:function(m){},updateProperties:function(m){var u=this.data;Object.keys(this.schema).length!==0&&(this.buildData(m),this.update(u))},buildData:function(m){var u=this.schema;Object.keys(u).length!==0&&(m=m||window.HTMLElement.prototype.getAttribute.call(this.sceneEl,this.name),(0,s.isSingleProperty)(u)?this.data=(0,s.parseProperty)(m,u):this.data=(0,s.parseProperties)(v.parse(m)||{},u,!1,this.name))},tick:void 0,tock:void 0,play:function(){},pause:function(){}};function p(m,u){var l,R,N={},Y=_.findAllScenes(document);if(Object.keys(u).forEach(function(G){N[G]={value:u[G],writable:!0}}),D[m])throw new Error("The system `"+m+"` has been already registered. Check that you are not loading two versions of the same system or two different systems of the same name.");if(R=function(G){h.call(this,G)},R.prototype=Object.create(h.prototype,N),R.prototype.name=m,R.prototype.constructor=R,R.prototype.schema=_.extend((0,s.process)(R.prototype.schema)),D[m]=R,T.canInitializeElements)for(l=0;l<Y.length;l++)Y[l].initSystem(m)}},"./src/extras/components/index.js":(_A,O,d)=>{d.r(O),d("./src/extras/components/pivot.js")},"./src/extras/components/pivot.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/component.js"),_=new s.Vector3,T=new s.Vector3;(0,z.registerComponent)("pivot",{dependencies:["position"],schema:{type:"vec3"},init:function(){var v=this.data,D=this.el,h=D.object3D.parent,p=D.object3D,m=new s.Group;_.copy(p.position),T.copy(p.rotation),h.remove(p),m.add(p),h.add(m),D.object3D=m,p.position.set(-1*v.x,-1*v.y,-1*v.z),m.position.set(v.x+_.x,v.y+_.y,v.z+_.z),m.rotation.copy(p.rotation),p.rotation.set(0,0,0)}})},"./src/extras/primitives/getMeshMixin.js":(_A,O,d)=>{d.r(O),d.d(O,{default:()=>D});var s=d("./src/core/component.js"),z=d("./src/core/shader.js"),_=d("./src/utils/index.js"),T={};Object.keys(s.components.material.schema).forEach(v),Object.keys(z.shaders.standard.schema).forEach(v);function v(h){var p=h.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();h==="fog"&&(p="material-fog"),h==="visible"&&(p="material-visible"),T[p]="material."+h}function D(){return{defaultComponents:{material:{}},mappings:_.extend({},T)}}},"./src/extras/primitives/index.js":(_A,O,d)=>{d.r(O),d("./src/extras/primitives/primitives/a-camera.js"),d("./src/extras/primitives/primitives/a-cursor.js"),d("./src/extras/primitives/primitives/a-curvedimage.js"),d("./src/extras/primitives/primitives/a-gltf-model.js"),d("./src/extras/primitives/primitives/a-image.js"),d("./src/extras/primitives/primitives/a-light.js"),d("./src/extras/primitives/primitives/a-link.js"),d("./src/extras/primitives/primitives/a-obj-model.js"),d("./src/extras/primitives/primitives/a-sky.js"),d("./src/extras/primitives/primitives/a-sound.js"),d("./src/extras/primitives/primitives/a-text.js"),d("./src/extras/primitives/primitives/a-video.js"),d("./src/extras/primitives/primitives/a-videosphere.js"),d("./src/extras/primitives/primitives/meshPrimitives.js")},"./src/extras/primitives/primitives.js":(_A,O,d)=>{d.r(O),d.d(O,{definePrimitive:()=>Y,primitives:()=>u,registerPrimitive:()=>l});var s=d("./src/core/a-node.js"),z=d("./src/core/a-entity.js"),_=d("./src/core/component.js"),T=d("./src/utils/index.js"),v=T.debug,D=T.entity.setComponentProperty,h=v("extras:primitives:debug"),p=v("extras:primitives:warn"),m=v("extras:primitives:error"),u={};function l(G,x){if(G=G.toLowerCase(),s.knownTags[G]){m("Trying to register primitive "+G+" that has been already previously registered");return}s.knownTags[G]=!0,h("Registering <%s>",G),x.defaultAttributes&&p("The 'defaultAttributes' object is deprecated. Use 'defaultComponents' instead.");var U=x.mappings||{},j=class extends z.AEntity{constructor(){super(),this.defaultComponentsFromPrimitive=x.defaultComponents||x.defaultAttributes||{},this.deprecated=x.deprecated||null,this.deprecatedMappings=x.deprecatedMappings||{},this.mappings=U,x.deprecated&&console.warn(x.deprecated),this.resolveMappingCollisions()}resolveMappingCollisions(){var Z=this.mappings,CA=this;Object.keys(Z).forEach(function(SA){var UA;SA!==SA.toLowerCase()&&p("Mapping keys should be specified in lower case. The mapping key "+SA+" may not be recognized"),_.components[SA]&&(UA=Z[SA].replace(".","-"),Z[UA]=Z[SA],delete Z[SA],console.warn("The primitive "+CA.tagName.toLowerCase()+" has a mapping collision. The attribute "+SA+" has the same name as a registered component and has been renamed to "+UA))})}getExtraComponents(){var Z,CA,QA,SA,UA,TA=this;for(CA=T.clone(this.defaultComponentsFromPrimitive),UA=this.getAttribute("mixin"),UA&&(UA=T.split(UA.trim(),/\s+/),UA.forEach(function(HA){var pe=document.getElementById(HA);if(pe){var He=pe.rawAttributeCache,Oe=pe.componentCache;for(var ye in He){if(SA=TA.mappings[ye],SA){R(SA,He[ye],CA);return}ye in Oe&&(CA[ye]=pA(CA[ye],Oe[ye]))}}})),QA=0;QA<this.attributes.length;QA++)Z=this.attributes[QA],SA=this.mappings[Z.name],SA&&R(SA,Z.value,CA);return CA;function pA(NA,HA){return hA(NA)?uA(HA):hA(HA)?uA(NA):lA(NA)&&lA(HA)?T.extendDeep(NA,HA):uA(HA)}function hA(NA){return typeof NA>"u"}function uA(NA){return lA(NA)?T.extendDeep({},NA):NA}function lA(NA){return NA!==null&&NA.constructor===Object}}attributeChangedCallback(Z,CA,QA){var SA=this.mappings[Z];if(Z in this.deprecatedMappings&&console.warn(this.deprecatedMappings[Z]),!Z||!SA){super.attributeChangedCallback(Z,CA,QA);return}D(this,SA,QA)}};return customElements.define(G,j),j.mappings=U,u[G]=j,j}function R(G,x,U){var j=T.entity.getComponentPropertyPath(G);j.constructor===Array?(U[j[0]]=U[j[0]]||{},U[j[0]][j[1]]=x.trim()):U[j]=x.trim()}function N(G,x){var U=_.components[G].schema;Object.keys(U).forEach(function(j){var Z=j.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase();x[Z]!==void 0&&(Z=G+"-"+j),x[Z]=G+"."+j})}function Y(G,x,U){U=U||{},Object.keys(x).forEach(function(Z){N(Z,U)}),l(G,T.extendDeep({},null,{defaultComponents:x,mappings:U}))}},"./src/extras/primitives/primitives/a-camera.js":(_A,O,d)=>{d.r(O);var s=d("./src/extras/primitives/primitives.js");(0,s.registerPrimitive)("a-camera",{defaultComponents:{camera:{},"look-controls":{},"wasd-controls":{},position:{x:0,y:1.6,z:0}},mappings:{active:"camera.active",far:"camera.far",fov:"camera.fov","look-controls-enabled":"look-controls.enabled",near:"camera.near","pointer-lock-enabled":"look-controls.pointerLockEnabled","wasd-controls-enabled":"wasd-controls.enabled","reverse-mouse-drag":"look-controls.reverseMouseDrag",zoom:"camera.zoom"}})},"./src/extras/primitives/primitives/a-cursor.js":(_A,O,d)=>{d.r(O);var s=d("./src/extras/primitives/getMeshMixin.js"),z=d("./src/extras/primitives/primitives.js"),_=d("./src/utils/index.js");(0,z.registerPrimitive)("a-cursor",_.extendDeep({},(0,s.default)(),{defaultComponents:{cursor:{},geometry:{primitive:"ring",radiusOuter:.016,radiusInner:.01,segmentsTheta:32},material:{color:"#000",shader:"flat",opacity:.8},position:{x:0,y:0,z:-1}},mappings:{far:"raycaster.far",fuse:"cursor.fuse","fuse-timeout":"cursor.fuseTimeout",interval:"raycaster.interval",objects:"raycaster.objects"}}))},"./src/extras/primitives/primitives/a-curvedimage.js":(_A,O,d)=>{d.r(O);var s=d("./src/extras/primitives/getMeshMixin.js"),z=d("./src/extras/primitives/primitives.js"),_=d("./src/utils/index.js");(0,z.registerPrimitive)("a-curvedimage",_.extendDeep({},(0,s.default)(),{defaultComponents:{geometry:{height:1,primitive:"cylinder",radius:2,segmentsRadial:48,thetaLength:270,openEnded:!0,thetaStart:0},material:{color:"#FFF",shader:"flat",side:"double",transparent:!0,repeat:"-1 1"}},mappings:{height:"geometry.height","open-ended":"geometry.openEnded",radius:"geometry.radius",segments:"geometry.segmentsRadial",start:"geometry.thetaStart","theta-length":"geometry.thetaLength","theta-start":"geometry.thetaStart",width:"geometry.thetaLength"}}))},"./src/extras/primitives/primitives/a-gltf-model.js":(_A,O,d)=>{d.r(O);var s=d("./src/extras/primitives/primitives.js");(0,s.registerPrimitive)("a-gltf-model",{mappings:{src:"gltf-model"}})},"./src/extras/primitives/primitives/a-image.js":(_A,O,d)=>{d.r(O);var s=d("./src/extras/primitives/getMeshMixin.js"),z=d("./src/extras/primitives/primitives.js"),_=d("./src/utils/index.js");(0,z.registerPrimitive)("a-image",_.extendDeep({},(0,s.default)(),{defaultComponents:{geometry:{primitive:"plane"},material:{color:"#FFF",shader:"flat",side:"double",transparent:!0}},mappings:{height:"geometry.height",width:"geometry.width"}}))},"./src/extras/primitives/primitives/a-light.js":(_A,O,d)=>{d.r(O);var s=d("./src/extras/primitives/primitives.js");(0,s.registerPrimitive)("a-light",{defaultComponents:{light:{}},mappings:{angle:"light.angle",color:"light.color","ground-color":"light.groundColor",decay:"light.decay",distance:"light.distance",intensity:"light.intensity",penumbra:"light.penumbra",type:"light.type",target:"light.target",envmap:"light.envMap","shadow-camera-automatic":"light.shadowCameraAutomatic"}})},"./src/extras/primitives/primitives/a-link.js":(_A,O,d)=>{d.r(O);var s=d("./src/extras/primitives/primitives.js");(0,s.registerPrimitive)("a-link",{defaultComponents:{link:{visualAspectEnabled:!0}},mappings:{href:"link.href",image:"link.image",title:"link.title"}})},"./src/extras/primitives/primitives/a-obj-model.js":(_A,O,d)=>{d.r(O);var s=d("./src/extras/primitives/getMeshMixin.js"),z=d("./src/extras/primitives/primitives.js"),_=d("./src/utils/index.js");(0,z.registerPrimitive)("a-obj-model",_.extendDeep({},(0,s.default)(),{defaultComponents:{"obj-model":{}},mappings:{src:"obj-model.obj",mtl:"obj-model.mtl"}}))},"./src/extras/primitives/primitives/a-sky.js":(_A,O,d)=>{d.r(O);var s=d("./src/extras/primitives/getMeshMixin.js"),z=d("./src/extras/primitives/primitives.js"),_=d("./src/utils/index.js"),T=d("./src/extras/primitives/primitives/meshPrimitives.js");(0,z.registerPrimitive)("a-sky",_.extendDeep({},(0,s.default)(),{defaultComponents:{geometry:{primitive:"sphere",radius:500,segmentsWidth:64,segmentsHeight:32},material:{color:"#FFF",side:"back",shader:"flat",npot:!0},scale:"-1 1 1"},mappings:_.extendDeep({},T.default["a-sphere"].mappings)}))},"./src/extras/primitives/primitives/a-sound.js":(_A,O,d)=>{d.r(O);var s=d("./src/extras/primitives/primitives.js");(0,s.registerPrimitive)("a-sound",{defaultComponents:{sound:{}},mappings:{src:"sound.src",on:"sound.on",autoplay:"sound.autoplay",loop:"sound.loop",volume:"sound.volume"}})},"./src/extras/primitives/primitives/a-text.js":(_A,O,d)=>{d.r(O);var s=d("./src/extras/primitives/primitives.js");(0,s.definePrimitive)("a-text",{text:{anchor:"align",width:5}})},"./src/extras/primitives/primitives/a-video.js":(_A,O,d)=>{d.r(O);var s=d("./src/extras/primitives/getMeshMixin.js"),z=d("./src/extras/primitives/primitives.js"),_=d("./src/utils/index.js");(0,z.registerPrimitive)("a-video",_.extendDeep({},(0,s.default)(),{defaultComponents:{geometry:{primitive:"plane"},material:{color:"#FFF",shader:"flat",side:"double",transparent:!0}},mappings:{height:"geometry.height",width:"geometry.width"}}))},"./src/extras/primitives/primitives/a-videosphere.js":(_A,O,d)=>{d.r(O);var s=d("./src/extras/primitives/getMeshMixin.js"),z=d("./src/extras/primitives/primitives.js"),_=d("./src/utils/index.js");(0,z.registerPrimitive)("a-videosphere",_.extendDeep({},(0,s.default)(),{defaultComponents:{geometry:{primitive:"sphere",radius:500,segmentsWidth:64,segmentsHeight:32},material:{color:"#FFF",shader:"flat",side:"back",npot:!0},scale:"-1 1 1"},mappings:{radius:"geometry.radius","segments-height":"geometry.segmentsHeight","segments-width":"geometry.segmentsWidth"}}))},"./src/extras/primitives/primitives/meshPrimitives.js":(_A,O,d)=>{d.r(O),d.d(O,{default:()=>D});var s=d("./src/extras/primitives/getMeshMixin.js"),z=d("./src/core/geometry.js"),_=d("./src/extras/primitives/primitives.js"),T=d("./src/utils/index.js");const v={},D=v;z.geometryNames.forEach(function(m){var u=z.geometries[m],l=h(m),R={};Object.keys(u.schema).forEach(function(x){R[h(x)]="geometry."+x});var N="a-"+l,Y=(0,_.registerPrimitive)(N,T.extendDeep({},(0,s.default)(),{defaultComponents:{geometry:{primitive:m}},mappings:R}));v[N]=Y});function h(p){return p.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}},"./src/geometries/box.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js");(0,z.registerGeometry)("box",{schema:{depth:{default:1,min:0},height:{default:1,min:0},width:{default:1,min:0},segmentsHeight:{default:1,min:1,max:20,type:"int"},segmentsWidth:{default:1,min:1,max:20,type:"int"},segmentsDepth:{default:1,min:1,max:20,type:"int"}},init:function(_){this.geometry=new s.BoxGeometry(_.width,_.height,_.depth,_.segmentsWidth,_.segmentsHeight,_.segmentsDepth)}})},"./src/geometries/circle.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js"),_=s.MathUtils.degToRad;(0,z.registerGeometry)("circle",{schema:{radius:{default:1,min:0},segments:{default:32,min:3,type:"int"},thetaLength:{default:360,min:0},thetaStart:{default:0}},init:function(T){this.geometry=new s.CircleGeometry(T.radius,T.segments,_(T.thetaStart),_(T.thetaLength))}})},"./src/geometries/cone.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js"),_=s.MathUtils.degToRad;(0,z.registerGeometry)("cone",{schema:{height:{default:1,min:0},openEnded:{default:!1},radiusBottom:{default:1,min:0},radiusTop:{default:.01,min:0},segmentsHeight:{default:18,min:1,type:"int"},segmentsRadial:{default:36,min:3,type:"int"},thetaLength:{default:360,min:0},thetaStart:{default:0}},init:function(T){this.geometry=new s.CylinderGeometry(T.radiusTop,T.radiusBottom,T.height,T.segmentsRadial,T.segmentsHeight,T.openEnded,_(T.thetaStart),_(T.thetaLength))}})},"./src/geometries/cylinder.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js"),_=s.MathUtils.degToRad;(0,z.registerGeometry)("cylinder",{schema:{height:{default:1,min:0},openEnded:{default:!1},radius:{default:1,min:0},segmentsHeight:{default:18,min:1,type:"int"},segmentsRadial:{default:36,min:3,type:"int"},thetaLength:{default:360,min:0},thetaStart:{default:0}},init:function(T){this.geometry=new s.CylinderGeometry(T.radius,T.radius,T.height,T.segmentsRadial,T.segmentsHeight,T.openEnded,_(T.thetaStart),_(T.thetaLength))}})},"./src/geometries/dodecahedron.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js");(0,z.registerGeometry)("dodecahedron",{schema:{detail:{default:0,min:0,max:5,type:"int"},radius:{default:1,min:0}},init:function(_){this.geometry=new s.DodecahedronGeometry(_.radius,_.detail)}})},"./src/geometries/icosahedron.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js");(0,z.registerGeometry)("icosahedron",{schema:{detail:{default:0,min:0,max:5,type:"int"},radius:{default:1,min:0}},init:function(_){this.geometry=new s.IcosahedronGeometry(_.radius,_.detail)}})},"./src/geometries/index.js":(_A,O,d)=>{d.r(O),d("./src/geometries/box.js"),d("./src/geometries/circle.js"),d("./src/geometries/cone.js"),d("./src/geometries/cylinder.js"),d("./src/geometries/dodecahedron.js"),d("./src/geometries/icosahedron.js"),d("./src/geometries/octahedron.js"),d("./src/geometries/plane.js"),d("./src/geometries/ring.js"),d("./src/geometries/sphere.js"),d("./src/geometries/tetrahedron.js"),d("./src/geometries/torus.js"),d("./src/geometries/torusKnot.js"),d("./src/geometries/triangle.js")},"./src/geometries/octahedron.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js");(0,z.registerGeometry)("octahedron",{schema:{detail:{default:0,min:0,max:5,type:"int"},radius:{default:1,min:0}},init:function(_){this.geometry=new s.OctahedronGeometry(_.radius,_.detail)}})},"./src/geometries/plane.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js");(0,z.registerGeometry)("plane",{schema:{height:{default:1,min:0},width:{default:1,min:0},segmentsHeight:{default:1,min:1,max:20,type:"int"},segmentsWidth:{default:1,min:1,max:20,type:"int"}},init:function(_){this.geometry=new s.PlaneGeometry(_.width,_.height,_.segmentsWidth,_.segmentsHeight)}})},"./src/geometries/ring.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js"),_=s.MathUtils.degToRad;(0,z.registerGeometry)("ring",{schema:{radiusInner:{default:.8,min:0},radiusOuter:{default:1.2,min:0},segmentsPhi:{default:10,min:1,type:"int"},segmentsTheta:{default:32,min:3,type:"int"},thetaLength:{default:360,min:0},thetaStart:{default:0}},init:function(T){this.geometry=new s.RingGeometry(T.radiusInner,T.radiusOuter,T.segmentsTheta,T.segmentsPhi,_(T.thetaStart),_(T.thetaLength))}})},"./src/geometries/sphere.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js"),_=s.MathUtils.degToRad;(0,z.registerGeometry)("sphere",{schema:{radius:{default:1,min:0},phiLength:{default:360},phiStart:{default:0,min:0},thetaLength:{default:180,min:0},thetaStart:{default:0},segmentsHeight:{default:18,min:2,type:"int"},segmentsWidth:{default:36,min:3,type:"int"}},init:function(T){this.geometry=new s.SphereGeometry(T.radius,T.segmentsWidth,T.segmentsHeight,_(T.phiStart),_(T.phiLength),_(T.thetaStart),_(T.thetaLength))}})},"./src/geometries/tetrahedron.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js");(0,z.registerGeometry)("tetrahedron",{schema:{detail:{default:0,min:0,max:5,type:"int"},radius:{default:1,min:0}},init:function(_){this.geometry=new s.TetrahedronGeometry(_.radius,_.detail)}})},"./src/geometries/torus.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js"),_=s.MathUtils.degToRad;(0,z.registerGeometry)("torus",{schema:{arc:{default:360},radius:{default:1,min:0},radiusTubular:{default:.2,min:0},segmentsRadial:{default:36,min:2,type:"int"},segmentsTubular:{default:32,min:3,type:"int"}},init:function(T){this.geometry=new s.TorusGeometry(T.radius,T.radiusTubular*2,T.segmentsRadial,T.segmentsTubular,_(T.arc))}})},"./src/geometries/torusKnot.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js");(0,z.registerGeometry)("torusKnot",{schema:{p:{default:2,min:1},q:{default:3,min:1},radius:{default:1,min:0},radiusTubular:{default:.2,min:0},segmentsRadial:{default:8,min:3,type:"int"},segmentsTubular:{default:100,min:3,type:"int"}},init:function(_){this.geometry=new s.TorusKnotGeometry(_.radius,_.radiusTubular*2,_.segmentsTubular,_.segmentsRadial,_.p,_.q)}})},"./src/geometries/triangle.js":(_A,O,d)=>{d.r(O);var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/geometry.js"),_=new s.Quaternion,T=new s.Vector3(0,0,1),v=new s.Vector2,D=new s.Vector2,h=new s.Vector2;(0,z.registerGeometry)("triangle",{schema:{vertexA:{type:"vec3",default:{x:0,y:.5,z:0}},vertexB:{type:"vec3",default:{x:-.5,y:-.5,z:0}},vertexC:{type:"vec3",default:{x:.5,y:-.5,z:0}}},init:function(p){var m,u,l,R,N,Y,G,x,U;l=new s.Triangle,l.a.set(p.vertexA.x,p.vertexA.y,p.vertexA.z),l.b.set(p.vertexB.x,p.vertexB.y,p.vertexB.z),l.c.set(p.vertexC.x,p.vertexC.y,p.vertexC.z),u=l.getNormal(new s.Vector3),_.setFromUnitVectors(u,T),R=l.a.clone().applyQuaternion(_),N=l.b.clone().applyQuaternion(_),Y=l.c.clone().applyQuaternion(_),v.set(Math.min(R.x,N.x,Y.x),Math.min(R.y,N.y,Y.y)),D.set(Math.max(R.x,N.x,Y.x),Math.max(R.y,N.y,Y.y)),h.set(0,0).subVectors(D,v),R=new s.Vector2().subVectors(R,v).divide(h),N=new s.Vector2().subVectors(N,v).divide(h),Y=new s.Vector2().subVectors(Y,v).divide(h),m=this.geometry=new s.BufferGeometry,G=[l.a.x,l.a.y,l.a.z,l.b.x,l.b.y,l.b.z,l.c.x,l.c.y,l.c.z],x=[u.x,u.y,u.z,u.x,u.y,u.z,u.x,u.y,u.z],U=[R.x,R.y,N.x,N.y,Y.x,Y.y],m.setAttribute("position",new s.Float32BufferAttribute(G,3)),m.setAttribute("normal",new s.Float32BufferAttribute(x,3)),m.setAttribute("uv",new s.Float32BufferAttribute(U,2))}})},"./src/lib/rStatsAframe.js":()=>{window.aframeStats=function(_A){var O=null,d=_A,s={te:{caption:"Entities"},lt:{caption:"Load Time"}},z=[{caption:"A-Frame",values:["te","lt"]}];function _(){O("te").set(T()),window.performance.getEntriesByName&&O("lt").set(window.performance.getEntriesByName("render-started")[0].startTime.toFixed(0))}function T(){var p=d.querySelectorAll("*");return Array.prototype.slice.call(p).filter(function(m){return m.isEntity}),p.length}function v(){}function D(){}function h(p){O=p}return{update:_,start:v,end:D,attach:h,values:s,groups:z,fractions:[]}}},"./src/lib/three.js":(_A,O,d)=>{d.r(O),d.d(O,{default:()=>R});var s=d("./node_modules/three/build/three.module.js"),z=d("./node_modules/three/examples/jsm/loaders/DRACOLoader.js"),_=d("./node_modules/three/examples/jsm/loaders/GLTFLoader.js"),T=d("./node_modules/three/examples/jsm/loaders/KTX2Loader.js"),v=d("./node_modules/three/examples/jsm/math/OBB.js"),D=d("./node_modules/three/examples/jsm/loaders/OBJLoader.js"),h=d("./node_modules/three/examples/jsm/loaders/MTLLoader.js"),p=d("./node_modules/three/examples/jsm/utils/BufferGeometryUtils.js"),m=d("./node_modules/three/examples/jsm/lights/LightProbeGenerator.js"),u=d("./vendor/DeviceOrientationControls.js"),l=globalThis.THREE={...s};l.DRACOLoader=z.DRACOLoader,l.GLTFLoader=_.GLTFLoader,l.KTX2Loader=T.KTX2Loader,l.OBJLoader=D.OBJLoader,l.MTLLoader=h.MTLLoader,l.OBB=v.OBB,l.BufferGeometryUtils=p,l.LightProbeGenerator=m.LightProbeGenerator,l.DeviceOrientationControls=u.DeviceOrientationControls,l.Cache.enabled=!0;const R=l},"./src/shaders/flat.js":(_A,O,d)=>{d.r(O),d.d(O,{Shader:()=>T});var s=d("./src/core/shader.js"),z=d("./node_modules/three/build/three.core.js"),_=d("./src/utils/index.js"),T=(0,s.registerShader)("flat",{schema:{color:{type:"color"},fog:{default:!0},offset:{type:"vec2",default:{x:0,y:0}},repeat:{type:"vec2",default:{x:1,y:1}},src:{type:"map"},wireframe:{default:!1},wireframeLinewidth:{default:2},toneMapped:{default:!0}},init:function(D){this.materialData={color:new z.Color},v(D,this.materialData),this.material=new z.MeshBasicMaterial(this.materialData)},update:function(D){this.updateMaterial(D),_.material.updateMap(this,D)},updateMaterial:function(D){var h;v(D,this.materialData);for(h in this.materialData)this.material[h]=this.materialData[h]}});function v(D,h){return h.color.set(D.color),h.fog=D.fog,h.wireframe=D.wireframe,h.toneMapped=D.toneMapped,h.wireframeLinewidth=D.wireframeLinewidth,h}},"./src/shaders/index.js":(_A,O,d)=>{d.r(O),d("./src/shaders/flat.js"),d("./src/shaders/standard.js"),d("./src/shaders/phong.js"),d("./src/shaders/sdf.js"),d("./src/shaders/msdf.js"),d("./src/shaders/shadow.js")},"./src/shaders/msdf.js":(_A,O,d)=>{d.r(O),d.d(O,{Shader:()=>D});var s=d("./src/core/shader.js"),z=d("./node_modules/three/build/three.core.js"),_=d("./node_modules/three/build/three.module.js"),T=["#include <common>","#include <fog_pars_vertex>","#include <logdepthbuf_pars_vertex>","out vec2 vUV;","void main(void) {"," vUV = uv;"," #include <begin_vertex>"," #include <project_vertex>"," #include <logdepthbuf_vertex>"," #include <fog_vertex>","}"].join(`
`),v=["#include <common>","#include <fog_pars_fragment>","#include <logdepthbuf_pars_fragment>","uniform bool negate;","uniform float alphaTest;","uniform float opacity;","uniform sampler2D map;","uniform vec3 color;","in vec2 vUV;","float median(float r, float g, float b) {"," return max(min(r, g), min(max(r, g), b));","}","#define BIG_ENOUGH 0.001","#define MODIFIED_ALPHATEST (0.02 * isBigEnough / BIG_ENOUGH)","void main() {"," vec3 sampleColor = texture(map, vUV).rgb;"," if (negate) { sampleColor = 1.0 - sampleColor; }"," float sigDist = median(sampleColor.r, sampleColor.g, sampleColor.b) - 0.5;"," float alpha = clamp(sigDist / fwidth(sigDist) + 0.5, 0.0, 1.0);"," float dscale = 0.353505;"," vec2 duv = dscale * (dFdx(vUV) + dFdy(vUV));"," float isBigEnough = max(abs(duv.x), abs(duv.y));"," // Do modified alpha test."," if (isBigEnough > BIG_ENOUGH) {"," float ratio = BIG_ENOUGH / isBigEnough;"," alpha = ratio * alpha + (1.0 - ratio) * (sigDist + 0.5);"," }"," // Do modified alpha test."," if (alpha < alphaTest * MODIFIED_ALPHATEST) { discard; return; }"," gl_FragColor = vec4(color.xyz, alpha * opacity);"," #include <logdepthbuf_fragment>"," #include <tonemapping_fragment>"," #include <colorspace_fragment>"," #include <fog_fragment>","}"].join(`
`),D=(0,s.registerShader)("msdf",{schema:{alphaTest:{type:"number",is:"uniform",default:.5},color:{type:"color",is:"uniform",default:"white"},map:{type:"map",is:"uniform"},negate:{type:"boolean",is:"uniform",default:!0},opacity:{type:"number",is:"uniform",default:1}},vertexShader:T,fragmentShader:v,init:function(){return this.uniforms=this.initUniforms(),z.UniformsUtils&&(this.uniforms=z.UniformsUtils.merge([_.UniformsLib.fog,this.uniforms])),this.material=new z.ShaderMaterial({uniforms:this.uniforms,vertexShader:this.vertexShader,fragmentShader:this.fragmentShader,fog:!0}),this.material}})},"./src/shaders/phong.js":(_A,O,d)=>{d.r(O),d.d(O,{Shader:()=>T});var s=d("./src/core/shader.js"),z=d("./node_modules/three/build/three.core.js"),_=d("./src/utils/index.js"),T=(0,s.registerShader)("phong",{schema:{color:{type:"color"},emissive:{type:"color",default:"black"},emissiveIntensity:{default:1},specular:{type:"color",default:"#111111"},transparent:{default:!1},fog:{default:!0},offset:{type:"vec2",default:{x:0,y:0}},repeat:{type:"vec2",default:{x:1,y:1}},src:{type:"map"},envMap:{default:""},sphericalEnvMap:{type:"map"},shininess:{default:30},flatShading:{default:!1},wireframe:{default:!1},wireframeLinewidth:{default:2},combine:{oneOF:["multiply","mix","add"],default:"mix"},reflectivity:{default:.9},refractionRatio:{default:.98},refract:{default:!1},normalMap:{type:"map"},normalScale:{type:"vec2",default:{x:1,y:1}},normalTextureOffset:{type:"vec2"},normalTextureRepeat:{type:"vec2",default:{x:1,y:1}},ambientOcclusionMap:{type:"map"},ambientOcclusionMapIntensity:{default:1},displacementMap:{type:"map"},displacementScale:{default:1},displacementBias:{default:.5},displacementTextureOffset:{type:"vec2"},displacementTextureRepeat:{type:"vec2",default:{x:1,y:1}},bumpMap:{type:"map"},bumpMapScale:{default:1},bumpTextureOffset:{type:"vec2"},bumpTextureRepeat:{type:"vec2",default:{x:1,y:1}}},init:function(D){this.materialData={color:new z.Color,specular:new z.Color,emissive:new z.Color},v(D,this.materialData),this.material=new z.MeshPhongMaterial(this.materialData);var h=this.el.sceneEl;Object.defineProperty(this.material,"envMap",{get:function(){return this._envMap||h.object3D.environment},set:function(p){this._envMap=p}})},update:function(D){this.updateMaterial(D),_.material.updateMap(this,D),_.material.updateDistortionMap("normal",this,D),_.material.updateDistortionMap("displacement",this,D),_.material.updateDistortionMap("ambientOcclusion",this,D),_.material.updateDistortionMap("bump",this,D),_.material.updateEnvMap(this,D)},updateMaterial:function(D){var h;v(D,this.materialData);for(h in this.materialData)this.material[h]=this.materialData[h]}});function v(D,h){switch(h.color.set(D.color),h.specular.set(D.specular),h.emissive.set(D.emissive),h.emissiveIntensity=D.emissiveIntensity,h.fog=D.fog,h.transparent=D.transparent,h.wireframe=D.wireframe,h.wireframeLinewidth=D.wireframeLinewidth,h.shininess=D.shininess,h.flatShading=D.flatShading,h.wireframe=D.wireframe,h.wireframeLinewidth=D.wireframeLinewidth,h.reflectivity=D.reflectivity,h.refractionRatio=D.refractionRatio,D.combine){case"mix":h.combine=z.MixOperation;break;case"multiply":h.combine=z.MultiplyOperation;break;case"add":h.combine=z.AddOperation;break}return D.normalMap&&(h.normalScale=D.normalScale),D.ambientOcclusionMap&&(h.aoMapIntensity=D.ambientOcclusionMapIntensity),D.bumpMap&&(h.bumpScale=D.bumpMapScale),D.displacementMap&&(h.displacementScale=D.displacementScale,h.displacementBias=D.displacementBias),h}},"./src/shaders/sdf.js":(_A,O,d)=>{d.r(O),d.d(O,{Shader:()=>D});var s=d("./src/core/shader.js"),z=d("./node_modules/three/build/three.core.js"),_=d("./node_modules/three/build/three.module.js"),T=["#include <common>","#include <fog_pars_vertex>","#include <logdepthbuf_pars_vertex>","out vec2 vUV;","void main(void) {"," vUV = uv;"," #include <begin_vertex>"," #include <project_vertex>"," #include <logdepthbuf_vertex>"," #include <fog_vertex>","}"].join(`
`),v=["#include <common>","#include <fog_pars_fragment>","#include <logdepthbuf_pars_fragment>","uniform float alphaTest;","uniform float opacity;","uniform sampler2D map;","uniform vec3 color;","in vec2 vUV;","float contour(float width, float value) {"," return smoothstep(0.5 - value, 0.5 + value, width);","}","#define BIG_ENOUGH 0.001","#define MODIFIED_ALPHATEST (0.02 * isBigEnough / BIG_ENOUGH)","void main() {"," vec2 uv = vUV;"," vec4 texColor = texture(map, uv);"," float dist = texColor.a;"," float width = fwidth(dist);"," float alpha = contour(dist, width);"," float dscale = 0.353505;"," vec2 duv = dscale * (dFdx(uv) + dFdy(uv));"," float isBigEnough = max(abs(duv.x), abs(duv.y));"," if (isBigEnough > BIG_ENOUGH) {"," float ratio = BIG_ENOUGH / isBigEnough;"," alpha = ratio * alpha + (1.0 - ratio) * dist;"," }"," if (isBigEnough <= BIG_ENOUGH) {"," vec4 box = vec4 (uv - duv, uv + duv);"," alpha = (alpha + 0.5 * ("," contour(texture(map, box.xy).a, width)"," + contour(texture(map, box.zw).a, width)"," + contour(texture(map, box.xw).a, width)"," + contour(texture(map, box.zy).a, width)"," )) / 3.0;"," }"," if (alpha < alphaTest * MODIFIED_ALPHATEST) { discard; return; }"," gl_FragColor = vec4(color, opacity * alpha);"," #include <logdepthbuf_fragment>"," #include <tonemapping_fragment>"," #include <colorspace_fragment>"," #include <fog_fragment>","}"].join(`
`),D=(0,s.registerShader)("sdf",{schema:{alphaTest:{type:"number",is:"uniform",default:.5},color:{type:"color",is:"uniform",default:"white"},map:{type:"map",is:"uniform"},opacity:{type:"number",is:"uniform",default:1}},vertexShader:T,fragmentShader:v,init:function(){return this.uniforms=this.initUniforms(),z.UniformsUtils&&(this.uniforms=z.UniformsUtils.merge([_.UniformsLib.fog,this.uniforms])),this.material=new z.ShaderMaterial({uniforms:this.uniforms,vertexShader:this.vertexShader,fragmentShader:this.fragmentShader,fog:!0}),this.material}})},"./src/shaders/shadow.js":(_A,O,d)=>{d.r(O),d.d(O,{Shader:()=>_});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/shader.js"),_=(0,z.registerShader)("shadow",{schema:{opacity:{default:.5},transparent:{default:!0},alphaToCoverage:{default:!0}},init:function(T){this.material=new s.ShadowMaterial},update:function(T){this.material.opacity=T.opacity,this.material.alphaToCoverage=T.alphaToCoverage,this.material.transparent=T.transparent}})},"./src/shaders/standard.js":(_A,O,d)=>{d.r(O),d.d(O,{Shader:()=>T});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/shader.js"),_=d("./src/utils/index.js"),T=(0,z.registerShader)("standard",{schema:{ambientOcclusionMap:{type:"map"},ambientOcclusionMapIntensity:{default:1},ambientOcclusionTextureOffset:{type:"vec2"},ambientOcclusionTextureRepeat:{type:"vec2",default:{x:1,y:1}},color:{type:"color"},displacementMap:{type:"map"},displacementScale:{default:1},displacementBias:{default:.5},displacementTextureOffset:{type:"vec2"},displacementTextureRepeat:{type:"vec2",default:{x:1,y:1}},emissive:{type:"color",default:"#000"},emissiveIntensity:{default:1},envMap:{default:""},fog:{default:!0},metalness:{default:0,min:0,max:1},metalnessMap:{type:"map"},metalnessTextureOffset:{type:"vec2"},metalnessTextureRepeat:{type:"vec2",default:{x:1,y:1}},normalMap:{type:"map"},normalScale:{type:"vec2",default:{x:1,y:1}},normalTextureOffset:{type:"vec2"},normalTextureRepeat:{type:"vec2",default:{x:1,y:1}},offset:{type:"vec2",default:{x:0,y:0}},repeat:{type:"vec2",default:{x:1,y:1}},roughness:{default:.5,min:0,max:1},roughnessMap:{type:"map"},roughnessTextureOffset:{type:"vec2"},roughnessTextureRepeat:{type:"vec2",default:{x:1,y:1}},sphericalEnvMap:{type:"map"},src:{type:"map"},wireframe:{default:!1},wireframeLinewidth:{default:2}},init:function(D){this.materialData={color:new s.Color,emissive:new s.Color},v(D,this.materialData),this.material=new s.MeshStandardMaterial(this.materialData)},update:function(D){this.updateMaterial(D),_.material.updateMap(this,D),_.material.updateDistortionMap("normal",this,D),_.material.updateDistortionMap("displacement",this,D),_.material.updateDistortionMap("ambientOcclusion",this,D),_.material.updateDistortionMap("metalness",this,D),_.material.updateDistortionMap("roughness",this,D),_.material.updateEnvMap(this,D)},updateMaterial:function(D){var h,p=this.material;v(D,this.materialData);for(h in this.materialData)p[h]=this.materialData[h]}});function v(D,h){return h.color.set(D.color),h.emissive.set(D.emissive),h.emissiveIntensity=D.emissiveIntensity,h.fog=D.fog,h.metalness=D.metalness,h.roughness=D.roughness,h.wireframe=D.wireframe,h.wireframeLinewidth=D.wireframeLinewidth,D.normalMap&&(h.normalScale=D.normalScale),D.ambientOcclusionMap&&(h.aoMapIntensity=D.ambientOcclusionMapIntensity),D.displacementMap&&(h.displacementScale=D.displacementScale,h.displacementBias=D.displacementBias),h}},"./src/systems/camera.js":(_A,O,d)=>{d.r(O),d.d(O,{System:()=>T});var s=d("./src/constants/index.js"),z=d("./src/core/system.js"),_="data-aframe-default-camera",T=(0,z.registerSystem)("camera",{init:function(){this.activeCameraEl=null,this.render=this.render.bind(this),this.unwrapRender=this.unwrapRender.bind(this),this.wrapRender=this.wrapRender.bind(this),this.initialCameraFound=!1,this.numUserCameras=0,this.numUserCamerasChecked=0,this.setupInitialCamera()},setupInitialCamera:function(){var D,h,p=this.sceneEl,m=this;if(p.camera&&!p.camera.el.getAttribute("camera").spectator){p.emit("cameraready",{cameraEl:p.camera.el});return}if(D=p.querySelectorAll("a-camera, :not(a-mixin)[camera]"),!D.length){this.createDefaultCamera();return}for(this.numUserCameras=D.length,h=0;h<D.length;h++)D[h].addEventListener("object3dset",function(u){u.detail.type==="camera"&&m.checkUserCamera(this)}),D[h].isANode?D[h].load():D[h].addEventListener("nodeready",function(){this.load()})},checkUserCamera:function(D){var h,p=this.el.sceneEl;if(this.numUserCamerasChecked++,!this.initialCameraFound){if(h=D.getAttribute("camera"),!h.active||h.spectator){this.numUserCamerasChecked===this.numUserCameras&&this.createDefaultCamera();return}this.initialCameraFound=!0,p.camera=D.getObject3D("camera"),p.emit("cameraready",{cameraEl:D})}},createDefaultCamera:function(){var D,h=this.sceneEl;D=document.createElement("a-entity"),D.setAttribute("camera",{active:!0}),D.setAttribute("position",{x:0,y:s.DEFAULT_CAMERA_HEIGHT,z:0}),D.setAttribute("wasd-controls",""),D.setAttribute("look-controls",""),D.setAttribute(s.AFRAME_INJECTED,""),D.addEventListener("object3dset",function(p){p.detail.type==="camera"&&(h.camera=p.detail.object,h.emit("cameraready",{cameraEl:D}))}),h.appendChild(D)},disableActiveCamera:function(){var D,h;D=this.sceneEl.querySelectorAll(":not(a-mixin)[camera]"),h=D[D.length-1],h.setAttribute("camera","active",!0)},setActiveCamera:function(D){var h,p,m,u,l=this.activeCameraEl,R=this.sceneEl;if(u=D.getObject3D("camera"),!(!u||D===this.activeCameraEl)){var N=R.querySelector("["+_+"]"),Y=N&&N.querySelector(":not(a-mixin)[camera]");for(D!==Y&&v(R),this.activeCameraEl=D,this.activeCameraEl.play(),R.camera=u,l&&l.setAttribute("camera","active",!1),p=R.querySelectorAll(":not(a-mixin)[camera]"),m=0;m<p.length;m++)h=p[m],!(!h.isEntity||D===h)&&(h.setAttribute("camera","active",!1),h.pause());R.emit("camera-set-active",{cameraEl:D})}},setSpectatorCamera:function(D){var h,p=this.spectatorCameraEl,m=this.sceneEl,u;h=D.getObject3D("camera"),!(!h||D===this.spectatorCameraEl)&&(p&&p.setAttribute("camera","spectator",!1),u=this.spectatorCameraEl=D,m.addEventListener("enter-vr",this.wrapRender),m.addEventListener("exit-vr",this.unwrapRender),u.setAttribute("camera","active",!1),u.play(),m.emit("camera-set-spectator",{cameraEl:D}))},disableSpectatorCamera:function(){this.spectatorCameraEl=void 0},wrapRender:function(){!this.spectatorCameraEl||this.originalRender||(this.originalRender=this.sceneEl.renderer.render,this.sceneEl.renderer.render=this.render)},unwrapRender:function(){this.originalRender&&(this.sceneEl.renderer.render=this.originalRender,this.originalRender=void 0)},render:function(D,h){var p,m=this.sceneEl,u;p=m.renderer.xr.enabled,this.originalRender.call(m.renderer,D,h),!(!this.spectatorCameraEl||m.isMobile||!p)&&(u=this.spectatorCameraEl.components.camera.camera,m.renderer.xr.enabled=!1,this.originalRender.call(m.renderer,D,u),m.renderer.xr.enabled=p)}});function v(D){var h,p=D.camera;p&&(h=D.querySelector("["+_+"]"),h&&D.removeChild(h))}},"./src/systems/geometry.js":(_A,O,d)=>{d.r(O),d.d(O,{System:()=>_});var s=d("./src/core/geometry.js"),z=d("./src/core/system.js"),_=(0,z.registerSystem)("geometry",{init:function(){this.cache={},this.cacheCount={}},clearCache:function(){this.cache={},this.cacheCount={}},getOrCreateGeometry:function(h){var p=this.cache,m,u;return h.skipCache?T(h):(u=this.hash(h),m=p[u],D(this.cacheCount,u),m||(m=T(h),p[u]=m,m))},unuseGeometry:function(h){var p=this.cache,m=this.cacheCount,u,l;h.skipCache||(l=this.hash(h),p[l]&&(v(m,l),!(m[l]>0)&&(u=p[l],u.dispose(),delete p[l],delete m[l])))},hash:function(h){return JSON.stringify(h)}});function T(h){var p=h.primitive,m=s.geometries[p]&&s.geometries[p].Geometry,u=new m;if(!m)throw new Error("Unknown geometry `"+p+"`");return u.init(h),u.geometry}function v(h,p){h[p]--}function D(h,p){h[p]=h[p]===void 0?1:h[p]+1}},"./src/systems/gltf-model.js":(_A,O,d)=>{d.r(O),d.d(O,{System:()=>v});var s=d("./node_modules/three/examples/jsm/loaders/DRACOLoader.js"),z=d("./node_modules/three/examples/jsm/loaders/KTX2Loader.js"),_=d("./src/core/system.js");function T(D){return new Promise(function(h,p){var m=document.createElement("script");document.body.appendChild(m),m.onload=h,m.onerror=p,m.async=!0,m.src=D})}var v=(0,_.registerSystem)("gltf-model",{schema:{dracoDecoderPath:{default:"https://www.gstatic.com/draco/versioned/decoders/1.5.7/"},basisTranscoderPath:{default:""},meshoptDecoderPath:{default:""}},init:function(){this.update()},update:function(){var D=this.data.dracoDecoderPath,h=this.data.basisTranscoderPath,p=this.data.meshoptDecoderPath;!this.dracoLoader&&D&&(this.dracoLoader=new s.DRACOLoader,this.dracoLoader.setDecoderPath(D)),!this.ktx2Loader&&h&&(this.ktx2Loader=new z.KTX2Loader,this.ktx2Loader.setTranscoderPath(h).detectSupport(this.el.renderer)),!this.meshoptDecoder&&p&&(this.meshoptDecoder=T(p).then(function(){return window.MeshoptDecoder.ready}).then(function(){return window.MeshoptDecoder}))},getDRACOLoader:function(){return this.dracoLoader},getKTX2Loader:function(){return this.ktx2Loader},getMeshoptDecoder:function(){return this.meshoptDecoder}})},"./src/systems/index.js":(_A,O,d)=>{d.r(O),d("./src/systems/camera.js"),d("./src/systems/geometry.js"),d("./src/systems/gltf-model.js"),d("./src/systems/light.js"),d("./src/systems/material.js"),d("./src/systems/obb-collider.js"),d("./src/systems/renderer.js"),d("./src/systems/shadow.js"),d("./src/systems/tracked-controls.js"),d("./src/systems/webxr.js")},"./src/systems/light.js":(_A,O,d)=>{d.r(O),d.d(O,{System:()=>T});var s=d("./src/core/system.js"),z=d("./src/constants/index.js"),_="data-aframe-default-light",T=(0,s.registerSystem)("light",{schema:{defaultLightsEnabled:{default:!0}},init:function(){this.defaultLights=!1,this.userDefinedLights=!1,this.sceneEl.addEventListener("loaded",this.setupDefaultLights.bind(this))},registerLight:function(v){v.hasAttribute(_)||(this.removeDefaultLights(),this.userDefinedLights=!0)},removeDefaultLights:function(){var v,D=this.sceneEl;if(this.defaultLights){v=document.querySelectorAll("["+_+"]");for(var h=0;h<v.length;h++)D.removeChild(v[h]);this.defaultLights=!1}},setupDefaultLights:function(){var v=this.sceneEl,D,h;this.userDefinedLights||this.defaultLights||!this.data.defaultLightsEnabled||(D=document.createElement("a-entity"),D.setAttribute("light",{color:"#BBB",type:"ambient"}),D.setAttribute(_,""),D.setAttribute(z.AFRAME_INJECTED,""),v.appendChild(D),h=document.createElement("a-entity"),h.setAttribute("light",{color:"#FFF",intensity:1.884,castShadow:!0}),h.setAttribute("position",{x:-.5,y:1,z:1}),h.setAttribute(_,""),h.setAttribute(z.AFRAME_INJECTED,""),v.appendChild(h),this.defaultLights=!0)}})},"./src/systems/material.js":(_A,O,d)=>{d.r(O),d.d(O,{System:()=>m});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/system.js"),_=d("./src/utils/index.js"),T=d("./src/utils/material.js"),v=_.debug,D=v("components:texture:error"),h=v("components:texture:warn"),p=new s.ImageLoader,m=(0,z.registerSystem)("material",{init:function(){this.materials={},this.sourceCache={}},clearTextureSourceCache:function(){this.sourceCache={}},loadTexture:function(N,Y,G){this.loadTextureSource(N,function(U){var j=(0,T.createCompatibleTexture)(U);(0,T.setTextureProperties)(j,Y),G(j)})},loadTextureSource:function(N,Y){var G=this,x=this.sourceCache,U=this.hash(N);if(x[U]){x[U].then(Y);return}if(N.tagName==="CANVAS"){Z(new s.Source(N));return}Z(new Promise(j));function j(CA,QA){_.srcLoader.validateSrc(N,SA,UA);function SA(TA){G.loadImage(TA,CA)}function UA(TA){G.loadVideo(TA,CA)}}function Z(CA){x[U]=Promise.resolve(CA),x[U].then(Y)}},loadCubeMapTexture:function(N,Y){var G=this,x=0,U=new s.CubeTexture;U.colorSpace=s.SRGBColorSpace;function j(CA){G.loadTextureSource(N[CA],function(QA){U.images[CA]=QA.data,x++,x===6&&(U.needsUpdate=!0,Y(U))})}if(N.length!==6){h("Cube map texture requires exactly 6 sources, got only %s sources",N.length);return}for(var Z=0;Z<N.length;Z++)j(Z)},loadImage:function(N,Y){if(typeof N!="string"){Y(new s.Source(N));return}Y(u(N))},loadVideo:function(N,Y){var G;typeof N!="string"&&(G=N,R(G)),G=G||l(N),Y(new s.Source(G))},hash:function(N){return N.tagName&&(N.id||N.src)||N},registerMaterial:function(N){this.materials[N.uuid]=N},unregisterMaterial:function(N){delete this.materials[N.uuid]}});function u(N){return new Promise(Y);function Y(G,x){p.load(N,U,function(){},function(j){D("`$s` could not be fetched (Error code: %s; Response: %s)",j.status,j.statusText)});function U(j){G(new s.Source(j))}}}function l(N){var Y=document.createElement("video");return Y.setAttribute("playsinline",""),Y.setAttribute("webkit-playsinline",""),Y.autoplay=!0,Y.loop=!0,Y.crossOrigin="anonymous",Y.addEventListener("error",function(){h("`%s` is not a valid video",N)},!0),Y.src=N,Y}function R(N){return N.autoplay=N.hasAttribute("autoplay")&&N.getAttribute("autoplay")!=="false",N.controls=N.hasAttribute("controls")&&N.getAttribute("controls")!=="false",N.getAttribute("loop")==="false"&&N.removeAttribute("loop"),N.getAttribute("preload")==="false"&&(N.preload="none"),N.crossOrigin=N.crossOrigin||"anonymous",N.setAttribute("playsinline",""),N.setAttribute("webkit-playsinline",""),N}},"./src/systems/obb-collider.js":(_A,O,d)=>{d.r(O);var s=d("./src/core/system.js");(0,s.registerSystem)("obb-collider",{schema:{showColliders:{default:!1}},init:function(){this.collisions=[],this.colliderEls=[]},addCollider:function(z){this.colliderEls.push(z),this.data.showColliders?z.components["obb-collider"].showCollider():z.components["obb-collider"].hideCollider(),this.tick=this.detectCollisions},removeCollider:function(z){var _=this.colliderEls,T=_.indexOf(z);z.components["obb-collider"].hideCollider(),T>-1&&_.splice(T,1),_.length===0&&(this.tick=void 0)},registerCollision:function(z,_){var T=this.collisions,v=!1,D=z.obb,h=_.obb,p=z.renderColliderMesh,m=_.renderColliderMesh;p&&p.material.color.set(16711680),m&&m.material.color.set(16711680);for(var u=0;u<T.length;u++)if(T[u].componentA.obb===D&&T[u].componentB.obb===h||T[u].componentA.obb===h&&T[u].componentB.obb===D){v=!0,T[u].detected=!0;break}v||(T.push({componentA:z,componentB:_,detected:!0}),z.el.emit("obbcollisionstarted",{trackedObject3D:z.trackedObject3D,withEl:_.el}),_.el.emit("obbcollisionstarted",{trackedObject3D:_.trackedObject3D,withEl:z.el}))},resetCollisions:function(){for(var z=this.collisions,_=0;_<z.length;_++)z[_].detected=!1},clearCollisions:function(){for(var z=this.collisions,_=[],T,v,D,h,p=0;p<z.length;p++)z[p].detected?_.push(z[p]):(T=z[p].componentA,v=z[p].componentB,D=T.renderColliderMesh,h=v.renderColliderMesh,D&&D.material.color.set(65280),T.el.emit("obbcollisionended",{trackedObject3D:this.trackedObject3D,withEl:v.el}),h&&h.material.color.set(65280),v.el.emit("obbcollisionended",{trackedObject3D:this.trackedObject3D,withEl:T.el}));this.collisions=_},detectCollisions:function(){var z,_,T,v,D=this.colliderEls;if(!(D.length<2)){this.resetCollisions();for(var h=0;h<D.length;h++)if(T=D[h].components["obb-collider"],z=D[h].components["obb-collider"].obb,!(z.halfSize.x===0||z.halfSize.y===0||z.halfSize.z===0))for(var p=h+1;p<D.length;p++)v=D[p].components["obb-collider"],_=v.obb,!(_.halfSize.x===0||_.halfSize.y===0||_.halfSize.z===0)&&z.intersectsOBB(_)&&this.registerCollision(T,v);this.clearCollisions()}}})},"./src/systems/renderer.js":(_A,O,d)=>{d.r(O),d.d(O,{System:()=>h,sortBackToFront:()=>u,sortFrontToBack:()=>p,sortRenderOrderOnly:()=>m});var s=d("./node_modules/three/build/three.module.js"),z=d("./node_modules/three/build/three.core.js"),_=d("./src/core/system.js"),T=d("./src/utils/index.js"),v=T.debug,D=v("components:renderer:warn"),h=(0,_.registerSystem)("renderer",{schema:{antialias:{default:"auto",oneOf:["true","false","auto"]},highRefreshRate:{default:T.device.isOculusBrowser()},logarithmicDepthBuffer:{default:"auto",oneOf:["true","false","auto"]},maxCanvasWidth:{default:-1},maxCanvasHeight:{default:-1},multiviewStereo:{default:!1},exposure:{default:1,if:{toneMapping:["ACESFilmic","linear","reinhard","cineon","AgX","neutral"]}},toneMapping:{default:"no",oneOf:["no","ACESFilmic","linear","reinhard","cineon","AgX","neutral"]},precision:{default:"high",oneOf:["high","medium","low"]},anisotropy:{default:1},sortTransparentObjects:{default:!1},colorManagement:{default:!0},alpha:{default:!0},stencil:{default:!1},foveationLevel:{default:1}},init:function(){var l=this.data,R=this.el,N=this.data.toneMapping.charAt(0).toUpperCase()+this.data.toneMapping.slice(1),Y=R.renderer;Y.toneMapping=s[N+"ToneMapping"],z.Texture.DEFAULT_ANISOTROPY=l.anisotropy,z.ColorManagement.enabled=l.colorManagement,Y.outputColorSpace=l.colorManagement?z.SRGBColorSpace:z.LinearSRGBColorSpace,R.hasAttribute("antialias")&&D('Component `antialias` is deprecated. Use `renderer="antialias: true"` instead.'),R.hasAttribute("logarithmicDepthBuffer")&&D('Component `logarithmicDepthBuffer` is deprecated. Use `renderer="logarithmicDepthBuffer: true"` instead.'),Y.sortObjects=!0,Y.setOpaqueSort(p)},update:function(){var l=this.data,R=this.el,N=R.renderer,Y=this.data.toneMapping.charAt(0).toUpperCase()+this.data.toneMapping.slice(1);N.toneMapping=s[Y+"ToneMapping"],N.toneMappingExposure=l.exposure,N.xr.setFoveation(l.foveationLevel),l.sortObjects&&D('`sortObjects` property is deprecated. Use `renderer="sortTransparentObjects: true"` instead.'),l.sortTransparentObjects?N.setTransparentSort(u):N.setTransparentSort(m)},applyColorCorrection:function(l){!this.data.colorManagement||!l||l.isTexture&&l.colorSpace!==z.SRGBColorSpace&&(l.colorSpace=z.SRGBColorSpace,l.needsUpdate=!0)},setWebXRFrameRate:function(l){var R=this.data,N=l.supportedFrameRates;if(N&&l.updateTargetFrameRate){var Y;N.includes(90)?Y=R.highRefreshRate?90:72:Y=R.highRefreshRate?72:60,l.updateTargetFrameRate(Y).catch(function(G){console.warn("failed to set target frame rate of "+Y+". Error info: "+G)})}}});function p(l,R){return l.groupOrder!==R.groupOrder?l.groupOrder-R.groupOrder:l.renderOrder!==R.renderOrder?l.renderOrder-R.renderOrder:l.z-R.z}function m(l,R){return l.groupOrder!==R.groupOrder?l.groupOrder-R.groupOrder:l.renderOrder-R.renderOrder}function u(l,R){return l.groupOrder!==R.groupOrder?l.groupOrder-R.groupOrder:l.renderOrder!==R.renderOrder?l.renderOrder-R.renderOrder:R.z-l.z}},"./src/systems/shadow.js":(_A,O,d)=>{d.r(O),d.d(O,{System:()=>T});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/core/system.js"),_={basic:s.BasicShadowMap,pcf:s.PCFShadowMap,pcfsoft:s.PCFSoftShadowMap},T=(0,z.registerSystem)("shadow",{schema:{enabled:{default:!0},autoUpdate:{default:!0},type:{default:"pcf",oneOf:["basic","pcf","pcfsoft"]}},init:function(){var D=this.sceneEl,h=this.data;this.shadowMapEnabled=!1,D.renderer.shadowMap.type=_[h.type],D.renderer.shadowMap.autoUpdate=h.autoUpdate},update:function(D){D.enabled!==this.data.enabled&&this.setShadowMapEnabled(this.shadowMapEnabled)},setShadowMapEnabled:function(D){var h=this.sceneEl,p=this.sceneEl.renderer;this.shadowMapEnabled=D;var m=this.data.enabled&&this.shadowMapEnabled;p&&m!==p.shadowMap.enabled&&(p.shadowMap.enabled=m,v(h))}});function v(D){D.hasLoaded&&D.object3D.traverse(function(h){if(h.material)for(var p=Array.isArray(h.material)?h.material:[h.material],m=0;m<p.length;m++)p[m].needsUpdate=!0})}},"./src/systems/tracked-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{System:()=>z});var s=d("./src/core/system.js"),z=(0,s.registerSystem)("tracked-controls",{init:function(){this.controllers=[],this.onInputSourcesChange=this.onInputSourcesChange.bind(this),this.onEnterVR=this.onEnterVR.bind(this),this.el.addEventListener("enter-vr",this.onEnterVR),this.onExitVR=this.onExitVR.bind(this),this.el.addEventListener("exit-vr",this.onExitVR)},onEnterVR:function(){var _=this.el.xrSession;_&&this.el.xrSession.addEventListener("inputsourceschange",this.onInputSourcesChange)},onExitVR:function(){this.referenceSpace=void 0,this.controllers=[],this.el.emit("controllersupdated",void 0,!1)},onInputSourcesChange:function(){var _=this,T=this.el.xrSession,v=this.el.sceneEl.systems.webxr.sessionReferenceSpaceType;T.requestReferenceSpace(v).then(function(D){_.referenceSpace=D}).catch(function(D){throw _.el.sceneEl.systems.webxr.warnIfFeatureNotRequested(v,'tracked-controls uses reference space "'+v+'".'),D}),this.controllers=T.inputSources,this.el.emit("controllersupdated",void 0,!1)}})},"./src/systems/webxr.js":(_A,O,d)=>{d.r(O),d.d(O,{System:()=>T});var s=d("./src/core/system.js"),z=d("./src/utils/index.js"),_=z.debug("systems:webxr:warn"),T=(0,s.registerSystem)("webxr",{schema:{referenceSpaceType:{type:"string",default:"local-floor"},requiredFeatures:{type:"array",default:["local-floor"]},optionalFeatures:{type:"array",default:["bounded-floor"]},overlayElement:{type:"selector"}},update:function(){var v=this.data;this.sessionConfiguration={requiredFeatures:v.requiredFeatures,optionalFeatures:v.optionalFeatures},this.sessionReferenceSpaceType=v.referenceSpaceType,v.overlayElement&&(v.overlayElement.classList.remove("a-dom-overlay"),v.optionalFeatures.includes("dom-overlay")||(v.optionalFeatures.push("dom-overlay"),this.el.setAttribute("webxr",v)),this.warnIfFeatureNotRequested("dom-overlay"),this.sessionConfiguration.domOverlay={root:v.overlayElement},v.overlayElement.classList.add("a-dom-overlay"))},wasFeatureRequested:function(v){return!!(v==="viewer"||v==="local"||this.sessionConfiguration.requiredFeatures.includes(v)||this.sessionConfiguration.optionalFeatures.includes(v))},warnIfFeatureNotRequested:function(v,D){if(!this.wasFeatureRequested(v)){var h='Please add the feature "'+v+`" to a-scene's webxr system options in requiredFeatures/optionalFeatures.`;_((D?D+" ":"")+h)}}})},"./src/utils/coordinates.js":(_A,O,d)=>{d.r(O),d.d(O,{equals:()=>m,isCoordinate:()=>l,isCoordinates:()=>u,parse:()=>h,regex:()=>v,stringify:()=>p,toVector3:()=>N});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/utils/debug.js"),_=(0,z.default)("utils:coordinates:warn"),T=["x","y","z","w"],v=/^\s*((-?\d*\.{0,1}\d+(e-?\d+)?)\s+){2,3}(-?\d*\.{0,1}\d+(e-?\d+)?)\s*$/,D=/\s+/g;function h(Y,G,x){var U,j,Z,CA,QA=x&&typeof x=="object"?x:{},SA,UA,TA,pA;if(Y&&Y instanceof Object)return SA=Y.x===void 0?G&&G.x:Y.x,UA=Y.y===void 0?G&&G.y:Y.y,TA=Y.z===void 0?G&&G.z:Y.z,pA=Y.w===void 0?G&&G.w:Y.w,SA!=null&&(QA.x=R(SA)),UA!=null&&(QA.y=R(UA)),TA!=null&&(QA.z=R(TA)),pA!=null&&(QA.w=R(pA)),QA;if(Y==null)return typeof G=="object"?Object.assign(QA,G):G;for(U=Y.trim().split(D),CA=0;CA<T.length;CA++)if(Z=T[CA],U[CA])QA[Z]=parseFloat(U[CA],10);else{if(j=G&&G[Z],j===void 0)continue;QA[Z]=R(j)}return QA}function p(Y){var G;return typeof Y!="object"?Y:(G=Y.x+" "+Y.y,Y.z!=null&&(G+=" "+Y.z),Y.w!=null&&(G+=" "+Y.w),G)}function m(Y,G){return typeof Y!="object"||typeof G!="object"?Y===G:Y.x===G.x&&Y.y===G.y&&Y.z===G.z&&Y.w===G.w}function u(Y){return v.test(Y)}function l(Y){return _("`AFRAME.utils.isCoordinate` has been renamed to `AFRAME.utils.isCoordinates`"),u(Y)}function R(Y){return Y!=null&&Y.constructor===String?parseFloat(Y,10):Y}function N(Y){return new s.Vector3(Y.x,Y.y,Y.z)}},"./src/utils/debug.js":(_A,O,d)=>{d.r(O),d.d(O,{default:()=>m});var s=d("./node_modules/debug/src/browser.js"),z=d.n(s),_={colors:{debug:"gray",error:"red",info:"gray",warn:"orange"}};z().formatArgs=T;function T(u){if(u[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+u[0]+(this.useColors?"%c ":" "),!!this.useColors){this.color=D(this.namespace);var l="color: "+this.color;u.splice(1,0,l,"color: inherit");var R=0,N=0;u[0].replace(/%[a-zA-Z%]/g,function(Y){Y!=="%%"&&(R++,Y==="%c"&&(N=R))}),u.splice(N,0,l)}}function v(u){var l=u.split(":");return l[l.length-1]}function D(u){var l=v(u),R=_.colors&&_.colors[l];return R||null}function h(){try{return window.localStorage}catch{}}var p=h();p&&(parseInt(p.logs,10)||p.logs==="true")?z().enable("*"):z().enable("*:error,*:info,*:warn");const m=z()},"./src/utils/device.js":(_A,O,d)=>{d.r(O),d.d(O,{checkARSupport:()=>m,checkHeadsetConnected:()=>p,checkVRSupport:()=>u,isAppleVisionPro:()=>Y,isBrowserEnvironment:()=>SA,isFirefoxReality:()=>j,isIOS:()=>G,isIpad:()=>N,isLandscape:()=>QA,isMobile:()=>l,isMobileDeviceRequestingDesktopSite:()=>x,isMobileVR:()=>Z,isNodeEnvironment:()=>UA,isOculusBrowser:()=>U,isR7:()=>CA,isTablet:()=>R,isWebXRAvailable:()=>v});var s=d("./src/utils/debug.js"),z=(0,s.default)("device:error"),_=!1,T=!1,v=navigator.xr!==void 0;if(v){var D=function(){var TA=document.querySelector("a-scene");if(!TA){window.addEventListener("DOMContentLoaded",D);return}TA.hasLoaded?TA.components["xr-mode-ui"].updateEnterInterfaces():TA.addEventListener("loaded",D)},h=function(TA){z("WebXR session support error: "+TA.message)};navigator.xr.isSessionSupported?(navigator.xr.isSessionSupported("immersive-vr").then(function(TA){_=TA,D()}).catch(h),navigator.xr.isSessionSupported("immersive-ar").then(function(TA){T=TA,D()}).catch(function(){})):navigator.xr.supportsSession?(navigator.xr.supportsSession("immersive-vr").then(function(){_=!0,D()}).catch(h),navigator.xr.supportsSession("immersive-ar").then(function(){T=!0,D()}).catch(function(){})):z("WebXR has neither isSessionSupported or supportsSession?!")}function p(){return _||T}function m(){return T}function u(){return _}var l=function(){var TA=!1;return function(pA){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(pA)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(pA.substr(0,4)))&&(TA=!0),(G()||R()||CA())&&(TA=!0),Z()&&(TA=!1)}(window.navigator.userAgent||window.navigator.vendor||window.opera),function(){return TA}}();function R(TA){var pA=TA||window.navigator.userAgent,hA=/Nexus (7|9)|xoom|sch-i800|playbook|tablet|kindle/i.test(pA);return hA||N()}function N(TA,pA,hA){var uA=TA||window.navigator.userAgent,lA=pA||window.navigator.platform,NA=hA||window.navigator.maxTouchPoints||0;return(lA==="iPad"||lA==="MacIntel")&&NA>0&&/Macintosh|Intel|iPad|ipad/i.test(uA)&&!window.MSStream}function Y(){var TA=navigator.userAgent.includes("Macintosh"),pA=navigator.maxTouchPoints===5;return TA&&pA&&v}function G(){return/iPad|iPhone|iPod/.test(window.navigator.platform)}function x(){return!l()&&!Z()&&window.orientation!==void 0}function U(){return/(OculusBrowser)/i.test(window.navigator.userAgent)}function j(){return/(Mobile VR)/i.test(window.navigator.userAgent)}function Z(){return U()||j()||Y()}function CA(){return/R7 Build/.test(window.navigator.userAgent)}function QA(){var TA=window.orientation;return CA()&&(TA+=90),TA===90||TA===-90}var SA=typeof process>"u"||process.browser===!0,UA=!SA},"./src/utils/entity.js":(_A,O,d)=>{d.r(O),d.d(O,{getComponentProperty:()=>_,getComponentPropertyPath:()=>z,setComponentProperty:()=>T});var s=d("./src/utils/split.js");function z(v,D){D=D||".";var h=(0,s.split)(v,D);return h.length===1?h[0]:h}function _(v,D,h){var p;return h=h||".",D.indexOf(h)!==-1?(p=z(D,h),p.constructor===String?v.getAttribute(p):v.getAttribute(p[0])[p[1]]):v.getAttribute(D)}function T(v,D,h,p){var m;if(p=p||".",D.indexOf(p)!==-1){m=z(D,p),m.constructor===String?v.setAttribute(m,h):v.setAttribute(m[0],m[1],h);return}v.setAttribute(D,h)}},"./src/utils/forceCanvasResizeSafariMobile.js":(_A,O,d)=>{d.r(O),d.d(O,{default:()=>s});function s(z){var _=z.style.width,T=z.style.height;z.style.width=parseInt(_,10)+1+"px",z.style.height=parseInt(T,10)+1+"px",setTimeout(function(){z.style.width=_,z.style.height=T},200)}},"./src/utils/index.js":(_A,O,d)=>{d.r(O),d.d(O,{bind:()=>G,checkHeadsetConnected:()=>x,clone:()=>pA,coordinates:()=>D,debounce:()=>SA,debug:()=>s.default,deepEqual:()=>hA,device:()=>T,diff:()=>uA,entity:()=>h,extend:()=>UA,extendDeep:()=>TA,findAllScenes:()=>Oe,forceCanvasResizeSafariMobile:()=>p.default,getElData:()=>HA,getUrlParameter:()=>pe,isIOS:()=>U,isIframed:()=>He,isMobile:()=>j,material:()=>m,objectPool:()=>v,shouldCaptureKeyEvent:()=>lA,split:()=>u.split,splitString:()=>NA,srcLoader:()=>N,styleParser:()=>l,throttle:()=>Z,throttleLeadingAndTrailing:()=>CA,throttleTick:()=>QA,trackedControls:()=>R});var s=d("./src/utils/debug.js"),z=d("./node_modules/deep-assign/index.js"),_=d.n(z),T=d("./src/utils/device.js"),v=d("./src/utils/object-pool.js"),D=d("./src/utils/coordinates.js"),h=d("./src/utils/entity.js"),p=d("./src/utils/forceCanvasResizeSafariMobile.js"),m=d("./src/utils/material.js"),u=d("./src/utils/split.js"),l=d("./src/utils/styleParser.js"),R=d("./src/utils/tracked-controls.js"),N=d("./src/utils/src-loader.js"),Y=(0,s.default)("utils:warn");function G(ye){return ye.bind.apply(ye,Array.prototype.slice.call(arguments,1))}function x(){return Y("`utils.checkHeadsetConnected` has moved to `utils.device.checkHeadsetConnected`"),T.checkHeadsetConnected(arguments)}function U(){return Y("`utils.isIOS` has moved to `utils.device.isIOS`"),T.isIOS(arguments)}function j(){return Y("`utils.isMobile has moved to `utils.device.isMobile`"),T.isMobile(arguments)}function Z(ye,Ye,Et){var ct;return Et&&(ye=ye.bind(Et)),function(){var q=Date.now(),gA=typeof ct>"u"?Ye:q-ct;(typeof ct>"u"||gA>=Ye)&&(ct=q,ye.apply(null,arguments))}}function CA(ye,Ye,Et){var ct,q;Et&&(ye=ye.bind(Et));var gA,yA=function(){ct=Date.now(),ye.apply(this,gA),q=void 0};return function(){var ge=Date.now(),le=typeof ct>"u"?Ye:ge-ct;le>=Ye?(clearTimeout(q),q=void 0,ct=ge,ye.apply(null,arguments)):(q=q||setTimeout(yA,Ye-le),gA=arguments)}}function QA(ye,Ye,Et){var ct;return Et&&(ye=ye.bind(Et)),function(q,gA){var yA=typeof ct>"u"?gA:q-ct;(typeof ct>"u"||yA>=Ye)&&(ct=q,ye(q,yA))}}function SA(ye,Ye,Et){var ct;return function(){var q=this,gA=arguments,yA=function(){ct=null,Et||ye.apply(q,gA)},ge=Et&&!ct;clearTimeout(ct),ct=setTimeout(yA,Ye),ge&&ye.apply(q,gA)}}var UA=Object.assign,TA=_();function pA(ye){return JSON.parse(JSON.stringify(ye))}var hA=function(){var ye=v.createPool(function(){return[]});return function(Ye,Et){var ct,q,gA,yA,ge,le;if(Ye===void 0||Et===void 0||Ye===null||Et===null||!(Ye&&Et&&Ye.constructor===Object&&Et.constructor===Object||Ye.constructor===Array&&Et.constructor===Array))return Ye===Et;q=ye.use(),gA=ye.use(),q.length=0,gA.length=0;for(ct in Ye)q.push(ct);for(ct in Et)gA.push(ct);if(q.length!==gA.length)return ye.recycle(q),ye.recycle(gA),!1;for(yA=0;yA<q.length;++yA)if(ge=Ye[q[yA]],le=Et[q[yA]],typeof ge=="object"||typeof le=="object"||Array.isArray(ge)&&Array.isArray(le)){if(ge===le)continue;if(!hA(ge,le))return ye.recycle(q),ye.recycle(gA),!1}else if(ge!==le)return ye.recycle(q),ye.recycle(gA),!1;return ye.recycle(q),ye.recycle(gA),!0}}(),uA=function(){var ye=[];return function(Ye,Et,ct){var q,gA,yA,ge,le,Qt,Ct;ge=ct||{},ye.length=0;for(le in Ye)ye.push(le);if(!Et)return ge;for(yA in Et)ye.indexOf(yA)===-1&&ye.push(yA);for(Qt=0;Qt<ye.length;Qt++)le=ye[Qt],q=Ye[le],gA=Et[le],Ct=q&&gA&&q.constructor===Object&&gA.constructor===Object,(Ct&&!hA(q,gA)||!Ct&&q!==gA)&&(ge[le]=gA);return ge}}();function lA(ye){return ye.metaKey?!1:document.activeElement===document.body}function NA(ye,Ye){typeof Ye>"u"&&(Ye=" ");var Et=new RegExp(Ye,"g");return ye=(ye||"").replace(Et,Ye),ye.split(Ye)}function HA(ye,Ye){Ye=Ye||{};var Et={};Object.keys(Ye).forEach(ct);function ct(q){ye.hasAttribute(q)&&(Et[q]=ye.getAttribute(q))}return Et}function pe(ye){ye=ye.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var Ye=new RegExp("[\\?&]"+ye+"=([^&#]*)"),Et=Ye.exec(location.search);return Et===null?"":decodeURIComponent(Et[1].replace(/\+/g," "))}function He(){return window.top!==window.self}function Oe(ye){for(var Ye=[],Et=ye.getElementsByTagName("*"),ct=0,q=Et.length;ct<q;ct++)Et[ct].isScene&&Ye.push(Et[ct]);return Ye}},"./src/utils/ios-orientationchange-blank-bug.js":(_A,O,d)=>{d.r(O);var s=d("./src/utils/device.js");(0,s.isIOS)()&&window.addEventListener("orientationchange",function(){document.documentElement.style.height="initial",setTimeout(function(){document.documentElement.style.height="100%",setTimeout(function(){window.scrollTo(0,1)},500)},500)})},"./src/utils/material.js":(_A,O,d)=>{d.r(O),d.d(O,{createCompatibleTexture:()=>Y,handleTextureEvents:()=>R,isCompatibleTexture:()=>N,setTextureProperties:()=>D,updateDistortionMap:()=>m,updateEnvMap:()=>l,updateMap:()=>p,updateMapMaterialFromData:()=>h});var s=d("./node_modules/three/build/three.core.js"),z=d("./src/utils/src-loader.js"),_=d("./src/utils/debug.js"),T=(0,_.default)("utils:material:warn"),v=new Set(["emissiveMap","envMap","map","specularMap"]);function D(G,x){var U=x.offset||{x:0,y:0},j=x.repeat||{x:1,y:1},Z=x.npot||!1,CA=x.anisotropy||s.Texture.DEFAULT_ANISOTROPY,QA=G.wrapS,SA=G.wrapT,UA=G.magFilter,TA=G.minFilter;Z&&(QA=s.ClampToEdgeWrapping,SA=s.ClampToEdgeWrapping,UA=s.LinearFilter,TA=s.LinearFilter),(j.x!==1||j.y!==1)&&(QA=s.RepeatWrapping,SA=s.RepeatWrapping),G.offset.set(U.x,U.y),G.repeat.set(j.x,j.y),(G.wrapS!==QA||G.wrapT!==SA||G.magFilter!==UA||G.minFilter!==TA||G.anisotropy!==CA)&&(G.wrapS=QA,G.wrapT=SA,G.magFilter=UA,G.minFilter=TA,G.anisotropy=CA,G.needsUpdate=!0)}function h(G,x,U,j){var Z=U.el,CA=U.material,QA=Z.sceneEl.systems.renderer,SA=j[x];if(U.materialSrcs||(U.materialSrcs={}),!SA){delete U.materialSrcs[G],TA(null);return}if(SA===U.materialSrcs[G]&&CA[G]){D(CA[G],j);return}U.materialSrcs[G]=SA,SA instanceof s.Texture?TA(SA):Z.sceneEl.systems.material.loadTextureSource(SA,UA);function UA(pA){if(U.materialSrcs[G]===SA){var hA=CA[G];hA&&(pA===null||!N(hA,pA))&&(hA=null),!hA&&pA&&(hA=Y(pA)),hA&&(hA.source!==pA&&(hA.source=pA,hA.needsUpdate=!0),v.has(G)&&QA.applyColorCorrection(hA),D(hA,j)),TA(hA)}}function TA(pA){CA[G]!==pA&&(CA[G]&&CA[G].dispose(),CA[G]=pA,CA.needsUpdate=!0,R(Z,pA))}}function p(G,x){return h("map","src",G,x)}function m(G,x,U){var j=G;G==="ambientOcclusion"&&(j="ao");var Z={};return Z.src=U[G+"Map"],Z.offset=U[G+"TextureOffset"],Z.repeat=U[G+"TextureRepeat"],Z.wrap=U[G+"TextureWrap"],h(j+"Map","src",x,Z)}var u={};function l(G,x){var U=G.material,j=G.el,Z="envMap",CA=x.envMap,QA=x.sphericalEnvMap,SA=x.refract;if(QA&&(CA=QA,T("`sphericalEnvMap` property is deprecated, using spherical map as equirectangular map instead. Use `envMap` property with a CubeMap or Equirectangular image instead.")),G.materialSrcs||(G.materialSrcs={}),!CA){delete G.materialSrcs[Z],U.envMap=null,U.needsUpdate=!0;return}if(G.materialSrcs[Z]=CA,u[CA]){u[CA].then(UA);return}u[CA]=new Promise(function(TA){z.validateEnvMapSrc(CA,function(hA){j.sceneEl.systems.material.loadCubeMapTexture(hA,function(uA){uA.mapping=SA?s.CubeRefractionMapping:s.CubeReflectionMapping,UA(uA),TA(uA)})},function(hA){j.sceneEl.systems.material.loadTexture(hA,{src:hA},function(uA){uA.mapping=SA?s.EquirectangularRefractionMapping:s.EquirectangularReflectionMapping,UA(uA),TA(uA)})})});function UA(TA){G.materialSrcs[Z]===CA&&(U.envMap=TA,U.needsUpdate=!0,R(j,TA))}}function R(G,x){if(!x||(G.emit("materialtextureloaded",{src:x.image,texture:x}),!x.image||x.image.tagName!=="VIDEO"))return;x.image.addEventListener("loadeddata",U),x.image.addEventListener("ended",j);function U(){G.emit("materialvideoloadeddata",{src:x.image,texture:x})}function j(){G.emit("materialvideoended",{src:x.image,texture:x})}x.addEventListener("dispose",function(){x.image.removeEventListener("loadeddata",U),x.image.removeEventListener("ended",j)})}function N(G,x){return G.source!==x?!1:x.data instanceof HTMLCanvasElement?G.isCanvasTexture:x.data instanceof HTMLVideoElement?G.isVideoTexture:G.isTexture&&!G.isCanvasTexture&&!G.isVideoTexture}function Y(G){var x;return G.data instanceof HTMLCanvasElement?x=new s.CanvasTexture:G.data instanceof HTMLVideoElement?x=new s.VideoTexture(G.data):x=new s.Texture,x.source=G,x.needsUpdate=!0,x}},"./src/utils/math.js":(_A,O,d)=>{d.r(O),d.d(O,{distanceOfPointFromPlane:()=>s,nearestPointInPlane:()=>z});function s(_,T,v){var D=T.dot(_);return(D-T.dot(v))/T.length()}function z(_,T,v,D){var h=s(_,T,v);return D.copy(T),D.multiplyScalar(h),D.add(v),D}},"./src/utils/object-pool.js":(_A,O,d)=>{d.r(O),d.d(O,{clearObject:()=>T,createPool:()=>_,removeUnusedKeys:()=>v});var s=Object.freeze(Object.create(null));function z(){return{}}function _(D){var h=[],p=null;D=D||z;function m(){var N;return(p===null||p===h.length)&&l(h.length||5),N=h[p],h[p++]=s,T(N),N}function u(N){if(N instanceof Object){if(p===null||p===-1){h[h.length]=N;return}h[--p]=N}}function l(N){var Y,G;if(N=N===void 0?h.length:N,N>0&&p==null&&(p=0),N>0)for(Y=h.length,h.length+=Number(N),G=Y;G<h.length;G++)h[G]=D();return h.length}function R(){return h.length}return{grow:l,pool:h,recycle:u,size:R,use:m}}function T(D){var h;if(!(!D||D.constructor!==Object))for(h in D)D[h]=void 0}function v(D,h){var p;if(!(!D||D.constructor!==Object))for(p in D)p in h||delete D[p]}},"./src/utils/split.js":(_A,O,d)=>{d.r(O),d.d(O,{split:()=>s});var s=function(){var z={};return function(_,T){return T in z||(z[T]={}),_ in z[T]||(z[T][_]=_.split(T)),z[T][_]}}()},"./src/utils/src-loader.js":(_A,O,d)=>{d.r(O),d.d(O,{parseUrl:()=>D,validateCubemapSrc:()=>v,validateEnvMapSrc:()=>T,validateSrc:()=>_});var s=d("./src/utils/debug.js"),z=(0,s.default)("utils:src-loader:warn");function _(u,l,R){h(u,function(Y){if(Y){l(u);return}R(u)})}function T(u,l,R){var N,Y="",G,x,U=[];if(typeof u=="string"){let Z=function(CA){U.push(CA),U.length===6&&l(U)};for(G=0;G<5;G++)Y+="(url\\((?:[^\\)]+)\\),\\s*)";if(Y+="(url\\((?:[^\\)]+)\\)\\s*)",x=u.match(new RegExp(Y)),x){for(G=1;G<7;G++)_(D(x[G]),Z);return}if(!u.startsWith("#")){var j=D(u);_(j||u,R);return}}if(u.tagName?N=u:N=m(u),!!N){if(N.tagName==="A-CUBEMAP"&&N.srcs)return l(N.srcs);if(N.tagName==="IMG")return R(N);z('Selector "%s" does not point to <a-cubemap> or <img>',u)}}function v(u,l){return T(u,l,function(){z("Expected cubemap but got image")})}function D(u){var l=u.match(/url\((.+)\)/);if(l)return l[1]}function h(u,l){var R;if(u.tagName){l(u.tagName==="IMG");return}R=new XMLHttpRequest,R.open("HEAD",u),R.addEventListener("load",function(N){var Y;R.status>=200&&R.status<300?(Y=R.getResponseHeader("Content-Type"),Y==null?p(u,l):Y.startsWith("image")?l(!0):l(!1)):p(u,l),R.abort()}),R.send()}function p(u,l){var R=new Image;R.addEventListener("load",N);function N(){l(!0)}R.addEventListener("error",Y);function Y(){l(!1)}R.src=u}function m(u){try{var l=document.querySelector(u);return l||z('No element was found matching the selector: "%s"',u),l}catch{z('"%s" is not a valid selector',u);return}}},"./src/utils/styleParser.js":(_A,O,d)=>{d.r(O),d.d(O,{parse:()=>z,stringify:()=>_,toCamelCase:()=>T});var s=/-([a-z])/g;function z(m,u){var l;return typeof m!="string"||(l=D(m,u),l[""])?m:l}function _(m){return typeof m=="string"?m:h(m)}function T(m){return m.replace(s,p)}var v=function(){var m=[],u=/url\([^)]+$/;return function(R){var N="",Y,G=0,x=";";for(m.length=0;G<R.length;){if(Y=R.indexOf(x,G),Y===-1&&(Y=R.length),N+=R.substring(G,Y),u.test(N)){N+=";",G=Y+1;continue}m.push(N.trim()),N="",G=Y+1}return m}}();function D(m,u){var l,R,N,Y,G,x;for(u=u||{},l=v(m),R=0;R<l.length;R++)N=l[R],N&&(Y=N.indexOf(":"),G=N.substr(0,Y).trim(),x=N.substr(Y+1).trim(),u[T(G)]=x);return u}function h(m){var u,l=0,R=0,N="";for(u in m)l++;for(u in m)N+=u+": "+m[u],R<l-1&&(N+="; "),R++;return N}function p(m){return m[1].toUpperCase()}},"./src/utils/tracked-controls.js":(_A,O,d)=>{d.r(O),d.d(O,{checkControllerPresentAndSetup:()=>z,emitIfAxesChanged:()=>v,findMatchingControllerWebXR:()=>T,isControllerPresentWebXR:()=>_,onButtonEvent:()=>D});var s=["x","y","z","w"];function z(h,p,m){var u=h.el,l,R=_,N;if(l=R(h,p,m),N=!!l,N===h.controllerPresent)return N;h.controllerPresent=N,N?(h.addEventListeners(),h.injectTrackedControls(l),u.emit("controllerconnected",{name:h.name,component:h})):(h.removeEventListeners(),u.emit("controllerdisconnected",{name:h.name,component:h}))}function _(h,p,m){var u,l=h.el.sceneEl,R=l&&l.systems["tracked-controls"];return!R||(u=R.controllers,!u||!u.length)?!1:T(u,p,m.hand,m.index,m.iterateControllerProfiles,m.handTracking)}function T(h,p,m,u,l,R){var N,Y,G,x=!1,U,j;for(N=0;N<h.length;N++){if(G=h[N],j=G.profiles,R)x=G.hand;else if(l)for(Y=0;Y<j.length&&(x=j[Y].startsWith(p),!x);Y++);else x=j.length>0&&j[0].startsWith(p);if(x){if(U=G.handedness==="right"||G.handedness==="left",U){if(G.handedness===m)return h[N]}else if(N===u)return h[N]}}}function v(h,p,m){var u,l,R,N,Y;for(l in p){for(u=p[l],R=!1,Y=0;Y<u.length;Y++)m.detail.changed[u[Y]]&&(R=!0);if(R){for(N={},Y=0;Y<u.length;Y++)N[s[Y]]=m.detail.axis[u[Y]];h.el.emit(l+"moved",N)}}}function D(h,p,m,u){var l=u?m.mapping[u]:m.mapping,R=l.buttons[h];m.el.emit(R+p),m.updateModel&&m.updateModel(R,p)}},"./vendor/DeviceOrientationControls.js":(_A,O,d)=>{d.r(O),d.d(O,{DeviceOrientationControls:()=>s});var s=function(z){var _=this;this.object=z,this.object.rotation.reorder("YXZ"),this.enabled=!0,this.deviceOrientation={},this.screenOrientation=0,this.alphaOffset=0;var T=function(h){_.deviceOrientation=h},v=function(){_.screenOrientation=window.orientation||0},D=function(){var h=new THREE.Vector3(0,0,1),p=new THREE.Euler,m=new THREE.Quaternion,u=new THREE.Quaternion(-Math.sqrt(.5),0,0,Math.sqrt(.5));return function(l,R,N,Y,G){p.set(N,R,-Y,"YXZ"),l.setFromEuler(p),l.multiply(u),l.multiply(m.setFromAxisAngle(h,-G))}}();this.connect=function(){v(),window.addEventListener("orientationchange",v,!1),window.addEventListener("deviceorientation",T,!1),_.enabled=!0},this.disconnect=function(){window.removeEventListener("orientationchange",v,!1),window.removeEventListener("deviceorientation",T,!1),_.enabled=!1},this.update=function(){if(_.enabled!==!1){var h=_.deviceOrientation;if(h){var p=h.alpha?THREE.MathUtils.degToRad(h.alpha)+_.alphaOffset:0,m=h.beta?THREE.MathUtils.degToRad(h.beta):0,u=h.gamma?THREE.MathUtils.degToRad(h.gamma):0,l=_.screenOrientation?THREE.MathUtils.degToRad(_.screenOrientation):0;D(_.object.quaternion,p,m,u,l)}}},this.dispose=function(){_.disconnect()},this.connect()}},"./vendor/rStats.extras.js":_A=>{window.glStats=function(){var O=null,d=0,s=0,z=0,_=0,T=0,v=0,D=0;function h(G,x){return function(){x.apply(this,arguments),G.apply(this,arguments)}}WebGLRenderingContext.prototype.drawArrays=h(WebGLRenderingContext.prototype.drawArrays,function(){d++,arguments[0]==this.POINTS?v+=arguments[2]:T+=arguments[2]}),WebGLRenderingContext.prototype.drawElements=h(WebGLRenderingContext.prototype.drawElements,function(){s++,_+=arguments[1]/3,T+=arguments[1]}),WebGLRenderingContext.prototype.useProgram=h(WebGLRenderingContext.prototype.useProgram,function(){z++}),WebGLRenderingContext.prototype.bindTexture=h(WebGLRenderingContext.prototype.bindTexture,function(){D++});var p={allcalls:{over:3e3,caption:"Calls (hook)"},drawelements:{caption:"drawElements (hook)"},drawarrays:{caption:"drawArrays (hook)"}},m=[{caption:"WebGL",values:["allcalls","drawelements","drawarrays","useprogram","bindtexture","glfaces","glvertices","glpoints"]}],u=[{base:"allcalls",steps:["drawelements","drawarrays"]}];function l(){O("allcalls").set(d+s),O("drawElements").set(s),O("drawArrays").set(d),O("bindTexture").set(D),O("useProgram").set(z),O("glfaces").set(_),O("glvertices").set(T),O("glpoints").set(v)}function R(){d=0,s=0,z=0,_=0,T=0,v=0,D=0}function N(){}function Y(G){O=G}return{update:l,start:R,end:N,attach:Y,values:p,groups:m,fractions:u}},window.threeStats=function(O){var d=null,s={"renderer.info.memory.geometries":{caption:"Geometries"},"renderer.info.memory.textures":{caption:"Textures"},"renderer.info.programs":{caption:"Programs"},"renderer.info.render.calls":{caption:"Calls"},"renderer.info.render.triangles":{caption:"Triangles",over:1e3},"renderer.info.render.points":{caption:"Points"}},z=[{caption:"Three.js - Memory",values:["renderer.info.memory.geometries","renderer.info.programs","renderer.info.memory.textures"]},{caption:"Three.js - Render",values:["renderer.info.render.calls","renderer.info.render.triangles","renderer.info.render.points"]}],_=[];function T(){var p;d("renderer.info.memory.geometries").set(O.info.memory.geometries),d("renderer.info.programs").set(((p=O.info.programs)==null?void 0:p.length)??NaN),d("renderer.info.memory.textures").set(O.info.memory.textures),d("renderer.info.render.calls").set(O.info.render.calls),d("renderer.info.render.triangles").set(O.info.render.triangles),d("renderer.info.render.points").set(O.info.render.points)}function v(){}function D(){}function h(p){d=p}return{update:T,start:v,end:D,attach:h,values:s,groups:z,fractions:_}},window.BrowserStats=function(){var O=null,d=0,s=0;window.performance&&!performance.memory&&(performance.memory={usedJSHeapSize:0,totalJSHeapSize:0}),performance.memory.totalJSHeapSize===0&&console.warn("totalJSHeapSize === 0... performance.memory is only available in Chrome .");var z={memory:{caption:"Used Memory",average:!0,avgMs:1e3,over:22},total:{caption:"Total Memory"}},_=[{caption:"Browser",values:["memory","total"]}],T=[{base:"total",steps:["memory"]}],v=Math.log(1024);function D(l){var R=100,N=Math.floor(Math.log(l)/v);return Math.round(l*R/Math.pow(1024,N))/R}function h(){d=D(performance.memory.usedJSHeapSize),s=D(performance.memory.totalJSHeapSize),O("memory").set(d),O("total").set(s)}function p(){d=0}function m(){}function u(l){O=l}return{update:h,start:p,end:m,attach:u,values:z,groups:_,fractions:T}},_A.exports={glStats:window.glStats,threeStats:window.threeStats,BrowserStats:window.BrowserStats}},"./vendor/rStats.js":_A=>{(function(){"performance"in window||(window.performance={});var O=window.performance;if(!("now"in O)){var d=Date.now();O.timing&&O.timing.navigationStart&&(d=O.timing.navigationStart),O.now=function(){return Date.now()-d}}O.mark||(O.mark=function(){}),O.measure||(O.measure=function(){})})(),window.rStats=function(d){function s(Z,CA){for(var QA=Object.keys(Z),SA=0,UA=QA.length;SA<UA;SA++)CA(QA[SA])}function z(Z){var CA=document.createElement("link");CA.href=Z,CA.rel="stylesheet",CA.type="text/css",document.getElementsByTagName("head")[0].appendChild(CA)}var _=d||{},T=_.colours||["#850700","#c74900","#fcb300","#284280","#4c7c0c"],v="https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700,300",D=(_.CSSPath?_.CSSPath:"")+"rStats.css",h=_.css||[v,D];h.forEach(function(Z){z(Z)}),_.values||(_.values={});var p,m,u=10,l=200,R={};function N(Z,CA,QA){var SA=QA||{},UA=document.createElement("canvas"),TA=UA.getContext("2d"),pA=0,hA=0,uA=SA.color?SA.color:"#666666",lA=document.createElement("canvas"),NA=lA.getContext("2d");lA.width=1,lA.height=2*u,NA.fillStyle="#444444",NA.fillRect(0,0,1,2*u),NA.fillStyle=uA,NA.fillRect(0,u,1,u),NA.fillStyle="#ffffff",NA.globalAlpha=.5,NA.fillRect(0,u,1,1),NA.globalAlpha=1;var HA=document.createElement("canvas"),pe=HA.getContext("2d");HA.width=1,HA.height=2*u,pe.fillStyle="#444444",pe.fillRect(0,0,1,2*u),pe.fillStyle="#b70000",pe.fillRect(0,u,1,u),pe.globalAlpha=.5,pe.fillStyle="#ffffff",pe.fillRect(0,u,1,1),pe.globalAlpha=1;function He(){UA.width=l,UA.height=u,UA.style.width=UA.width+"px",UA.style.height=UA.height+"px",UA.className="rs-canvas",Z.appendChild(UA),TA.fillStyle="#444444",TA.fillRect(0,0,UA.width,UA.height)}function Oe(ye,Ye){hA+=(ye-hA)*.1,pA*=.99,hA>pA&&(pA=hA),TA.drawImage(UA,1,0,UA.width-1,UA.height,0,0,UA.width-1,UA.height),Ye?TA.drawImage(HA,UA.width-1,UA.height-hA*UA.height/pA-u):TA.drawImage(lA,UA.width-1,UA.height-hA*UA.height/pA-u)}return He(),{draw:Oe}}function Y(Z,CA){var QA=document.createElement("canvas"),SA=QA.getContext("2d");function UA(){QA.width=l,QA.height=u*CA,QA.style.width=QA.width+"px",QA.style.height=QA.height+"px",QA.className="rs-canvas",Z.appendChild(QA),SA.fillStyle="#444444",SA.fillRect(0,0,QA.width,QA.height)}function TA(pA){SA.drawImage(QA,1,0,QA.width-1,QA.height,0,0,QA.width-1,QA.height);var hA=0;s(pA,function(uA){var lA=pA[uA]*QA.height;SA.fillStyle=T[uA],SA.fillRect(QA.width-1,hA,1,lA),hA+=lA})}return UA(),{draw:TA}}function G(Z,CA){var QA=Z,SA,UA=0,TA=0,pA=0,hA=0,uA=performance.now(),lA=0,NA=document.createElement("div"),HA=document.createElement("span"),pe=document.createElement("div"),He=document.createTextNode(""),Oe=_?_.values[QA.toLowerCase()]:null,ye=new N(NA,QA,Oe),Ye=!1;HA.className="rs-counter-id",HA.textContent=Oe&&Oe.caption?Oe.caption:QA,pe.className="rs-counter-value",pe.appendChild(He),NA.appendChild(HA),NA.appendChild(pe),CA?CA.div.appendChild(NA):m.appendChild(NA),SA=performance.now();function Et(Qt){if(Oe&&Oe.average){hA+=Qt,lA++;var Ct=performance.now();Ct-uA>=(Oe.avgMs||1e3)&&(pA=hA/lA,hA=0,uA=Ct,lA=0)}}function ct(){SA=performance.now(),_.userTimingAPI&&performance.mark(QA+"-start"),Ye=!0}function q(){UA=performance.now()-SA,_.userTimingAPI&&(performance.mark(QA+"-end"),Ye&&performance.measure(QA,QA+"-start",QA+"-end")),Et(UA)}function gA(){q(),ct()}function yA(){var Qt=Oe&&Oe.average?pA:UA;He.nodeValue=Math.round(Qt*100)/100;var Ct=Oe&&(Oe.below&&UA<Oe.below||Oe.over&&UA>Oe.over);ye.draw(UA,Ct),NA.className=Ct?"rs-counter-base alarm":"rs-counter-base"}function ge(){var Qt=performance.now(),Ct=Qt-SA;TA++,Ct>1e3&&(Oe&&Oe.interpolate===!1?UA=TA:UA=TA*1e3/Ct,TA=0,SA=Qt,Et(UA))}function le(Qt){UA=Qt,Et(UA)}return{set:le,start:ct,tick:gA,end:q,frame:ge,value:function(){return UA},draw:yA}}function x(Z){var CA=Z.toLowerCase();if(CA===void 0&&(CA="default"),R[CA])return R[CA];var QA=null;_&&_.groups&&s(_.groups,function(UA){var TA=_.groups[parseInt(UA,10)];!QA&&TA.values.indexOf(CA.toLowerCase())!==-1&&(QA=TA)});var SA=new G(CA,QA);return R[CA]=SA,SA}function U(){if(_.plugins){_.values||(_.values={}),_.groups||(_.groups=[]),_.fractions||(_.fractions=[]);for(var Z=0;Z<_.plugins.length;Z++)_.plugins[Z].attach(x),s(_.plugins[Z].values,function(CA){_.values[CA]=_.plugins[Z].values[CA]}),_.groups=_.groups.concat(_.plugins[Z].groups),_.fractions=_.fractions.concat(_.plugins[Z].fractions)}else _.plugins={};p=document.createElement("div"),p.className="rs-base",m=document.createElement("div"),m.className="rs-container",m.style.height="auto",p.appendChild(m),document.body.appendChild(p),_&&(_.groups&&s(_.groups,function(CA){var QA=_.groups[parseInt(CA,10)],SA=document.createElement("div");SA.className="rs-group",QA.div=SA;var UA=document.createElement("h1");UA.textContent=QA.caption,UA.addEventListener("click",(function(TA){this.classList.toggle("hidden"),TA.preventDefault()}).bind(SA)),m.appendChild(UA),m.appendChild(SA)}),_.fractions&&s(_.fractions,function(CA){var QA=_.fractions[parseInt(CA,10)],SA=document.createElement("div");SA.className="rs-fraction";var UA=document.createElement("div");UA.className="rs-legend";var TA=0;s(_.fractions[CA].steps,function(hA){var uA=document.createElement("p");uA.textContent=_.fractions[CA].steps[hA],uA.style.color=T[TA],UA.appendChild(uA),TA++}),SA.appendChild(UA),SA.style.height=TA*u+"px",QA.div=SA;var pA=new Y(SA,TA);QA.graph=pA,m.appendChild(SA)}))}function j(){s(_.plugins,function(Z){_.plugins[Z].update()}),s(R,function(Z){R[Z].draw()}),_&&_.fractions&&s(_.fractions,function(Z){var CA=_.fractions[parseInt(Z,10)],QA=[],SA=R[CA.base.toLowerCase()];SA&&(SA=SA.value(),s(_.fractions[Z].steps,function(UA){var TA=_.fractions[Z].steps[parseInt(UA,10)].toLowerCase(),pA=R[TA];pA&&QA.push(pA.value()/SA)})),CA.graph.draw(QA)})}return U(),function(Z){return Z?x(Z):{element:p,update:j}}},_A.exports=window.rStats},"./vendor/wakelock/util.js":_A=>{var O={};O.base64=function(d,s){return"data:"+d+";base64,"+s},O.isMobile=function(){var d=!1;return function(s){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(s)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(s.substr(0,4)))&&(d=!0)}(navigator.userAgent||navigator.vendor||window.opera),d},O.isIOS=function(){return/(iPad|iPhone|iPod)/g.test(navigator.userAgent)},O.isIFrame=function(){try{return window.self!==window.top}catch{return!0}},O.appendQueryParameter=function(d,s,z){var _=d.indexOf("?")<0?"?":"&";return d+=_+s+"="+z,d},O.getQueryParameter=function(d){d=d.replace(/[\[]/,"\\[").replace(/[\]]/,"\\]");var s=new RegExp("[\\?&]"+d+"=([^&#]*)"),z=s.exec(location.search);return z===null?"":decodeURIComponent(z[1].replace(/\+/g," "))},O.isLandscapeMode=function(){return window.orientation==90||window.orientation==-90},_A.exports=O},"./vendor/wakelock/wakelock.js":(_A,O,d)=>{var s=d("./vendor/wakelock/util.js");function z(){var v=document.createElement("video");v.addEventListener("ended",function(){v.play()}),this.request=function(){v.paused&&(v.src=s.base64("video/webm","GkXfowEAAAAAAAAfQoaBAUL3gQFC8oEEQvOBCEKChHdlYm1Ch4ECQoWBAhhTgGcBAAAAAAAH4xFNm3RALE27i1OrhBVJqWZTrIHfTbuMU6uEFlSua1OsggEwTbuMU6uEHFO7a1OsggfG7AEAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVSalmAQAAAAAAAEUq17GDD0JATYCNTGF2ZjU2LjQwLjEwMVdBjUxhdmY1Ni40MC4xMDFzpJAGSJTMbsLpDt/ySkipgX1fRImIQO1MAAAAAAAWVK5rAQAAAAAAADuuAQAAAAAAADLXgQFzxYEBnIEAIrWcg3VuZIaFVl9WUDmDgQEj44OEO5rKAOABAAAAAAAABrCBsLqBkB9DtnUBAAAAAAAAo+eBAKOmgQAAgKJJg0IAAV4BHsAHBIODCoAACmH2MAAAZxgz4dPSTFi5JACjloED6ACmAECSnABMQAADYAAAWi0quoCjloEH0ACmAECSnABNwAADYAAAWi0quoCjloELuACmAECSnABNgAADYAAAWi0quoCjloEPoACmAECSnABNYAADYAAAWi0quoCjloETiACmAECSnABNIAADYAAAWi0quoAfQ7Z1AQAAAAAAAJTnghdwo5aBAAAApgBAkpwATOAAA2AAAFotKrqAo5aBA+gApgBAkpwATMAAA2AAAFotKrqAo5aBB9AApgBAkpwATIAAA2AAAFotKrqAo5aBC7gApgBAkpwATEAAA2AAAFotKrqAo5aBD6AApgDAkpwAQ2AAA2AAAFotKrqAo5aBE4gApgBAkpwATCAAA2AAAFotKrqAH0O2dQEAAAAAAACU54Iu4KOWgQAAAKYAQJKcAEvAAANgAABaLSq6gKOWgQPoAKYAQJKcAEtgAANgAABaLSq6gKOWgQfQAKYAQJKcAEsAAANgAABaLSq6gKOWgQu4AKYAQJKcAEqAAANgAABaLSq6gKOWgQ+gAKYAQJKcAEogAANgAABaLSq6gKOWgROIAKYAQJKcAEnAAANgAABaLSq6gB9DtnUBAAAAAAAAlOeCRlCjloEAAACmAECSnABJgAADYAAAWi0quoCjloED6ACmAECSnABJIAADYAAAWi0quoCjloEH0ACmAMCSnABDYAADYAAAWi0quoCjloELuACmAECSnABI4AADYAAAWi0quoCjloEPoACmAECSnABIoAADYAAAWi0quoCjloETiACmAECSnABIYAADYAAAWi0quoAfQ7Z1AQAAAAAAAJTngl3Ao5aBAAAApgBAkpwASCAAA2AAAFotKrqAo5aBA+gApgBAkpwASAAAA2AAAFotKrqAo5aBB9AApgBAkpwAR8AAA2AAAFotKrqAo5aBC7gApgBAkpwAR4AAA2AAAFotKrqAo5aBD6AApgBAkpwAR2AAA2AAAFotKrqAo5aBE4gApgBAkpwARyAAA2AAAFotKrqAH0O2dQEAAAAAAACU54J1MKOWgQAAAKYAwJKcAENgAANgAABaLSq6gKOWgQPoAKYAQJKcAEbgAANgAABaLSq6gKOWgQfQAKYAQJKcAEagAANgAABaLSq6gKOWgQu4AKYAQJKcAEaAAANgAABaLSq6gKOWgQ+gAKYAQJKcAEZAAANgAABaLSq6gKOWgROIAKYAQJKcAEYAAANgAABaLSq6gB9DtnUBAAAAAAAAlOeCjKCjloEAAACmAECSnABF4AADYAAAWi0quoCjloED6ACmAECSnABFwAADYAAAWi0quoCjloEH0ACmAECSnABFoAADYAAAWi0quoCjloELuACmAECSnABFgAADYAAAWi0quoCjloEPoACmAMCSnABDYAADYAAAWi0quoCjloETiACmAECSnABFYAADYAAAWi0quoAfQ7Z1AQAAAAAAAJTngqQQo5aBAAAApgBAkpwARUAAA2AAAFotKrqAo5aBA+gApgBAkpwARSAAA2AAAFotKrqAo5aBB9AApgBAkpwARQAAA2AAAFotKrqAo5aBC7gApgBAkpwARQAAA2AAAFotKrqAo5aBD6AApgBAkpwAROAAA2AAAFotKrqAo5aBE4gApgBAkpwARMAAA2AAAFotKrqAH0O2dQEAAAAAAACU54K7gKOWgQAAAKYAQJKcAESgAANgAABaLSq6gKOWgQPoAKYAQJKcAESAAANgAABaLSq6gKOWgQfQAKYAwJKcAENgAANgAABaLSq6gKOWgQu4AKYAQJKcAERgAANgAABaLSq6gKOWgQ+gAKYAQJKcAERAAANgAABaLSq6gKOWgROIAKYAQJKcAEQgAANgAABaLSq6gB9DtnUBAAAAAAAAlOeC0vCjloEAAACmAECSnABEIAADYAAAWi0quoCjloED6ACmAECSnABEAAADYAAAWi0quoCjloEH0ACmAECSnABD4AADYAAAWi0quoCjloELuACmAECSnABDwAADYAAAWi0quoCjloEPoACmAECSnABDoAADYAAAWi0quoCjloETiACmAECSnABDgAADYAAAWi0quoAcU7trAQAAAAAAABG7j7OBALeK94EB8YIBd/CBAw=="),v.play())},this.release=function(){v.pause(),v.src=""}}function _(){var v=null;this.request=function(){v||(v=setInterval(function(){window.location.href="/",setTimeout(window.stop,0)},15e3))},this.release=function(){v&&(clearInterval(v),v=null)}}function T(){var v=navigator.userAgent||navigator.vendor||window.opera;return v.match(/iPhone/i)||v.match(/iPod/i)?_:z}_A.exports=T()},"./node_modules/css-loader/dist/cjs.js!./src/style/aframe.css":(_A,O,d)=>{d.r(O),d.d(O,{default:()=>j});var s=d("./node_modules/css-loader/dist/runtime/sourceMaps.js"),z=d.n(s),_=d("./node_modules/css-loader/dist/runtime/api.js"),T=d.n(_),v=d("./node_modules/css-loader/dist/runtime/getUrl.js"),D=d.n(v),h=new URL(d("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27108%27 height=%2762%27 viewBox=%270 0 108 62%27%3E%3Ctitle%3Eaframe-vrmode-noborder-reduced-tracking%3C/title%3E%3Cpath d=%27M68.81,21.56H64.23v8.27h4.58a4.13,4.13,0,0,0,3.1-1.09,4.2,4.2,0,0,0,1-3,4.24,4.24,0,0,0-1-3A4.05,4.05,0,0,0,68.81,21.56Z%27 fill=%27%23fff%27/%3E%3Cpath d=%27M96,0H12A12,12,0,0,0,0,12V50A12,12,0,0,0,12,62H96a12,12,0,0,0,12-12V12A12,12,0,0,0,96,0ZM41.9,46H34L24,16h8l6,21.84,6-21.84H52Zm39.29,0H73.44L68.15,35.39H64.23V46H57V16H68.81q5.32,0,8.34,2.37a8,8,0,0,1,3,6.69,9.68,9.68,0,0,1-1.27,5.18,8.9,8.9,0,0,1-4,3.34l6.26,12.11Z%27 fill=%27%23fff%27/%3E%3C/svg%3E"),d.b),p=new URL(d("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27108%27 height=%2762%27 viewBox=%270 0 108 62%27%3E%3Ctitle%3Eaframe-armode-noborder-reduced-tracking%3C/title%3E%3Cpath d=%27M96,0H12A12,12,0,0,0,0,12V50A12,12,0,0,0,12,62H96a12,12,0,0,0,12-12V12A12,12,0,0,0,96,0Zm8,50a8,8,0,0,1-8,8H12a8,8,0,0,1-8-8V12a8,8,0,0,1,8-8H96a8,8,0,0,1,8,8Z%27 fill=%27%23fff%27/%3E%3Cpath d=%27M43.35,39.82H32.51L30.45,46H23.88L35,16h5.73L52,46H45.43Zm-9.17-5h7.5L37.91,23.58Z%27 fill=%27%23fff%27/%3E%3Cpath d=%27M68.11,35H63.18V46H57V16H68.15q5.31,0,8.2,2.37a8.18,8.18,0,0,1,2.88,6.7,9.22,9.22,0,0,1-1.33,5.12,9.09,9.09,0,0,1-4,3.26l6.49,12.26V46H73.73Zm-4.93-5h5a5.09,5.09,0,0,0,3.6-1.18,4.21,4.21,0,0,0,1.28-3.27,4.56,4.56,0,0,0-1.2-3.34A5,5,0,0,0,68.15,21h-5Z%27 fill=%27%23fff%27/%3E%3C/svg%3E"),d.b),m=new URL(d("data:image/svg+xml,%3C%3Fxml version=%271.0%27 encoding=%27UTF-8%27 standalone=%27no%27%3F%3E%3Csvg width=%27108%27 height=%2762%27 viewBox=%270 0 108 62%27 version=%271.1%27 id=%27svg320%27 sodipodi:docname=%27fullscreen-aframe.svg%27 xml:space=%27preserve%27 inkscape:version=%271.2.1 %289c6d41e 2022-07-14%29%27 xmlns:inkscape=%27http://www.inkscape.org/namespaces/inkscape%27 xmlns:sodipodi=%27http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd%27 xmlns=%27http://www.w3.org/2000/svg%27 xmlns:svg=%27http://www.w3.org/2000/svg%27 xmlns:rdf=%27http://www.w3.org/1999/02/22-rdf-syntax-ns%23%27 xmlns:cc=%27http://creativecommons.org/ns%23%27 xmlns:dc=%27http://purl.org/dc/elements/1.1/%27%3E%3Cdefs id=%27defs324%27 /%3E%3Csodipodi:namedview id=%27namedview322%27 pagecolor=%27%23ffffff%27 bordercolor=%27%23000000%27 borderopacity=%270.25%27 inkscape:showpageshadow=%272%27 inkscape:pageopacity=%270.0%27 inkscape:pagecheckerboard=%270%27 inkscape:deskcolor=%27%23d1d1d1%27 showgrid=%27false%27 inkscape:zoom=%273.8064516%27 inkscape:cx=%2791.423729%27 inkscape:cy=%27-1.4449153%27 inkscape:window-width=%271440%27 inkscape:window-height=%27847%27 inkscape:window-x=%2732%27 inkscape:window-y=%2725%27 inkscape:window-maximized=%270%27 inkscape:current-layer=%27svg320%27 /%3E%3Ctitle id=%27title312%27%3Eaframe-armode-noborder-reduced-tracking%3C/title%3E%3Cpath d=%27M96 0H12A12 12 0 0 0 0 12V50A12 12 0 0 0 12 62H96a12 12 0 0 0 12-12V12A12 12 0 0 0 96 0Zm8 50a8 8 0 0 1-8 8H12a8 8 0 0 1-8-8V12a8 8 0 0 1 8-8H96a8 8 0 0 1 8 8Z%27 fill=%27%23fff%27 id=%27path314%27 style=%27fill:%23ffffff%27 /%3E%3Cg id=%27g356%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g358%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g360%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g362%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g364%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g366%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g368%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g370%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g372%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g374%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g376%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g378%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g380%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g382%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g384%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cmetadata id=%27metadata561%27%3E%3Crdf:RDF%3E%3Ccc:Work rdf:about=%27%27%3E%3Cdc:title%3Eaframe-armode-noborder-reduced-tracking%3C/dc:title%3E%3C/cc:Work%3E%3C/rdf:RDF%3E%3C/metadata%3E%3Cpath d=%27m 98.168511 40.083649 c 0 -1.303681 -0.998788 -2.358041 -2.239389 -2.358041 -1.230088 0.0031 -2.240892 1.05436 -2.240892 2.358041 v 4.881296 l -9.041661 -9.041662 c -0.874129 -0.875631 -2.288954 -0.875631 -3.16308 0 -0.874129 0.874126 -0.874129 2.293459 0 3.167585 l 8.995101 8.992101 h -4.858767 c -1.323206 0.0031 -2.389583 1.004796 -2.389583 2.239386 0 1.237598 1.066377 2.237888 2.389583 2.237888 h 10.154599 c 1.323206 0 2.388082 -0.998789 2.392587 -2.237888 -0.0044 -0.03305 -0.009 -0.05858 -0.0134 -0.09161 0.0046 -0.04207 0.0134 -0.08712 0.0134 -0.13066 V 40.085172 h -1.52e-4%27 id=%27path596%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3Cpath d=%27m 23.091002 35.921781 -9.026643 9.041662 v -4.881296 c 0 -1.303681 -1.009302 -2.355037 -2.242393 -2.358041 -1.237598 0 -2.237888 1.05436 -2.237888 2.358041 l -0.0031 10.016421 c 0 0.04356 0.01211 0.08862 0.0015 0.130659 -0.0031 0.03153 -0.009 0.05709 -0.01211 0.09161 0.0031 1.239099 1.069379 2.237888 2.391085 2.237888 h 10.156101 c 1.320202 0 2.388079 -1.000291 2.388079 -2.237888 0 -1.234591 -1.067877 -2.236383 -2.388079 -2.239387 h -4.858767 l 8.995101 -8.9921 c 0.871126 -0.874127 0.871126 -2.293459 0 -3.167586 -0.875628 -0.877132 -2.291957 -0.877132 -3.169087 -1.52e-4%27 id=%27path598%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3Cpath d=%27m 84.649572 25.978033 9.041662 -9.041664 v 4.881298 c 0 1.299176 1.010806 2.350532 2.240891 2.355037 1.240601 0 2.23939 -1.055861 2.23939 -2.355037 V 11.798242 c 0 -0.04356 -0.009 -0.08862 -0.0134 -0.127671 0.0044 -0.03153 0.009 -0.06157 0.0134 -0.09313 -0.0044 -1.240598 -1.069379 -2.2393873 -2.391085 -2.2393873 h -10.1546 c -1.323205 0 -2.38958 0.9987893 -2.38958 2.2393873 0 1.233091 1.066375 2.237887 2.38958 2.240891 h 4.858768 l -8.995102 8.9921 c -0.874129 0.872625 -0.874129 2.288954 0 3.161578 0.874127 0.880137 2.288951 0.880137 3.16308 1.5e-4%27 id=%27path600%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3Cpath d=%27m 17.264988 13.822853 h 4.857265 c 1.320202 -0.0031 2.388079 -1.0078 2.388079 -2.240889 0 -1.240601 -1.067877 -2.2393893 -2.388079 -2.2393893 H 11.967654 c -1.321707 0 -2.388082 0.9987883 -2.391085 2.2393893 0.0031 0.03153 0.009 0.06157 0.01211 0.09313 -0.0031 0.03905 -0.0015 0.08262 -0.0015 0.127671 l 0.0031 10.020926 c 0 1.299176 1.00029 2.355038 2.237887 2.355038 1.233092 -0.0044 2.242393 -1.055862 2.242393 -2.355038 v -4.881295 l 9.026644 9.041661 c 0.877132 0.878635 2.293459 0.878635 3.169087 0 0.871125 -0.872624 0.871125 -2.288953 0 -3.161577 l -8.995282 -8.993616%27 id=%27path602%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3C/svg%3E"),d.b),u=new URL(d("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20version%3D%221.1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%2090%2090%22%20enable-background%3D%22new%200%200%2090%2090%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%220%2C0%200%2C0%200%2C0%20%22%3E%3C/polygon%3E%3Cg%3E%3Cpath%20d%3D%22M71.545%2C48.145h-31.98V20.743c0-2.627-2.138-4.765-4.765-4.765H18.456c-2.628%2C0-4.767%2C2.138-4.767%2C4.765v42.789%20%20%20c0%2C2.628%2C2.138%2C4.766%2C4.767%2C4.766h5.535v0.959c0%2C2.628%2C2.138%2C4.765%2C4.766%2C4.765h42.788c2.628%2C0%2C4.766-2.137%2C4.766-4.765V52.914%20%20%20C76.311%2C50.284%2C74.173%2C48.145%2C71.545%2C48.145z%20M18.455%2C16.935h16.344c2.1%2C0%2C3.808%2C1.708%2C3.808%2C3.808v27.401H37.25V22.636%20%20%20c0-0.264-0.215-0.478-0.479-0.478H16.482c-0.264%2C0-0.479%2C0.214-0.479%2C0.478v36.585c0%2C0.264%2C0.215%2C0.478%2C0.479%2C0.478h7.507v7.644%20%20%20h-5.534c-2.101%2C0-3.81-1.709-3.81-3.81V20.743C14.645%2C18.643%2C16.354%2C16.935%2C18.455%2C16.935z%20M16.96%2C23.116h19.331v25.031h-7.535%20%20%20c-2.628%2C0-4.766%2C2.139-4.766%2C4.768v5.828h-7.03V23.116z%20M71.545%2C73.064H28.757c-2.101%2C0-3.81-1.708-3.81-3.808V52.914%20%20%20c0-2.102%2C1.709-3.812%2C3.81-3.812h42.788c2.1%2C0%2C3.809%2C1.71%2C3.809%2C3.812v16.343C75.354%2C71.356%2C73.645%2C73.064%2C71.545%2C73.064z%22%3E%3C/path%3E%3Cpath%20d%3D%22M28.919%2C58.424c-1.466%2C0-2.659%2C1.193-2.659%2C2.66c0%2C1.466%2C1.193%2C2.658%2C2.659%2C2.658c1.468%2C0%2C2.662-1.192%2C2.662-2.658%20%20%20C31.581%2C59.617%2C30.387%2C58.424%2C28.919%2C58.424z%20M28.919%2C62.786c-0.939%2C0-1.703-0.764-1.703-1.702c0-0.939%2C0.764-1.704%2C1.703-1.704%20%20%20c0.94%2C0%2C1.705%2C0.765%2C1.705%2C1.704C30.623%2C62.022%2C29.858%2C62.786%2C28.919%2C62.786z%22%3E%3C/path%3E%3Cpath%20d%3D%22M69.654%2C50.461H33.069c-0.264%2C0-0.479%2C0.215-0.479%2C0.479v20.288c0%2C0.264%2C0.215%2C0.478%2C0.479%2C0.478h36.585%20%20%20c0.263%2C0%2C0.477-0.214%2C0.477-0.478V50.939C70.131%2C50.676%2C69.917%2C50.461%2C69.654%2C50.461z%20M69.174%2C51.417V70.75H33.548V51.417H69.174z%22%3E%3C/path%3E%3Cpath%20d%3D%22M45.201%2C30.296c6.651%2C0%2C12.233%2C5.351%2C12.551%2C11.977l-3.033-2.638c-0.193-0.165-0.507-0.142-0.675%2C0.048%20%20%20c-0.174%2C0.198-0.153%2C0.501%2C0.045%2C0.676l3.883%2C3.375c0.09%2C0.075%2C0.198%2C0.115%2C0.312%2C0.115c0.141%2C0%2C0.273-0.061%2C0.362-0.166%20%20%20l3.371-3.877c0.173-0.2%2C0.151-0.502-0.047-0.675c-0.194-0.166-0.508-0.144-0.676%2C0.048l-2.592%2C2.979%20%20%20c-0.18-3.417-1.629-6.605-4.099-9.001c-2.538-2.461-5.877-3.817-9.404-3.817c-0.264%2C0-0.479%2C0.215-0.479%2C0.479%20%20%20C44.72%2C30.083%2C44.936%2C30.296%2C45.201%2C30.296z%22%3E%3C/path%3E%3C/g%3E%3C/svg%3E"),d.b),l=new URL(d("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20version%3D%221.1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%20100%20100%22%20enable-background%3D%22new%200%200%20100%20100%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23000000%22%20d%3D%22M55.209%2C50l17.803-17.803c1.416-1.416%2C1.416-3.713%2C0-5.129c-1.416-1.417-3.713-1.417-5.129%2C0L50.08%2C44.872%20%20L32.278%2C27.069c-1.416-1.417-3.714-1.417-5.129%2C0c-1.417%2C1.416-1.417%2C3.713%2C0%2C5.129L44.951%2C50L27.149%2C67.803%20%20c-1.417%2C1.416-1.417%2C3.713%2C0%2C5.129c0.708%2C0.708%2C1.636%2C1.062%2C2.564%2C1.062c0.928%2C0%2C1.856-0.354%2C2.564-1.062L50.08%2C55.13l17.803%2C17.802%20%20c0.708%2C0.708%2C1.637%2C1.062%2C2.564%2C1.062s1.856-0.354%2C2.564-1.062c1.416-1.416%2C1.416-3.713%2C0-5.129L55.209%2C50z%22%3E%3C/path%3E%3C/svg%3E"),d.b),R=T()(z()),N=D()(h),Y=D()(p),G=D()(m),x=D()(u),U=D()(l);R.push([_A.id,`/* .a-fullscreen means not embedded. */
html.a-fullscreen {
bottom: 0;
left: 0;
position: fixed;
right: 0;
top: 0;
}
html.a-fullscreen body {
height: 100%;
margin: 0;
overflow: hidden;
padding: 0;
width: 100%;
}
/* Class is removed when doing <a-scene embedded>. */
html.a-fullscreen .a-canvas {
width: 100% !important;
height: 100% !important;
top: 0 !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
position: fixed !important;
}
html:not(.a-fullscreen) .a-enter-vr,
html:not(.a-fullscreen) .a-enter-ar {
right: 5px;
bottom: 5px;
}
html:not(.a-fullscreen) .a-enter-ar {
right: 60px;
}
/* In chrome mobile the user agent stylesheet set it to white */
:-webkit-full-screen {
background-color: transparent;
}
.a-hidden {
display: none !important;
}
.a-canvas {
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.a-canvas.a-grab-cursor:hover {
cursor: grab;
cursor: -moz-grab;
cursor: -webkit-grab;
}
canvas.a-canvas.a-mouse-cursor-hover:hover {
cursor: pointer;
}
.a-inspector-loader {
background-color: #ed3160;
position: fixed;
left: 3px;
top: 3px;
padding: 6px 10px;
color: #fff;
text-decoration: none;
font-size: 12px;
font-family: Roboto,sans-serif;
text-align: center;
z-index: 99999;
width: 204px;
}
/* Inspector loader animation */
@keyframes dots-1 { from { opacity: 0; } 25% { opacity: 1; } }
@keyframes dots-2 { from { opacity: 0; } 50% { opacity: 1; } }
@keyframes dots-3 { from { opacity: 0; } 75% { opacity: 1; } }
@-webkit-keyframes dots-1 { from { opacity: 0; } 25% { opacity: 1; } }
@-webkit-keyframes dots-2 { from { opacity: 0; } 50% { opacity: 1; } }
@-webkit-keyframes dots-3 { from { opacity: 0; } 75% { opacity: 1; } }
.a-inspector-loader .dots span {
animation: dots-1 2s infinite steps(1);
-webkit-animation: dots-1 2s infinite steps(1);
}
.a-inspector-loader .dots span:first-child + span {
animation-name: dots-2;
-webkit-animation-name: dots-2;
}
.a-inspector-loader .dots span:first-child + span + span {
animation-name: dots-3;
-webkit-animation-name: dots-3;
}
a-scene {
display: block;
position: relative;
height: 100%;
width: 100%;
}
a-assets,
a-scene video,
a-scene img,
a-scene audio {
display: none;
}
.a-enter-vr-modal,
.a-orientation-modal {
font-family: Consolas, Andale Mono, Courier New, monospace;
}
.a-enter-vr-modal a {
border-bottom: 1px solid #fff;
padding: 2px 0;
text-decoration: none;
transition: .1s color ease-in;
}
.a-enter-vr-modal a:hover {
background-color: #fff;
color: #111;
padding: 2px 4px;
position: relative;
left: -4px;
}
.a-enter-vr,
.a-enter-ar {
font-family: sans-serif, monospace;
font-size: 13px;
width: 100%;
font-weight: 200;
line-height: 16px;
position: absolute;
right: 20px;
bottom: 20px;
}
.a-enter-ar.xr {
right: 90px;
}
.a-enter-vr-button,
.a-enter-vr-modal,
.a-enter-vr-modal a {
color: #fff;
user-select: none;
outline: none;
}
.a-enter-vr-button {
background: rgba(0, 0, 0, 0.35) url(${N}) 50% 50% no-repeat;
}
.a-enter-ar-button {
background: rgba(0, 0, 0, 0.20) url(${Y}) 50% 50% no-repeat;
}
.a-enter-vr.fullscreen .a-enter-vr-button {
background-image: url(${G});
}
.a-enter-vr-button,
.a-enter-ar-button {
background-size: 90% 90%;
border: 0;
bottom: 0;
cursor: pointer;
min-width: 58px;
min-height: 34px;
/* 1.74418604651 */
/*
In order to keep the aspect ratio when resizing
padding-top percentages are relative to the containing block's width.
http://stackoverflow.com/questions/12121090/responsively-change-div-size-keeping-aspect-ratio
*/
padding-right: 0;
padding-top: 0;
position: absolute;
right: 0;
transition: background-color .05s ease;
-webkit-transition: background-color .05s ease;
z-index: 9999;
border-radius: 8px;
touch-action: manipulation; /* Prevent iOS double tap zoom on the button */
}
.a-enter-ar-button {
background-size: 100% 90%;
border-radius: 7px;
}
.a-enter-ar-button:active,
.a-enter-ar-button:hover,
.a-enter-vr-button:active,
.a-enter-vr-button:hover {
background-color: #ef2d5e;
}
.a-enter-vr-button.resethover {
background-color: rgba(0, 0, 0, 0.35);
}
.a-enter-vr-modal {
background-color: #666;
border-radius: 0;
display: none;
min-height: 32px;
margin-right: 70px;
padding: 9px;
width: 280px;
right: 2%;
position: absolute;
}
.a-enter-vr-modal:after {
border-bottom: 10px solid transparent;
border-left: 10px solid #666;
border-top: 10px solid transparent;
display: inline-block;
content: '';
position: absolute;
right: -5px;
top: 5px;
width: 0;
height: 0;
}
.a-enter-vr-modal p,
.a-enter-vr-modal a {
display: inline;
}
.a-enter-vr-modal p {
margin: 0;
}
.a-enter-vr-modal p:after {
content: ' ';
}
.a-orientation-modal {
background: rgba(244, 244, 244, 1) url(${x}) center no-repeat;
background-size: 50% 50%;
bottom: 0;
font-size: 14px;
font-weight: 600;
left: 0;
line-height: 20px;
right: 0;
position: fixed;
top: 0;
z-index: 9999999;
}
.a-orientation-modal:after {
color: #666;
content: "Insert phone into Cardboard holder.";
display: block;
position: absolute;
text-align: center;
top: 70%;
transform: translateY(-70%);
width: 100%;
}
.a-orientation-modal button {
background: url(${U}) no-repeat;
border: none;
height: 50px;
text-indent: -9999px;
width: 50px;
}
.a-loader-title {
background-color: rgba(0, 0, 0, 0.6);
font-family: sans-serif, monospace;
text-align: center;
font-size: 20px;
height: 50px;
font-weight: 300;
line-height: 50px;
position: absolute;
right: 0px;
left: 0px;
top: 0px;
color: white;
}
.a-modal {
position: absolute;
background: rgba(0, 0, 0, 0.60);
background-size: 50% 50%;
bottom: 0;
font-size: 14px;
font-weight: 600;
left: 0;
line-height: 20px;
right: 0;
position: fixed;
top: 0;
z-index: 9999999;
}
.a-dialog {
position: relative;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
z-index: 199995;
width: 300px;
height: 200px;
background-size: contain;
background-color: white;
font-family: sans-serif, monospace;
font-size: 20px;
border-radius: 3px;
padding: 6px;
}
.a-dialog-text-container {
width: 100%;
height: 70%;
align-self: flex-start;
display: flex;
justify-content: center;
align-content: center;
flex-direction: column;
}
.a-dialog-text {
display: inline-block;
font-weight: normal;
font-size: 14pt;
margin: 8px;
}
.a-dialog-buttons-container {
display: inline-flex;
align-self: flex-end;
width: 100%;
height: 30%;
}
.a-dialog-button {
cursor: pointer;
align-self: center;
opacity: 0.9;
height: 80%;
width: 50%;
font-size: 12pt;
margin: 4px;
border-radius: 2px;
text-align:center;
border: none;
display: inline-block;
-webkit-transition: all 0.25s ease-in-out;
transition: all 0.25s ease-in-out;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.10), 0 1px 2px rgba(0, 0, 0, 0.20);
user-select: none;
}
.a-dialog-permission-button:hover {
box-shadow: 0 7px 14px rgba(0,0,0,0.20), 0 2px 2px rgba(0,0,0,0.20);
}
.a-dialog-allow-button {
background-color: #00ceff;
}
.a-dialog-deny-button {
background-color: #ff005b;
}
.a-dialog-ok-button {
background-color: #00ceff;
width: 100%;
}
.a-dom-overlay:not(.a-no-style) {
overflow: hidden;
position: absolute;
pointer-events: none;
box-sizing: border-box;
bottom: 0;
left: 0;
right: 0;
top: 0;
padding: 1em;
}
.a-dom-overlay:not(.a-no-style)>* {
pointer-events: auto;
}
`,"",{version:3,sources:["webpack://./src/style/aframe.css"],names:[],mappings:"AAAA,sCAAsC;AACtC;EACE,SAAS;EACT,OAAO;EACP,eAAe;EACf,QAAQ;EACR,MAAM;AACR;;AAEA;EACE,YAAY;EACZ,SAAS;EACT,gBAAgB;EAChB,UAAU;EACV,WAAW;AACb;;AAEA,oDAAoD;AACpD;EACE,sBAAsB;EACtB,uBAAuB;EACvB,iBAAiB;EACjB,kBAAkB;EAClB,mBAAmB;EACnB,oBAAoB;EACpB,0BAA0B;AAC5B;;AAEA;;EAEE,UAAU;EACV,WAAW;AACb;;AAEA;EACE,WAAW;AACb;;AAEA,gEAAgE;AAChE;EACE,6BAA6B;AAC/B;;AAEA;EACE,wBAAwB;AAC1B;;AAEA;EACE,YAAY;EACZ,OAAO;EACP,kBAAkB;EAClB,MAAM;EACN,WAAW;AACb;;AAEA;EACE,YAAY;EACZ,iBAAiB;EACjB,oBAAoB;AACtB;;AAEA;EACE,eAAe;AACjB;;AAEA;EACE,yBAAyB;EACzB,eAAe;EACf,SAAS;EACT,QAAQ;EACR,iBAAiB;EACjB,WAAW;EACX,qBAAqB;EACrB,eAAe;EACf,8BAA8B;EAC9B,kBAAkB;EAClB,cAAc;EACd,YAAY;AACd;;AAEA,+BAA+B;AAC/B,oBAAoB,OAAO,UAAU,EAAE,EAAE,MAAM,UAAU,EAAE,EAAE;AAC7D,oBAAoB,OAAO,UAAU,EAAE,EAAE,MAAM,UAAU,EAAE,EAAE;AAC7D,oBAAoB,OAAO,UAAU,EAAE,EAAE,MAAM,UAAU,EAAE,EAAE;AAC7D,4BAA4B,OAAO,UAAU,EAAE,EAAE,MAAM,UAAU,EAAE,EAAE;AACrE,4BAA4B,OAAO,UAAU,EAAE,EAAE,MAAM,UAAU,EAAE,EAAE;AACrE,4BAA4B,OAAO,UAAU,EAAE,EAAE,MAAM,UAAU,EAAE,EAAE;;AAErE;EACE,sCAAsC;EACtC,8CAA8C;AAChD;;AAEA;EACE,sBAAsB;EACtB,8BAA8B;AAChC;;AAEA;EACE,sBAAsB;EACtB,8BAA8B;AAChC;;AAEA;EACE,cAAc;EACd,kBAAkB;EAClB,YAAY;EACZ,WAAW;AACb;;AAEA;;;;EAIE,aAAa;AACf;;AAEA;;EAEE,0DAA0D;AAC5D;;AAEA;EACE,6BAA6B;EAC7B,cAAc;EACd,qBAAqB;EACrB,6BAA6B;AAC/B;;AAEA;EACE,sBAAsB;EACtB,WAAW;EACX,gBAAgB;EAChB,kBAAkB;EAClB,UAAU;AACZ;;AAEA;;EAEE,kCAAkC;EAClC,eAAe;EACf,WAAW;EACX,gBAAgB;EAChB,iBAAiB;EACjB,kBAAkB;EAClB,WAAW;EACX,YAAY;AACd;;AAEA;EACE,WAAW;AACb;;AAEA;;;EAGE,WAAW;EACX,iBAAiB;EACjB,aAAa;AACf;;AAEA;EACE,yFAA4qB;AAC9qB;;AAEA;EACE,yFAAkzB;AACpzB;;AAEA;EACE,yDAA2qK;AAC7qK;;AAEA;;EAEE,wBAAwB;EACxB,SAAS;EACT,SAAS;EACT,eAAe;EACf,eAAe;EACf,gBAAgB;EAChB,kBAAkB;EAClB;;;;GAIC;EACD,gBAAgB;EAChB,cAAc;EACd,kBAAkB;EAClB,QAAQ;EACR,sCAAsC;EACtC,8CAA8C;EAC9C,aAAa;EACb,kBAAkB;EAClB,0BAA0B,EAAE,8CAA8C;AAC5E;;AAEA;EACE,yBAAyB;EACzB,kBAAkB;AACpB;;AAEA;;;;EAIE,yBAAyB;AAC3B;;AAEA;EACE,qCAAqC;AACvC;;AAEA;EACE,sBAAsB;EACtB,gBAAgB;EAChB,aAAa;EACb,gBAAgB;EAChB,kBAAkB;EAClB,YAAY;EACZ,YAAY;EACZ,SAAS;EACT,kBAAkB;AACpB;;AAEA;EACE,qCAAqC;EACrC,4BAA4B;EAC5B,kCAAkC;EAClC,qBAAqB;EACrB,WAAW;EACX,kBAAkB;EAClB,WAAW;EACX,QAAQ;EACR,QAAQ;EACR,SAAS;AACX;;AAEA;;EAEE,eAAe;AACjB;;AAEA;EACE,SAAS;AACX;;AAEA;EACE,YAAY;AACd;;AAEA;EACE,2FAAivF;EACjvF,wBAAwB;EACxB,SAAS;EACT,eAAe;EACf,gBAAgB;EAChB,OAAO;EACP,iBAAiB;EACjB,QAAQ;EACR,eAAe;EACf,MAAM;EACN,gBAAgB;AAClB;;AAEA;EACE,WAAW;EACX,8CAA8C;EAC9C,cAAc;EACd,kBAAkB;EAClB,kBAAkB;EAClB,QAAQ;EACR,2BAA2B;EAC3B,WAAW;AACb;;AAEA;EACE,6DAA25B;EAC35B,YAAY;EACZ,YAAY;EACZ,oBAAoB;EACpB,WAAW;AACb;;AAEA;EACE,oCAAoC;EACpC,kCAAkC;EAClC,kBAAkB;EAClB,eAAe;EACf,YAAY;EACZ,gBAAgB;EAChB,iBAAiB;EACjB,kBAAkB;EAClB,UAAU;EACV,SAAS;EACT,QAAQ;EACR,YAAY;AACd;;AAEA;EACE,kBAAkB;EAClB,+BAA+B;EAC/B,wBAAwB;EACxB,SAAS;EACT,eAAe;EACf,gBAAgB;EAChB,OAAO;EACP,iBAAiB;EACjB,QAAQ;EACR,eAAe;EACf,MAAM;EACN,gBAAgB;AAClB;;AAEA;EACE,kBAAkB;EAClB,SAAS;EACT,QAAQ;EACR,gCAAgC;EAChC,eAAe;EACf,YAAY;EACZ,aAAa;EACb,wBAAwB;EACxB,uBAAuB;EACvB,kCAAkC;EAClC,eAAe;EACf,kBAAkB;EAClB,YAAY;AACd;;AAEA;EACE,WAAW;EACX,WAAW;EACX,sBAAsB;EACtB,aAAa;EACb,uBAAuB;EACvB,qBAAqB;EACrB,sBAAsB;AACxB;;AAEA;EACE,qBAAqB;EACrB,mBAAmB;EACnB,eAAe;EACf,WAAW;AACb;;AAEA;EACE,oBAAoB;EACpB,oBAAoB;EACpB,WAAW;EACX,WAAW;AACb;;AAEA;EACE,eAAe;EACf,kBAAkB;EAClB,YAAY;EACZ,WAAW;EACX,UAAU;EACV,eAAe;EACf,WAAW;EACX,kBAAkB;EAClB,iBAAiB;EACjB,YAAY;EACZ,qBAAqB;EACrB,yCAAyC;EACzC,iCAAiC;EACjC,wEAAwE;EACxE,iBAAiB;AACnB;;AAEA;EACE,mEAAmE;AACrE;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,yBAAyB;AAC3B;;AAEA;EACE,yBAAyB;EACzB,WAAW;AACb;;AAEA;EACE,gBAAgB;EAChB,kBAAkB;EAClB,oBAAoB;EACpB,sBAAsB;EACtB,SAAS;EACT,OAAO;EACP,QAAQ;EACR,MAAM;EACN,YAAY;AACd;;AAEA;EACE,oBAAoB;AACtB",sourcesContent:[`/* .a-fullscreen means not embedded. */
html.a-fullscreen {
bottom: 0;
left: 0;
position: fixed;
right: 0;
top: 0;
}
html.a-fullscreen body {
height: 100%;
margin: 0;
overflow: hidden;
padding: 0;
width: 100%;
}
/* Class is removed when doing <a-scene embedded>. */
html.a-fullscreen .a-canvas {
width: 100% !important;
height: 100% !important;
top: 0 !important;
left: 0 !important;
right: 0 !important;
bottom: 0 !important;
position: fixed !important;
}
html:not(.a-fullscreen) .a-enter-vr,
html:not(.a-fullscreen) .a-enter-ar {
right: 5px;
bottom: 5px;
}
html:not(.a-fullscreen) .a-enter-ar {
right: 60px;
}
/* In chrome mobile the user agent stylesheet set it to white */
:-webkit-full-screen {
background-color: transparent;
}
.a-hidden {
display: none !important;
}
.a-canvas {
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
}
.a-canvas.a-grab-cursor:hover {
cursor: grab;
cursor: -moz-grab;
cursor: -webkit-grab;
}
canvas.a-canvas.a-mouse-cursor-hover:hover {
cursor: pointer;
}
.a-inspector-loader {
background-color: #ed3160;
position: fixed;
left: 3px;
top: 3px;
padding: 6px 10px;
color: #fff;
text-decoration: none;
font-size: 12px;
font-family: Roboto,sans-serif;
text-align: center;
z-index: 99999;
width: 204px;
}
/* Inspector loader animation */
@keyframes dots-1 { from { opacity: 0; } 25% { opacity: 1; } }
@keyframes dots-2 { from { opacity: 0; } 50% { opacity: 1; } }
@keyframes dots-3 { from { opacity: 0; } 75% { opacity: 1; } }
@-webkit-keyframes dots-1 { from { opacity: 0; } 25% { opacity: 1; } }
@-webkit-keyframes dots-2 { from { opacity: 0; } 50% { opacity: 1; } }
@-webkit-keyframes dots-3 { from { opacity: 0; } 75% { opacity: 1; } }
.a-inspector-loader .dots span {
animation: dots-1 2s infinite steps(1);
-webkit-animation: dots-1 2s infinite steps(1);
}
.a-inspector-loader .dots span:first-child + span {
animation-name: dots-2;
-webkit-animation-name: dots-2;
}
.a-inspector-loader .dots span:first-child + span + span {
animation-name: dots-3;
-webkit-animation-name: dots-3;
}
a-scene {
display: block;
position: relative;
height: 100%;
width: 100%;
}
a-assets,
a-scene video,
a-scene img,
a-scene audio {
display: none;
}
.a-enter-vr-modal,
.a-orientation-modal {
font-family: Consolas, Andale Mono, Courier New, monospace;
}
.a-enter-vr-modal a {
border-bottom: 1px solid #fff;
padding: 2px 0;
text-decoration: none;
transition: .1s color ease-in;
}
.a-enter-vr-modal a:hover {
background-color: #fff;
color: #111;
padding: 2px 4px;
position: relative;
left: -4px;
}
.a-enter-vr,
.a-enter-ar {
font-family: sans-serif, monospace;
font-size: 13px;
width: 100%;
font-weight: 200;
line-height: 16px;
position: absolute;
right: 20px;
bottom: 20px;
}
.a-enter-ar.xr {
right: 90px;
}
.a-enter-vr-button,
.a-enter-vr-modal,
.a-enter-vr-modal a {
color: #fff;
user-select: none;
outline: none;
}
.a-enter-vr-button {
background: rgba(0, 0, 0, 0.35) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='108' height='62' viewBox='0 0 108 62'%3E%3Ctitle%3Eaframe-vrmode-noborder-reduced-tracking%3C/title%3E%3Cpath d='M68.81,21.56H64.23v8.27h4.58a4.13,4.13,0,0,0,3.1-1.09,4.2,4.2,0,0,0,1-3,4.24,4.24,0,0,0-1-3A4.05,4.05,0,0,0,68.81,21.56Z' fill='%23fff'/%3E%3Cpath d='M96,0H12A12,12,0,0,0,0,12V50A12,12,0,0,0,12,62H96a12,12,0,0,0,12-12V12A12,12,0,0,0,96,0ZM41.9,46H34L24,16h8l6,21.84,6-21.84H52Zm39.29,0H73.44L68.15,35.39H64.23V46H57V16H68.81q5.32,0,8.34,2.37a8,8,0,0,1,3,6.69,9.68,9.68,0,0,1-1.27,5.18,8.9,8.9,0,0,1-4,3.34l6.26,12.11Z' fill='%23fff'/%3E%3C/svg%3E") 50% 50% no-repeat;
}
.a-enter-ar-button {
background: rgba(0, 0, 0, 0.20) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='108' height='62' viewBox='0 0 108 62'%3E%3Ctitle%3Eaframe-armode-noborder-reduced-tracking%3C/title%3E%3Cpath d='M96,0H12A12,12,0,0,0,0,12V50A12,12,0,0,0,12,62H96a12,12,0,0,0,12-12V12A12,12,0,0,0,96,0Zm8,50a8,8,0,0,1-8,8H12a8,8,0,0,1-8-8V12a8,8,0,0,1,8-8H96a8,8,0,0,1,8,8Z' fill='%23fff'/%3E%3Cpath d='M43.35,39.82H32.51L30.45,46H23.88L35,16h5.73L52,46H45.43Zm-9.17-5h7.5L37.91,23.58Z' fill='%23fff'/%3E%3Cpath d='M68.11,35H63.18V46H57V16H68.15q5.31,0,8.2,2.37a8.18,8.18,0,0,1,2.88,6.7,9.22,9.22,0,0,1-1.33,5.12,9.09,9.09,0,0,1-4,3.26l6.49,12.26V46H73.73Zm-4.93-5h5a5.09,5.09,0,0,0,3.6-1.18,4.21,4.21,0,0,0,1.28-3.27,4.56,4.56,0,0,0-1.2-3.34A5,5,0,0,0,68.15,21h-5Z' fill='%23fff'/%3E%3C/svg%3E") 50% 50% no-repeat;
}
.a-enter-vr.fullscreen .a-enter-vr-button {
background-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='UTF-8' standalone='no'%3F%3E%3Csvg width='108' height='62' viewBox='0 0 108 62' version='1.1' id='svg320' sodipodi:docname='fullscreen-aframe.svg' xml:space='preserve' inkscape:version='1.2.1 (9c6d41e 2022-07-14)' xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape' xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg' xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns%23' xmlns:cc='http://creativecommons.org/ns%23' xmlns:dc='http://purl.org/dc/elements/1.1/'%3E%3Cdefs id='defs324' /%3E%3Csodipodi:namedview id='namedview322' pagecolor='%23ffffff' bordercolor='%23000000' borderopacity='0.25' inkscape:showpageshadow='2' inkscape:pageopacity='0.0' inkscape:pagecheckerboard='0' inkscape:deskcolor='%23d1d1d1' showgrid='false' inkscape:zoom='3.8064516' inkscape:cx='91.423729' inkscape:cy='-1.4449153' inkscape:window-width='1440' inkscape:window-height='847' inkscape:window-x='32' inkscape:window-y='25' inkscape:window-maximized='0' inkscape:current-layer='svg320' /%3E%3Ctitle id='title312'%3Eaframe-armode-noborder-reduced-tracking%3C/title%3E%3Cpath d='M96 0H12A12 12 0 0 0 0 12V50A12 12 0 0 0 12 62H96a12 12 0 0 0 12-12V12A12 12 0 0 0 96 0Zm8 50a8 8 0 0 1-8 8H12a8 8 0 0 1-8-8V12a8 8 0 0 1 8-8H96a8 8 0 0 1 8 8Z' fill='%23fff' id='path314' style='fill:%23ffffff' /%3E%3Cg id='g356' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g358' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g360' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g362' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g364' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g366' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g368' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g370' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g372' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g374' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g376' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g378' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g380' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g382' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cg id='g384' transform='translate(-206.61017 -232.61864)'%3E%3C/g%3E%3Cmetadata id='metadata561'%3E%3Crdf:RDF%3E%3Ccc:Work rdf:about=''%3E%3Cdc:title%3Eaframe-armode-noborder-reduced-tracking%3C/dc:title%3E%3C/cc:Work%3E%3C/rdf:RDF%3E%3C/metadata%3E%3Cpath d='m 98.168511 40.083649 c 0 -1.303681 -0.998788 -2.358041 -2.239389 -2.358041 -1.230088 0.0031 -2.240892 1.05436 -2.240892 2.358041 v 4.881296 l -9.041661 -9.041662 c -0.874129 -0.875631 -2.288954 -0.875631 -3.16308 0 -0.874129 0.874126 -0.874129 2.293459 0 3.167585 l 8.995101 8.992101 h -4.858767 c -1.323206 0.0031 -2.389583 1.004796 -2.389583 2.239386 0 1.237598 1.066377 2.237888 2.389583 2.237888 h 10.154599 c 1.323206 0 2.388082 -0.998789 2.392587 -2.237888 -0.0044 -0.03305 -0.009 -0.05858 -0.0134 -0.09161 0.0046 -0.04207 0.0134 -0.08712 0.0134 -0.13066 V 40.085172 h -1.52e-4' id='path596' style='fill:%23ffffff%3Bstroke-width:1.50194' /%3E%3Cpath d='m 23.091002 35.921781 -9.026643 9.041662 v -4.881296 c 0 -1.303681 -1.009302 -2.355037 -2.242393 -2.358041 -1.237598 0 -2.237888 1.05436 -2.237888 2.358041 l -0.0031 10.016421 c 0 0.04356 0.01211 0.08862 0.0015 0.130659 -0.0031 0.03153 -0.009 0.05709 -0.01211 0.09161 0.0031 1.239099 1.069379 2.237888 2.391085 2.237888 h 10.156101 c 1.320202 0 2.388079 -1.000291 2.388079 -2.237888 0 -1.234591 -1.067877 -2.236383 -2.388079 -2.239387 h -4.858767 l 8.995101 -8.9921 c 0.871126 -0.874127 0.871126 -2.293459 0 -3.167586 -0.875628 -0.877132 -2.291957 -0.877132 -3.169087 -1.52e-4' id='path598' style='fill:%23ffffff%3Bstroke-width:1.50194' /%3E%3Cpath d='m 84.649572 25.978033 9.041662 -9.041664 v 4.881298 c 0 1.299176 1.010806 2.350532 2.240891 2.355037 1.240601 0 2.23939 -1.055861 2.23939 -2.355037 V 11.798242 c 0 -0.04356 -0.009 -0.08862 -0.0134 -0.127671 0.0044 -0.03153 0.009 -0.06157 0.0134 -0.09313 -0.0044 -1.240598 -1.069379 -2.2393873 -2.391085 -2.2393873 h -10.1546 c -1.323205 0 -2.38958 0.9987893 -2.38958 2.2393873 0 1.233091 1.066375 2.237887 2.38958 2.240891 h 4.858768 l -8.995102 8.9921 c -0.874129 0.872625 -0.874129 2.288954 0 3.161578 0.874127 0.880137 2.288951 0.880137 3.16308 1.5e-4' id='path600' style='fill:%23ffffff%3Bstroke-width:1.50194' /%3E%3Cpath d='m 17.264988 13.822853 h 4.857265 c 1.320202 -0.0031 2.388079 -1.0078 2.388079 -2.240889 0 -1.240601 -1.067877 -2.2393893 -2.388079 -2.2393893 H 11.967654 c -1.321707 0 -2.388082 0.9987883 -2.391085 2.2393893 0.0031 0.03153 0.009 0.06157 0.01211 0.09313 -0.0031 0.03905 -0.0015 0.08262 -0.0015 0.127671 l 0.0031 10.020926 c 0 1.299176 1.00029 2.355038 2.237887 2.355038 1.233092 -0.0044 2.242393 -1.055862 2.242393 -2.355038 v -4.881295 l 9.026644 9.041661 c 0.877132 0.878635 2.293459 0.878635 3.169087 0 0.871125 -0.872624 0.871125 -2.288953 0 -3.161577 l -8.995282 -8.993616' id='path602' style='fill:%23ffffff%3Bstroke-width:1.50194' /%3E%3C/svg%3E");
}
.a-enter-vr-button,
.a-enter-ar-button {
background-size: 90% 90%;
border: 0;
bottom: 0;
cursor: pointer;
min-width: 58px;
min-height: 34px;
/* 1.74418604651 */
/*
In order to keep the aspect ratio when resizing
padding-top percentages are relative to the containing block's width.
http://stackoverflow.com/questions/12121090/responsively-change-div-size-keeping-aspect-ratio
*/
padding-right: 0;
padding-top: 0;
position: absolute;
right: 0;
transition: background-color .05s ease;
-webkit-transition: background-color .05s ease;
z-index: 9999;
border-radius: 8px;
touch-action: manipulation; /* Prevent iOS double tap zoom on the button */
}
.a-enter-ar-button {
background-size: 100% 90%;
border-radius: 7px;
}
.a-enter-ar-button:active,
.a-enter-ar-button:hover,
.a-enter-vr-button:active,
.a-enter-vr-button:hover {
background-color: #ef2d5e;
}
.a-enter-vr-button.resethover {
background-color: rgba(0, 0, 0, 0.35);
}
.a-enter-vr-modal {
background-color: #666;
border-radius: 0;
display: none;
min-height: 32px;
margin-right: 70px;
padding: 9px;
width: 280px;
right: 2%;
position: absolute;
}
.a-enter-vr-modal:after {
border-bottom: 10px solid transparent;
border-left: 10px solid #666;
border-top: 10px solid transparent;
display: inline-block;
content: '';
position: absolute;
right: -5px;
top: 5px;
width: 0;
height: 0;
}
.a-enter-vr-modal p,
.a-enter-vr-modal a {
display: inline;
}
.a-enter-vr-modal p {
margin: 0;
}
.a-enter-vr-modal p:after {
content: ' ';
}
.a-orientation-modal {
background: rgba(244, 244, 244, 1) url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20version%3D%221.1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%2090%2090%22%20enable-background%3D%22new%200%200%2090%2090%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%220%2C0%200%2C0%200%2C0%20%22%3E%3C/polygon%3E%3Cg%3E%3Cpath%20d%3D%22M71.545%2C48.145h-31.98V20.743c0-2.627-2.138-4.765-4.765-4.765H18.456c-2.628%2C0-4.767%2C2.138-4.767%2C4.765v42.789%20%20%20c0%2C2.628%2C2.138%2C4.766%2C4.767%2C4.766h5.535v0.959c0%2C2.628%2C2.138%2C4.765%2C4.766%2C4.765h42.788c2.628%2C0%2C4.766-2.137%2C4.766-4.765V52.914%20%20%20C76.311%2C50.284%2C74.173%2C48.145%2C71.545%2C48.145z%20M18.455%2C16.935h16.344c2.1%2C0%2C3.808%2C1.708%2C3.808%2C3.808v27.401H37.25V22.636%20%20%20c0-0.264-0.215-0.478-0.479-0.478H16.482c-0.264%2C0-0.479%2C0.214-0.479%2C0.478v36.585c0%2C0.264%2C0.215%2C0.478%2C0.479%2C0.478h7.507v7.644%20%20%20h-5.534c-2.101%2C0-3.81-1.709-3.81-3.81V20.743C14.645%2C18.643%2C16.354%2C16.935%2C18.455%2C16.935z%20M16.96%2C23.116h19.331v25.031h-7.535%20%20%20c-2.628%2C0-4.766%2C2.139-4.766%2C4.768v5.828h-7.03V23.116z%20M71.545%2C73.064H28.757c-2.101%2C0-3.81-1.708-3.81-3.808V52.914%20%20%20c0-2.102%2C1.709-3.812%2C3.81-3.812h42.788c2.1%2C0%2C3.809%2C1.71%2C3.809%2C3.812v16.343C75.354%2C71.356%2C73.645%2C73.064%2C71.545%2C73.064z%22%3E%3C/path%3E%3Cpath%20d%3D%22M28.919%2C58.424c-1.466%2C0-2.659%2C1.193-2.659%2C2.66c0%2C1.466%2C1.193%2C2.658%2C2.659%2C2.658c1.468%2C0%2C2.662-1.192%2C2.662-2.658%20%20%20C31.581%2C59.617%2C30.387%2C58.424%2C28.919%2C58.424z%20M28.919%2C62.786c-0.939%2C0-1.703-0.764-1.703-1.702c0-0.939%2C0.764-1.704%2C1.703-1.704%20%20%20c0.94%2C0%2C1.705%2C0.765%2C1.705%2C1.704C30.623%2C62.022%2C29.858%2C62.786%2C28.919%2C62.786z%22%3E%3C/path%3E%3Cpath%20d%3D%22M69.654%2C50.461H33.069c-0.264%2C0-0.479%2C0.215-0.479%2C0.479v20.288c0%2C0.264%2C0.215%2C0.478%2C0.479%2C0.478h36.585%20%20%20c0.263%2C0%2C0.477-0.214%2C0.477-0.478V50.939C70.131%2C50.676%2C69.917%2C50.461%2C69.654%2C50.461z%20M69.174%2C51.417V70.75H33.548V51.417H69.174z%22%3E%3C/path%3E%3Cpath%20d%3D%22M45.201%2C30.296c6.651%2C0%2C12.233%2C5.351%2C12.551%2C11.977l-3.033-2.638c-0.193-0.165-0.507-0.142-0.675%2C0.048%20%20%20c-0.174%2C0.198-0.153%2C0.501%2C0.045%2C0.676l3.883%2C3.375c0.09%2C0.075%2C0.198%2C0.115%2C0.312%2C0.115c0.141%2C0%2C0.273-0.061%2C0.362-0.166%20%20%20l3.371-3.877c0.173-0.2%2C0.151-0.502-0.047-0.675c-0.194-0.166-0.508-0.144-0.676%2C0.048l-2.592%2C2.979%20%20%20c-0.18-3.417-1.629-6.605-4.099-9.001c-2.538-2.461-5.877-3.817-9.404-3.817c-0.264%2C0-0.479%2C0.215-0.479%2C0.479%20%20%20C44.72%2C30.083%2C44.936%2C30.296%2C45.201%2C30.296z%22%3E%3C/path%3E%3C/g%3E%3C/svg%3E) center no-repeat;
background-size: 50% 50%;
bottom: 0;
font-size: 14px;
font-weight: 600;
left: 0;
line-height: 20px;
right: 0;
position: fixed;
top: 0;
z-index: 9999999;
}
.a-orientation-modal:after {
color: #666;
content: "Insert phone into Cardboard holder.";
display: block;
position: absolute;
text-align: center;
top: 70%;
transform: translateY(-70%);
width: 100%;
}
.a-orientation-modal button {
background: url(data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20version%3D%221.1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%20100%20100%22%20enable-background%3D%22new%200%200%20100%20100%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23000000%22%20d%3D%22M55.209%2C50l17.803-17.803c1.416-1.416%2C1.416-3.713%2C0-5.129c-1.416-1.417-3.713-1.417-5.129%2C0L50.08%2C44.872%20%20L32.278%2C27.069c-1.416-1.417-3.714-1.417-5.129%2C0c-1.417%2C1.416-1.417%2C3.713%2C0%2C5.129L44.951%2C50L27.149%2C67.803%20%20c-1.417%2C1.416-1.417%2C3.713%2C0%2C5.129c0.708%2C0.708%2C1.636%2C1.062%2C2.564%2C1.062c0.928%2C0%2C1.856-0.354%2C2.564-1.062L50.08%2C55.13l17.803%2C17.802%20%20c0.708%2C0.708%2C1.637%2C1.062%2C2.564%2C1.062s1.856-0.354%2C2.564-1.062c1.416-1.416%2C1.416-3.713%2C0-5.129L55.209%2C50z%22%3E%3C/path%3E%3C/svg%3E) no-repeat;
border: none;
height: 50px;
text-indent: -9999px;
width: 50px;
}
.a-loader-title {
background-color: rgba(0, 0, 0, 0.6);
font-family: sans-serif, monospace;
text-align: center;
font-size: 20px;
height: 50px;
font-weight: 300;
line-height: 50px;
position: absolute;
right: 0px;
left: 0px;
top: 0px;
color: white;
}
.a-modal {
position: absolute;
background: rgba(0, 0, 0, 0.60);
background-size: 50% 50%;
bottom: 0;
font-size: 14px;
font-weight: 600;
left: 0;
line-height: 20px;
right: 0;
position: fixed;
top: 0;
z-index: 9999999;
}
.a-dialog {
position: relative;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
z-index: 199995;
width: 300px;
height: 200px;
background-size: contain;
background-color: white;
font-family: sans-serif, monospace;
font-size: 20px;
border-radius: 3px;
padding: 6px;
}
.a-dialog-text-container {
width: 100%;
height: 70%;
align-self: flex-start;
display: flex;
justify-content: center;
align-content: center;
flex-direction: column;
}
.a-dialog-text {
display: inline-block;
font-weight: normal;
font-size: 14pt;
margin: 8px;
}
.a-dialog-buttons-container {
display: inline-flex;
align-self: flex-end;
width: 100%;
height: 30%;
}
.a-dialog-button {
cursor: pointer;
align-self: center;
opacity: 0.9;
height: 80%;
width: 50%;
font-size: 12pt;
margin: 4px;
border-radius: 2px;
text-align:center;
border: none;
display: inline-block;
-webkit-transition: all 0.25s ease-in-out;
transition: all 0.25s ease-in-out;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.10), 0 1px 2px rgba(0, 0, 0, 0.20);
user-select: none;
}
.a-dialog-permission-button:hover {
box-shadow: 0 7px 14px rgba(0,0,0,0.20), 0 2px 2px rgba(0,0,0,0.20);
}
.a-dialog-allow-button {
background-color: #00ceff;
}
.a-dialog-deny-button {
background-color: #ff005b;
}
.a-dialog-ok-button {
background-color: #00ceff;
width: 100%;
}
.a-dom-overlay:not(.a-no-style) {
overflow: hidden;
position: absolute;
pointer-events: none;
box-sizing: border-box;
bottom: 0;
left: 0;
right: 0;
top: 0;
padding: 1em;
}
.a-dom-overlay:not(.a-no-style)>* {
pointer-events: auto;
}
`],sourceRoot:""}]);const j=R},"./node_modules/css-loader/dist/cjs.js!./src/style/rStats.css":(_A,O,d)=>{d.r(O),d.d(O,{default:()=>D});var s=d("./node_modules/css-loader/dist/runtime/sourceMaps.js"),z=d.n(s),_=d("./node_modules/css-loader/dist/runtime/api.js"),T=d.n(_),v=T()(z());v.push([_A.id,`.rs-base {
background-color: #333;
color: #fafafa;
border-radius: 0;
font: 10px monospace;
left: 5px;
line-height: 1em;
opacity: 0.85;
overflow: hidden;
padding: 10px;
position: fixed;
top: 5px;
width: 300px;
z-index: 10000;
}
.rs-base div.hidden {
display: none;
}
.rs-base h1 {
color: #fff;
cursor: pointer;
font-size: 1.4em;
font-weight: 300;
margin: 0 0 5px;
padding: 0;
}
.rs-group {
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column-reverse;
flex-direction: column-reverse;
margin-bottom: 5px;
}
.rs-group:last-child {
margin-bottom: 0;
}
.rs-counter-base {
align-items: center;
display: -webkit-box;
display: -webkit-flex;
display: flex;
height: 10px;
-webkit-justify-content: space-between;
justify-content: space-between;
margin: 2px 0;
}
.rs-counter-base.alarm {
color: #b70000;
text-shadow: 0 0 0 #b70000,
0 0 1px #fff,
0 0 1px #fff,
0 0 2px #fff,
0 0 2px #fff,
0 0 3px #fff,
0 0 3px #fff,
0 0 4px #fff,
0 0 4px #fff;
}
.rs-counter-id {
font-weight: 300;
-webkit-box-ordinal-group: 0;
-webkit-order: 0;
order: 0;
width: 54px;
}
.rs-counter-value {
font-weight: 300;
-webkit-box-ordinal-group: 1;
-webkit-order: 1;
order: 1;
text-align: right;
width: 35px;
}
.rs-canvas {
-webkit-box-ordinal-group: 2;
-webkit-order: 2;
order: 2;
}
@media (min-width: 480px) {
.rs-base {
left: 20px;
top: 20px;
}
}
`,"",{version:3,sources:["webpack://./src/style/rStats.css"],names:[],mappings:"AAAA;EACE,sBAAsB;EACtB,cAAc;EACd,gBAAgB;EAChB,oBAAoB;EACpB,SAAS;EACT,gBAAgB;EAChB,aAAa;EACb,gBAAgB;EAChB,aAAa;EACb,eAAe;EACf,QAAQ;EACR,YAAY;EACZ,cAAc;AAChB;;AAEA;EACE,aAAa;AACf;;AAEA;EACE,WAAW;EACX,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EAChB,eAAe;EACf,UAAU;AACZ;;AAEA;EACE,oBAAoB;EACpB,qBAAqB;EACrB,aAAa;EACb,sCAAsC;EACtC,8BAA8B;EAC9B,kBAAkB;AACpB;;AAEA;EACE,gBAAgB;AAClB;;AAEA;EACE,mBAAmB;EACnB,oBAAoB;EACpB,qBAAqB;EACrB,aAAa;EACb,YAAY;EACZ,sCAAsC;EACtC,8BAA8B;EAC9B,aAAa;AACf;;AAEA;EACE,cAAc;EACd;;;;;;;;2BAQyB;AAC3B;;AAEA;EACE,gBAAgB;EAChB,4BAA4B;EAC5B,gBAAgB;EAChB,QAAQ;EACR,WAAW;AACb;;AAEA;EACE,gBAAgB;EAChB,4BAA4B;EAC5B,gBAAgB;EAChB,QAAQ;EACR,iBAAiB;EACjB,WAAW;AACb;;AAEA;EACE,4BAA4B;EAC5B,gBAAgB;EAChB,QAAQ;AACV;;AAEA;EACE;IACE,UAAU;IACV,SAAS;EACX;AACF",sourcesContent:[`.rs-base {
background-color: #333;
color: #fafafa;
border-radius: 0;
font: 10px monospace;
left: 5px;
line-height: 1em;
opacity: 0.85;
overflow: hidden;
padding: 10px;
position: fixed;
top: 5px;
width: 300px;
z-index: 10000;
}
.rs-base div.hidden {
display: none;
}
.rs-base h1 {
color: #fff;
cursor: pointer;
font-size: 1.4em;
font-weight: 300;
margin: 0 0 5px;
padding: 0;
}
.rs-group {
display: -webkit-box;
display: -webkit-flex;
display: flex;
-webkit-flex-direction: column-reverse;
flex-direction: column-reverse;
margin-bottom: 5px;
}
.rs-group:last-child {
margin-bottom: 0;
}
.rs-counter-base {
align-items: center;
display: -webkit-box;
display: -webkit-flex;
display: flex;
height: 10px;
-webkit-justify-content: space-between;
justify-content: space-between;
margin: 2px 0;
}
.rs-counter-base.alarm {
color: #b70000;
text-shadow: 0 0 0 #b70000,
0 0 1px #fff,
0 0 1px #fff,
0 0 2px #fff,
0 0 2px #fff,
0 0 3px #fff,
0 0 3px #fff,
0 0 4px #fff,
0 0 4px #fff;
}
.rs-counter-id {
font-weight: 300;
-webkit-box-ordinal-group: 0;
-webkit-order: 0;
order: 0;
width: 54px;
}
.rs-counter-value {
font-weight: 300;
-webkit-box-ordinal-group: 1;
-webkit-order: 1;
order: 1;
text-align: right;
width: 35px;
}
.rs-canvas {
-webkit-box-ordinal-group: 2;
-webkit-order: 2;
order: 2;
}
@media (min-width: 480px) {
.rs-base {
left: 20px;
top: 20px;
}
}
`],sourceRoot:""}]);const D=v},"./src/style/aframe.css":(_A,O,d)=>{d.r(O),d.d(O,{default:()=>G});var s=d("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),z=d.n(s),_=d("./node_modules/style-loader/dist/runtime/styleDomAPI.js"),T=d.n(_),v=d("./node_modules/style-loader/dist/runtime/insertBySelector.js"),D=d.n(v),h=d("./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"),p=d.n(h),m=d("./node_modules/style-loader/dist/runtime/insertStyleElement.js"),u=d.n(m),l=d("./node_modules/style-loader/dist/runtime/styleTagTransform.js"),R=d.n(l),N=d("./node_modules/css-loader/dist/cjs.js!./src/style/aframe.css"),Y={};Y.styleTagTransform=R(),Y.setAttributes=p(),Y.insert=D().bind(null,"head"),Y.domAPI=T(),Y.insertStyleElement=u(),z()(N.default,Y);const G=N.default&&N.default.locals?N.default.locals:void 0},"./src/style/rStats.css":(_A,O,d)=>{d.r(O),d.d(O,{default:()=>G});var s=d("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),z=d.n(s),_=d("./node_modules/style-loader/dist/runtime/styleDomAPI.js"),T=d.n(_),v=d("./node_modules/style-loader/dist/runtime/insertBySelector.js"),D=d.n(v),h=d("./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js"),p=d.n(h),m=d("./node_modules/style-loader/dist/runtime/insertStyleElement.js"),u=d.n(m),l=d("./node_modules/style-loader/dist/runtime/styleTagTransform.js"),R=d.n(l),N=d("./node_modules/css-loader/dist/cjs.js!./src/style/rStats.css"),Y={};Y.styleTagTransform=R(),Y.setAttributes=p(),Y.insert=D().bind(null,"head"),Y.domAPI=T(),Y.insertStyleElement=u(),z()(N.default,Y);const G=N.default&&N.default.locals?N.default.locals:void 0},"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":_A=>{var O=[];function d(_){for(var T=-1,v=0;v<O.length;v++)if(O[v].identifier===_){T=v;break}return T}function s(_,T){for(var v={},D=[],h=0;h<_.length;h++){var p=_[h],m=T.base?p[0]+T.base:p[0],u=v[m]||0,l="".concat(m," ").concat(u);v[m]=u+1;var R=d(l),N={css:p[1],media:p[2],sourceMap:p[3],supports:p[4],layer:p[5]};if(R!==-1)O[R].references++,O[R].updater(N);else{var Y=z(N,T);T.byIndex=h,O.splice(h,0,{identifier:l,updater:Y,references:1})}D.push(l)}return D}function z(_,T){var v=T.domAPI(T);v.update(_);var D=function(p){if(p){if(p.css===_.css&&p.media===_.media&&p.sourceMap===_.sourceMap&&p.supports===_.supports&&p.layer===_.layer)return;v.update(_=p)}else v.remove()};return D}_A.exports=function(_,T){T=T||{},_=_||[];var v=s(_,T);return function(h){h=h||[];for(var p=0;p<v.length;p++){var m=v[p],u=d(m);O[u].references--}for(var l=s(h,T),R=0;R<v.length;R++){var N=v[R],Y=d(N);O[Y].references===0&&(O[Y].updater(),O.splice(Y,1))}v=l}}},"./node_modules/style-loader/dist/runtime/insertBySelector.js":_A=>{var O={};function d(z){if(typeof O[z]>"u"){var _=document.querySelector(z);if(window.HTMLIFrameElement&&_ instanceof window.HTMLIFrameElement)try{_=_.contentDocument.head}catch{_=null}O[z]=_}return O[z]}function s(z,_){var T=d(z);if(!T)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");T.appendChild(_)}_A.exports=s},"./node_modules/style-loader/dist/runtime/insertStyleElement.js":_A=>{function O(d){var s=document.createElement("style");return d.setAttributes(s,d.attributes),d.insert(s,d.options),s}_A.exports=O},"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":(_A,O,d)=>{function s(z){var _=d.nc;_&&z.setAttribute("nonce",_)}_A.exports=s},"./node_modules/style-loader/dist/runtime/styleDomAPI.js":_A=>{function O(z,_,T){var v="";T.supports&&(v+="@supports (".concat(T.supports,") {")),T.media&&(v+="@media ".concat(T.media," {"));var D=typeof T.layer<"u";D&&(v+="@layer".concat(T.layer.length>0?" ".concat(T.layer):""," {")),v+=T.css,D&&(v+="}"),T.media&&(v+="}"),T.supports&&(v+="}");var h=T.sourceMap;h&&typeof btoa<"u"&&(v+=`
/*# sourceMappingURL=data:application/json;base64,`.concat(btoa(unescape(encodeURIComponent(JSON.stringify(h))))," */")),_.styleTagTransform(v,z,_.options)}function d(z){if(z.parentNode===null)return!1;z.parentNode.removeChild(z)}function s(z){if(typeof document>"u")return{update:function(){},remove:function(){}};var _=z.insertStyleElement(z);return{update:function(v){O(_,z,v)},remove:function(){d(_)}}}_A.exports=s},"./node_modules/style-loader/dist/runtime/styleTagTransform.js":_A=>{function O(d,s){if(s.styleSheet)s.styleSheet.cssText=d;else{for(;s.firstChild;)s.removeChild(s.firstChild);s.appendChild(document.createTextNode(d))}}_A.exports=O},"data:image/svg+xml,%3C%3Fxml version=%271.0%27 encoding=%27UTF-8%27 standalone=%27no%27%3F%3E%3Csvg width=%27108%27 height=%2762%27 viewBox=%270 0 108 62%27 version=%271.1%27 id=%27svg320%27 sodipodi:docname=%27fullscreen-aframe.svg%27 xml:space=%27preserve%27 inkscape:version=%271.2.1 %289c6d41e 2022-07-14%29%27 xmlns:inkscape=%27http://www.inkscape.org/namespaces/inkscape%27 xmlns:sodipodi=%27http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd%27 xmlns=%27http://www.w3.org/2000/svg%27 xmlns:svg=%27http://www.w3.org/2000/svg%27 xmlns:rdf=%27http://www.w3.org/1999/02/22-rdf-syntax-ns%23%27 xmlns:cc=%27http://creativecommons.org/ns%23%27 xmlns:dc=%27http://purl.org/dc/elements/1.1/%27%3E%3Cdefs id=%27defs324%27 /%3E%3Csodipodi:namedview id=%27namedview322%27 pagecolor=%27%23ffffff%27 bordercolor=%27%23000000%27 borderopacity=%270.25%27 inkscape:showpageshadow=%272%27 inkscape:pageopacity=%270.0%27 inkscape:pagecheckerboard=%270%27 inkscape:deskcolor=%27%23d1d1d1%27 showgrid=%27false%27 inkscape:zoom=%273.8064516%27 inkscape:cx=%2791.423729%27 inkscape:cy=%27-1.4449153%27 inkscape:window-width=%271440%27 inkscape:window-height=%27847%27 inkscape:window-x=%2732%27 inkscape:window-y=%2725%27 inkscape:window-maximized=%270%27 inkscape:current-layer=%27svg320%27 /%3E%3Ctitle id=%27title312%27%3Eaframe-armode-noborder-reduced-tracking%3C/title%3E%3Cpath d=%27M96 0H12A12 12 0 0 0 0 12V50A12 12 0 0 0 12 62H96a12 12 0 0 0 12-12V12A12 12 0 0 0 96 0Zm8 50a8 8 0 0 1-8 8H12a8 8 0 0 1-8-8V12a8 8 0 0 1 8-8H96a8 8 0 0 1 8 8Z%27 fill=%27%23fff%27 id=%27path314%27 style=%27fill:%23ffffff%27 /%3E%3Cg id=%27g356%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g358%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g360%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g362%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g364%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g366%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g368%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g370%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g372%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g374%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g376%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g378%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g380%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g382%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g384%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cmetadata id=%27metadata561%27%3E%3Crdf:RDF%3E%3Ccc:Work rdf:about=%27%27%3E%3Cdc:title%3Eaframe-armode-noborder-reduced-tracking%3C/dc:title%3E%3C/cc:Work%3E%3C/rdf:RDF%3E%3C/metadata%3E%3Cpath d=%27m 98.168511 40.083649 c 0 -1.303681 -0.998788 -2.358041 -2.239389 -2.358041 -1.230088 0.0031 -2.240892 1.05436 -2.240892 2.358041 v 4.881296 l -9.041661 -9.041662 c -0.874129 -0.875631 -2.288954 -0.875631 -3.16308 0 -0.874129 0.874126 -0.874129 2.293459 0 3.167585 l 8.995101 8.992101 h -4.858767 c -1.323206 0.0031 -2.389583 1.004796 -2.389583 2.239386 0 1.237598 1.066377 2.237888 2.389583 2.237888 h 10.154599 c 1.323206 0 2.388082 -0.998789 2.392587 -2.237888 -0.0044 -0.03305 -0.009 -0.05858 -0.0134 -0.09161 0.0046 -0.04207 0.0134 -0.08712 0.0134 -0.13066 V 40.085172 h -1.52e-4%27 id=%27path596%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3Cpath d=%27m 23.091002 35.921781 -9.026643 9.041662 v -4.881296 c 0 -1.303681 -1.009302 -2.355037 -2.242393 -2.358041 -1.237598 0 -2.237888 1.05436 -2.237888 2.358041 l -0.0031 10.016421 c 0 0.04356 0.01211 0.08862 0.0015 0.130659 -0.0031 0.03153 -0.009 0.05709 -0.01211 0.09161 0.0031 1.239099 1.069379 2.237888 2.391085 2.237888 h 10.156101 c 1.320202 0 2.388079 -1.000291 2.388079 -2.237888 0 -1.234591 -1.067877 -2.236383 -2.388079 -2.239387 h -4.858767 l 8.995101 -8.9921 c 0.871126 -0.874127 0.871126 -2.293459 0 -3.167586 -0.875628 -0.877132 -2.291957 -0.877132 -3.169087 -1.52e-4%27 id=%27path598%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3Cpath d=%27m 84.649572 25.978033 9.041662 -9.041664 v 4.881298 c 0 1.299176 1.010806 2.350532 2.240891 2.355037 1.240601 0 2.23939 -1.055861 2.23939 -2.355037 V 11.798242 c 0 -0.04356 -0.009 -0.08862 -0.0134 -0.127671 0.0044 -0.03153 0.009 -0.06157 0.0134 -0.09313 -0.0044 -1.240598 -1.069379 -2.2393873 -2.391085 -2.2393873 h -10.1546 c -1.323205 0 -2.38958 0.9987893 -2.38958 2.2393873 0 1.233091 1.066375 2.237887 2.38958 2.240891 h 4.858768 l -8.995102 8.9921 c -0.874129 0.872625 -0.874129 2.288954 0 3.161578 0.874127 0.880137 2.288951 0.880137 3.16308 1.5e-4%27 id=%27path600%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3Cpath d=%27m 17.264988 13.822853 h 4.857265 c 1.320202 -0.0031 2.388079 -1.0078 2.388079 -2.240889 0 -1.240601 -1.067877 -2.2393893 -2.388079 -2.2393893 H 11.967654 c -1.321707 0 -2.388082 0.9987883 -2.391085 2.2393893 0.0031 0.03153 0.009 0.06157 0.01211 0.09313 -0.0031 0.03905 -0.0015 0.08262 -0.0015 0.127671 l 0.0031 10.020926 c 0 1.299176 1.00029 2.355038 2.237887 2.355038 1.233092 -0.0044 2.242393 -1.055862 2.242393 -2.355038 v -4.881295 l 9.026644 9.041661 c 0.877132 0.878635 2.293459 0.878635 3.169087 0 0.871125 -0.872624 0.871125 -2.288953 0 -3.161577 l -8.995282 -8.993616%27 id=%27path602%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3C/svg%3E":_A=>{_A.exports="data:image/svg+xml,%3C%3Fxml version=%271.0%27 encoding=%27UTF-8%27 standalone=%27no%27%3F%3E%3Csvg width=%27108%27 height=%2762%27 viewBox=%270 0 108 62%27 version=%271.1%27 id=%27svg320%27 sodipodi:docname=%27fullscreen-aframe.svg%27 xml:space=%27preserve%27 inkscape:version=%271.2.1 %289c6d41e 2022-07-14%29%27 xmlns:inkscape=%27http://www.inkscape.org/namespaces/inkscape%27 xmlns:sodipodi=%27http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd%27 xmlns=%27http://www.w3.org/2000/svg%27 xmlns:svg=%27http://www.w3.org/2000/svg%27 xmlns:rdf=%27http://www.w3.org/1999/02/22-rdf-syntax-ns%23%27 xmlns:cc=%27http://creativecommons.org/ns%23%27 xmlns:dc=%27http://purl.org/dc/elements/1.1/%27%3E%3Cdefs id=%27defs324%27 /%3E%3Csodipodi:namedview id=%27namedview322%27 pagecolor=%27%23ffffff%27 bordercolor=%27%23000000%27 borderopacity=%270.25%27 inkscape:showpageshadow=%272%27 inkscape:pageopacity=%270.0%27 inkscape:pagecheckerboard=%270%27 inkscape:deskcolor=%27%23d1d1d1%27 showgrid=%27false%27 inkscape:zoom=%273.8064516%27 inkscape:cx=%2791.423729%27 inkscape:cy=%27-1.4449153%27 inkscape:window-width=%271440%27 inkscape:window-height=%27847%27 inkscape:window-x=%2732%27 inkscape:window-y=%2725%27 inkscape:window-maximized=%270%27 inkscape:current-layer=%27svg320%27 /%3E%3Ctitle id=%27title312%27%3Eaframe-armode-noborder-reduced-tracking%3C/title%3E%3Cpath d=%27M96 0H12A12 12 0 0 0 0 12V50A12 12 0 0 0 12 62H96a12 12 0 0 0 12-12V12A12 12 0 0 0 96 0Zm8 50a8 8 0 0 1-8 8H12a8 8 0 0 1-8-8V12a8 8 0 0 1 8-8H96a8 8 0 0 1 8 8Z%27 fill=%27%23fff%27 id=%27path314%27 style=%27fill:%23ffffff%27 /%3E%3Cg id=%27g356%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g358%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g360%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g362%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g364%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g366%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g368%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g370%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g372%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g374%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g376%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g378%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g380%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g382%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cg id=%27g384%27 transform=%27translate%28-206.61017 -232.61864%29%27%3E%3C/g%3E%3Cmetadata id=%27metadata561%27%3E%3Crdf:RDF%3E%3Ccc:Work rdf:about=%27%27%3E%3Cdc:title%3Eaframe-armode-noborder-reduced-tracking%3C/dc:title%3E%3C/cc:Work%3E%3C/rdf:RDF%3E%3C/metadata%3E%3Cpath d=%27m 98.168511 40.083649 c 0 -1.303681 -0.998788 -2.358041 -2.239389 -2.358041 -1.230088 0.0031 -2.240892 1.05436 -2.240892 2.358041 v 4.881296 l -9.041661 -9.041662 c -0.874129 -0.875631 -2.288954 -0.875631 -3.16308 0 -0.874129 0.874126 -0.874129 2.293459 0 3.167585 l 8.995101 8.992101 h -4.858767 c -1.323206 0.0031 -2.389583 1.004796 -2.389583 2.239386 0 1.237598 1.066377 2.237888 2.389583 2.237888 h 10.154599 c 1.323206 0 2.388082 -0.998789 2.392587 -2.237888 -0.0044 -0.03305 -0.009 -0.05858 -0.0134 -0.09161 0.0046 -0.04207 0.0134 -0.08712 0.0134 -0.13066 V 40.085172 h -1.52e-4%27 id=%27path596%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3Cpath d=%27m 23.091002 35.921781 -9.026643 9.041662 v -4.881296 c 0 -1.303681 -1.009302 -2.355037 -2.242393 -2.358041 -1.237598 0 -2.237888 1.05436 -2.237888 2.358041 l -0.0031 10.016421 c 0 0.04356 0.01211 0.08862 0.0015 0.130659 -0.0031 0.03153 -0.009 0.05709 -0.01211 0.09161 0.0031 1.239099 1.069379 2.237888 2.391085 2.237888 h 10.156101 c 1.320202 0 2.388079 -1.000291 2.388079 -2.237888 0 -1.234591 -1.067877 -2.236383 -2.388079 -2.239387 h -4.858767 l 8.995101 -8.9921 c 0.871126 -0.874127 0.871126 -2.293459 0 -3.167586 -0.875628 -0.877132 -2.291957 -0.877132 -3.169087 -1.52e-4%27 id=%27path598%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3Cpath d=%27m 84.649572 25.978033 9.041662 -9.041664 v 4.881298 c 0 1.299176 1.010806 2.350532 2.240891 2.355037 1.240601 0 2.23939 -1.055861 2.23939 -2.355037 V 11.798242 c 0 -0.04356 -0.009 -0.08862 -0.0134 -0.127671 0.0044 -0.03153 0.009 -0.06157 0.0134 -0.09313 -0.0044 -1.240598 -1.069379 -2.2393873 -2.391085 -2.2393873 h -10.1546 c -1.323205 0 -2.38958 0.9987893 -2.38958 2.2393873 0 1.233091 1.066375 2.237887 2.38958 2.240891 h 4.858768 l -8.995102 8.9921 c -0.874129 0.872625 -0.874129 2.288954 0 3.161578 0.874127 0.880137 2.288951 0.880137 3.16308 1.5e-4%27 id=%27path600%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3Cpath d=%27m 17.264988 13.822853 h 4.857265 c 1.320202 -0.0031 2.388079 -1.0078 2.388079 -2.240889 0 -1.240601 -1.067877 -2.2393893 -2.388079 -2.2393893 H 11.967654 c -1.321707 0 -2.388082 0.9987883 -2.391085 2.2393893 0.0031 0.03153 0.009 0.06157 0.01211 0.09313 -0.0031 0.03905 -0.0015 0.08262 -0.0015 0.127671 l 0.0031 10.020926 c 0 1.299176 1.00029 2.355038 2.237887 2.355038 1.233092 -0.0044 2.242393 -1.055862 2.242393 -2.355038 v -4.881295 l 9.026644 9.041661 c 0.877132 0.878635 2.293459 0.878635 3.169087 0 0.871125 -0.872624 0.871125 -2.288953 0 -3.161577 l -8.995282 -8.993616%27 id=%27path602%27 style=%27fill:%23ffffff%3Bstroke-width:1.50194%27 /%3E%3C/svg%3E"},"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27108%27 height=%2762%27 viewBox=%270 0 108 62%27%3E%3Ctitle%3Eaframe-armode-noborder-reduced-tracking%3C/title%3E%3Cpath d=%27M96,0H12A12,12,0,0,0,0,12V50A12,12,0,0,0,12,62H96a12,12,0,0,0,12-12V12A12,12,0,0,0,96,0Zm8,50a8,8,0,0,1-8,8H12a8,8,0,0,1-8-8V12a8,8,0,0,1,8-8H96a8,8,0,0,1,8,8Z%27 fill=%27%23fff%27/%3E%3Cpath d=%27M43.35,39.82H32.51L30.45,46H23.88L35,16h5.73L52,46H45.43Zm-9.17-5h7.5L37.91,23.58Z%27 fill=%27%23fff%27/%3E%3Cpath d=%27M68.11,35H63.18V46H57V16H68.15q5.31,0,8.2,2.37a8.18,8.18,0,0,1,2.88,6.7,9.22,9.22,0,0,1-1.33,5.12,9.09,9.09,0,0,1-4,3.26l6.49,12.26V46H73.73Zm-4.93-5h5a5.09,5.09,0,0,0,3.6-1.18,4.21,4.21,0,0,0,1.28-3.27,4.56,4.56,0,0,0-1.2-3.34A5,5,0,0,0,68.15,21h-5Z%27 fill=%27%23fff%27/%3E%3C/svg%3E":_A=>{_A.exports="data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27108%27 height=%2762%27 viewBox=%270 0 108 62%27%3E%3Ctitle%3Eaframe-armode-noborder-reduced-tracking%3C/title%3E%3Cpath d=%27M96,0H12A12,12,0,0,0,0,12V50A12,12,0,0,0,12,62H96a12,12,0,0,0,12-12V12A12,12,0,0,0,96,0Zm8,50a8,8,0,0,1-8,8H12a8,8,0,0,1-8-8V12a8,8,0,0,1,8-8H96a8,8,0,0,1,8,8Z%27 fill=%27%23fff%27/%3E%3Cpath d=%27M43.35,39.82H32.51L30.45,46H23.88L35,16h5.73L52,46H45.43Zm-9.17-5h7.5L37.91,23.58Z%27 fill=%27%23fff%27/%3E%3Cpath d=%27M68.11,35H63.18V46H57V16H68.15q5.31,0,8.2,2.37a8.18,8.18,0,0,1,2.88,6.7,9.22,9.22,0,0,1-1.33,5.12,9.09,9.09,0,0,1-4,3.26l6.49,12.26V46H73.73Zm-4.93-5h5a5.09,5.09,0,0,0,3.6-1.18,4.21,4.21,0,0,0,1.28-3.27,4.56,4.56,0,0,0-1.2-3.34A5,5,0,0,0,68.15,21h-5Z%27 fill=%27%23fff%27/%3E%3C/svg%3E"},"data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27108%27 height=%2762%27 viewBox=%270 0 108 62%27%3E%3Ctitle%3Eaframe-vrmode-noborder-reduced-tracking%3C/title%3E%3Cpath d=%27M68.81,21.56H64.23v8.27h4.58a4.13,4.13,0,0,0,3.1-1.09,4.2,4.2,0,0,0,1-3,4.24,4.24,0,0,0-1-3A4.05,4.05,0,0,0,68.81,21.56Z%27 fill=%27%23fff%27/%3E%3Cpath d=%27M96,0H12A12,12,0,0,0,0,12V50A12,12,0,0,0,12,62H96a12,12,0,0,0,12-12V12A12,12,0,0,0,96,0ZM41.9,46H34L24,16h8l6,21.84,6-21.84H52Zm39.29,0H73.44L68.15,35.39H64.23V46H57V16H68.81q5.32,0,8.34,2.37a8,8,0,0,1,3,6.69,9.68,9.68,0,0,1-1.27,5.18,8.9,8.9,0,0,1-4,3.34l6.26,12.11Z%27 fill=%27%23fff%27/%3E%3C/svg%3E":_A=>{_A.exports="data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27108%27 height=%2762%27 viewBox=%270 0 108 62%27%3E%3Ctitle%3Eaframe-vrmode-noborder-reduced-tracking%3C/title%3E%3Cpath d=%27M68.81,21.56H64.23v8.27h4.58a4.13,4.13,0,0,0,3.1-1.09,4.2,4.2,0,0,0,1-3,4.24,4.24,0,0,0-1-3A4.05,4.05,0,0,0,68.81,21.56Z%27 fill=%27%23fff%27/%3E%3Cpath d=%27M96,0H12A12,12,0,0,0,0,12V50A12,12,0,0,0,12,62H96a12,12,0,0,0,12-12V12A12,12,0,0,0,96,0ZM41.9,46H34L24,16h8l6,21.84,6-21.84H52Zm39.29,0H73.44L68.15,35.39H64.23V46H57V16H68.81q5.32,0,8.34,2.37a8,8,0,0,1,3,6.69,9.68,9.68,0,0,1-1.27,5.18,8.9,8.9,0,0,1-4,3.34l6.26,12.11Z%27 fill=%27%23fff%27/%3E%3C/svg%3E"},"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20version%3D%221.1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%20100%20100%22%20enable-background%3D%22new%200%200%20100%20100%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23000000%22%20d%3D%22M55.209%2C50l17.803-17.803c1.416-1.416%2C1.416-3.713%2C0-5.129c-1.416-1.417-3.713-1.417-5.129%2C0L50.08%2C44.872%20%20L32.278%2C27.069c-1.416-1.417-3.714-1.417-5.129%2C0c-1.417%2C1.416-1.417%2C3.713%2C0%2C5.129L44.951%2C50L27.149%2C67.803%20%20c-1.417%2C1.416-1.417%2C3.713%2C0%2C5.129c0.708%2C0.708%2C1.636%2C1.062%2C2.564%2C1.062c0.928%2C0%2C1.856-0.354%2C2.564-1.062L50.08%2C55.13l17.803%2C17.802%20%20c0.708%2C0.708%2C1.637%2C1.062%2C2.564%2C1.062s1.856-0.354%2C2.564-1.062c1.416-1.416%2C1.416-3.713%2C0-5.129L55.209%2C50z%22%3E%3C/path%3E%3C/svg%3E":_A=>{_A.exports="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20version%3D%221.1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%20100%20100%22%20enable-background%3D%22new%200%200%20100%20100%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpath%20fill%3D%22%23000000%22%20d%3D%22M55.209%2C50l17.803-17.803c1.416-1.416%2C1.416-3.713%2C0-5.129c-1.416-1.417-3.713-1.417-5.129%2C0L50.08%2C44.872%20%20L32.278%2C27.069c-1.416-1.417-3.714-1.417-5.129%2C0c-1.417%2C1.416-1.417%2C3.713%2C0%2C5.129L44.951%2C50L27.149%2C67.803%20%20c-1.417%2C1.416-1.417%2C3.713%2C0%2C5.129c0.708%2C0.708%2C1.636%2C1.062%2C2.564%2C1.062c0.928%2C0%2C1.856-0.354%2C2.564-1.062L50.08%2C55.13l17.803%2C17.802%20%20c0.708%2C0.708%2C1.637%2C1.062%2C2.564%2C1.062s1.856-0.354%2C2.564-1.062c1.416-1.416%2C1.416-3.713%2C0-5.129L55.209%2C50z%22%3E%3C/path%3E%3C/svg%3E"},"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20version%3D%221.1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%2090%2090%22%20enable-background%3D%22new%200%200%2090%2090%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%220%2C0%200%2C0%200%2C0%20%22%3E%3C/polygon%3E%3Cg%3E%3Cpath%20d%3D%22M71.545%2C48.145h-31.98V20.743c0-2.627-2.138-4.765-4.765-4.765H18.456c-2.628%2C0-4.767%2C2.138-4.767%2C4.765v42.789%20%20%20c0%2C2.628%2C2.138%2C4.766%2C4.767%2C4.766h5.535v0.959c0%2C2.628%2C2.138%2C4.765%2C4.766%2C4.765h42.788c2.628%2C0%2C4.766-2.137%2C4.766-4.765V52.914%20%20%20C76.311%2C50.284%2C74.173%2C48.145%2C71.545%2C48.145z%20M18.455%2C16.935h16.344c2.1%2C0%2C3.808%2C1.708%2C3.808%2C3.808v27.401H37.25V22.636%20%20%20c0-0.264-0.215-0.478-0.479-0.478H16.482c-0.264%2C0-0.479%2C0.214-0.479%2C0.478v36.585c0%2C0.264%2C0.215%2C0.478%2C0.479%2C0.478h7.507v7.644%20%20%20h-5.534c-2.101%2C0-3.81-1.709-3.81-3.81V20.743C14.645%2C18.643%2C16.354%2C16.935%2C18.455%2C16.935z%20M16.96%2C23.116h19.331v25.031h-7.535%20%20%20c-2.628%2C0-4.766%2C2.139-4.766%2C4.768v5.828h-7.03V23.116z%20M71.545%2C73.064H28.757c-2.101%2C0-3.81-1.708-3.81-3.808V52.914%20%20%20c0-2.102%2C1.709-3.812%2C3.81-3.812h42.788c2.1%2C0%2C3.809%2C1.71%2C3.809%2C3.812v16.343C75.354%2C71.356%2C73.645%2C73.064%2C71.545%2C73.064z%22%3E%3C/path%3E%3Cpath%20d%3D%22M28.919%2C58.424c-1.466%2C0-2.659%2C1.193-2.659%2C2.66c0%2C1.466%2C1.193%2C2.658%2C2.659%2C2.658c1.468%2C0%2C2.662-1.192%2C2.662-2.658%20%20%20C31.581%2C59.617%2C30.387%2C58.424%2C28.919%2C58.424z%20M28.919%2C62.786c-0.939%2C0-1.703-0.764-1.703-1.702c0-0.939%2C0.764-1.704%2C1.703-1.704%20%20%20c0.94%2C0%2C1.705%2C0.765%2C1.705%2C1.704C30.623%2C62.022%2C29.858%2C62.786%2C28.919%2C62.786z%22%3E%3C/path%3E%3Cpath%20d%3D%22M69.654%2C50.461H33.069c-0.264%2C0-0.479%2C0.215-0.479%2C0.479v20.288c0%2C0.264%2C0.215%2C0.478%2C0.479%2C0.478h36.585%20%20%20c0.263%2C0%2C0.477-0.214%2C0.477-0.478V50.939C70.131%2C50.676%2C69.917%2C50.461%2C69.654%2C50.461z%20M69.174%2C51.417V70.75H33.548V51.417H69.174z%22%3E%3C/path%3E%3Cpath%20d%3D%22M45.201%2C30.296c6.651%2C0%2C12.233%2C5.351%2C12.551%2C11.977l-3.033-2.638c-0.193-0.165-0.507-0.142-0.675%2C0.048%20%20%20c-0.174%2C0.198-0.153%2C0.501%2C0.045%2C0.676l3.883%2C3.375c0.09%2C0.075%2C0.198%2C0.115%2C0.312%2C0.115c0.141%2C0%2C0.273-0.061%2C0.362-0.166%20%20%20l3.371-3.877c0.173-0.2%2C0.151-0.502-0.047-0.675c-0.194-0.166-0.508-0.144-0.676%2C0.048l-2.592%2C2.979%20%20%20c-0.18-3.417-1.629-6.605-4.099-9.001c-2.538-2.461-5.877-3.817-9.404-3.817c-0.264%2C0-0.479%2C0.215-0.479%2C0.479%20%20%20C44.72%2C30.083%2C44.936%2C30.296%2C45.201%2C30.296z%22%3E%3C/path%3E%3C/g%3E%3C/svg%3E":_A=>{_A.exports="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20xmlns%3Axlink%3D%22http%3A//www.w3.org/1999/xlink%22%20version%3D%221.1%22%20x%3D%220px%22%20y%3D%220px%22%20viewBox%3D%220%200%2090%2090%22%20enable-background%3D%22new%200%200%2090%2090%22%20xml%3Aspace%3D%22preserve%22%3E%3Cpolygon%20points%3D%220%2C0%200%2C0%200%2C0%20%22%3E%3C/polygon%3E%3Cg%3E%3Cpath%20d%3D%22M71.545%2C48.145h-31.98V20.743c0-2.627-2.138-4.765-4.765-4.765H18.456c-2.628%2C0-4.767%2C2.138-4.767%2C4.765v42.789%20%20%20c0%2C2.628%2C2.138%2C4.766%2C4.767%2C4.766h5.535v0.959c0%2C2.628%2C2.138%2C4.765%2C4.766%2C4.765h42.788c2.628%2C0%2C4.766-2.137%2C4.766-4.765V52.914%20%20%20C76.311%2C50.284%2C74.173%2C48.145%2C71.545%2C48.145z%20M18.455%2C16.935h16.344c2.1%2C0%2C3.808%2C1.708%2C3.808%2C3.808v27.401H37.25V22.636%20%20%20c0-0.264-0.215-0.478-0.479-0.478H16.482c-0.264%2C0-0.479%2C0.214-0.479%2C0.478v36.585c0%2C0.264%2C0.215%2C0.478%2C0.479%2C0.478h7.507v7.644%20%20%20h-5.534c-2.101%2C0-3.81-1.709-3.81-3.81V20.743C14.645%2C18.643%2C16.354%2C16.935%2C18.455%2C16.935z%20M16.96%2C23.116h19.331v25.031h-7.535%20%20%20c-2.628%2C0-4.766%2C2.139-4.766%2C4.768v5.828h-7.03V23.116z%20M71.545%2C73.064H28.757c-2.101%2C0-3.81-1.708-3.81-3.808V52.914%20%20%20c0-2.102%2C1.709-3.812%2C3.81-3.812h42.788c2.1%2C0%2C3.809%2C1.71%2C3.809%2C3.812v16.343C75.354%2C71.356%2C73.645%2C73.064%2C71.545%2C73.064z%22%3E%3C/path%3E%3Cpath%20d%3D%22M28.919%2C58.424c-1.466%2C0-2.659%2C1.193-2.659%2C2.66c0%2C1.466%2C1.193%2C2.658%2C2.659%2C2.658c1.468%2C0%2C2.662-1.192%2C2.662-2.658%20%20%20C31.581%2C59.617%2C30.387%2C58.424%2C28.919%2C58.424z%20M28.919%2C62.786c-0.939%2C0-1.703-0.764-1.703-1.702c0-0.939%2C0.764-1.704%2C1.703-1.704%20%20%20c0.94%2C0%2C1.705%2C0.765%2C1.705%2C1.704C30.623%2C62.022%2C29.858%2C62.786%2C28.919%2C62.786z%22%3E%3C/path%3E%3Cpath%20d%3D%22M69.654%2C50.461H33.069c-0.264%2C0-0.479%2C0.215-0.479%2C0.479v20.288c0%2C0.264%2C0.215%2C0.478%2C0.479%2C0.478h36.585%20%20%20c0.263%2C0%2C0.477-0.214%2C0.477-0.478V50.939C70.131%2C50.676%2C69.917%2C50.461%2C69.654%2C50.461z%20M69.174%2C51.417V70.75H33.548V51.417H69.174z%22%3E%3C/path%3E%3Cpath%20d%3D%22M45.201%2C30.296c6.651%2C0%2C12.233%2C5.351%2C12.551%2C11.977l-3.033-2.638c-0.193-0.165-0.507-0.142-0.675%2C0.048%20%20%20c-0.174%2C0.198-0.153%2C0.501%2C0.045%2C0.676l3.883%2C3.375c0.09%2C0.075%2C0.198%2C0.115%2C0.312%2C0.115c0.141%2C0%2C0.273-0.061%2C0.362-0.166%20%20%20l3.371-3.877c0.173-0.2%2C0.151-0.502-0.047-0.675c-0.194-0.166-0.508-0.144-0.676%2C0.048l-2.592%2C2.979%20%20%20c-0.18-3.417-1.629-6.605-4.099-9.001c-2.538-2.461-5.877-3.817-9.404-3.817c-0.264%2C0-0.479%2C0.215-0.479%2C0.479%20%20%20C44.72%2C30.083%2C44.936%2C30.296%2C45.201%2C30.296z%22%3E%3C/path%3E%3C/g%3E%3C/svg%3E"},"./node_modules/three/build/three.core.js":(_A,O,d)=>{d.r(O),d.d(O,{ACESFilmicToneMapping:()=>Kt,AddEquation:()=>QA,AddOperation:()=>bn,AdditiveAnimationBlendMode:()=>Jg,AdditiveBlending:()=>U,AgXToneMapping:()=>vA,AlphaFormat:()=>Ka,AlwaysCompare:()=>Ra,AlwaysDepth:()=>le,AlwaysStencilFunc:()=>vi,AmbientLight:()=>hQ,AnimationAction:()=>$I,AnimationClip:()=>fB,AnimationLoader:()=>uE,AnimationMixer:()=>HC,AnimationObjectGroup:()=>na,AnimationUtils:()=>ml,ArcCurve:()=>Il,ArrayCamera:()=>Ll,ArrowHelper:()=>mh,AttachedBindMode:()=>ZA,Audio:()=>Ih,AudioAnalyser:()=>fQ,AudioContext:()=>pE,AudioListener:()=>bl,AudioLoader:()=>Nl,AxesHelper:()=>FQ,BackSide:()=>N,BasicDepthPacking:()=>LA,BasicShadowMap:()=>p,BatchedMesh:()=>XQ,Bone:()=>vr,BooleanKeyframeTrack:()=>mC,Box2:()=>lh,Box3:()=>Xr,Box3Helper:()=>ql,BoxGeometry:()=>ro,BoxHelper:()=>Ol,BufferAttribute:()=>an,BufferGeometry:()=>Rn,BufferGeometryLoader:()=>nh,ByteType:()=>Tg,Cache:()=>xI,Camera:()=>Ui,CameraHelper:()=>LB,CanvasTexture:()=>gl,CapsuleGeometry:()=>VE,CatmullRomCurve3:()=>Cl,CineonToneMapping:()=>_o,CircleGeometry:()=>ZE,ClampToEdgeWrapping:()=>De,Clock:()=>dQ,Color:()=>ht,ColorKeyframeTrack:()=>aQ,ColorManagement:()=>zo,CompressedArrayTexture:()=>rl,CompressedCubeTexture:()=>sl,CompressedTexture:()=>IE,CompressedTextureLoader:()=>Wc,ConeGeometry:()=>jE,ConstantAlphaFactor:()=>gA,ConstantColorFactor:()=>ct,Controls:()=>FC,CubeCamera:()=>kC,CubeReflectionMapping:()=>aA,CubeRefractionMapping:()=>H,CubeTexture:()=>Ya,CubeTextureLoader:()=>wl,CubeUVReflectionMapping:()=>YA,CubicBezierCurve:()=>Cc,CubicBezierCurve3:()=>El,CubicInterpolant:()=>Yc,CullFaceBack:()=>v,CullFaceFront:()=>D,CullFaceFrontBack:()=>h,CullFaceNone:()=>T,Curve:()=>eI,CurvePath:()=>cl,CustomBlending:()=>CA,CustomToneMapping:()=>xA,CylinderGeometry:()=>oB,Cylindrical:()=>hh,Data3DTexture:()=>Po,DataArrayTexture:()=>Sn,DataTexture:()=>es,DataTextureLoader:()=>Ml,DataUtils:()=>Gr,DecrementStencilOp:()=>vn,DecrementWrapStencilOp:()=>Io,DefaultLoadingManager:()=>Oc,DepthFormat:()=>gt,DepthStencilFormat:()=>Gt,DepthTexture:()=>al,DetachedBindMode:()=>jA,DirectionalLight:()=>$c,DirectionalLightHelper:()=>ph,DiscreteInterpolant:()=>Hc,DodecahedronGeometry:()=>No,DoubleSide:()=>Y,DstAlphaFactor:()=>He,DstColorFactor:()=>ye,DynamicCopyUsage:()=>sg,DynamicDrawUsage:()=>js,DynamicReadUsage:()=>Xs,EdgesGeometry:()=>hc,EllipseCurve:()=>OE,EqualCompare:()=>Ja,EqualDepth:()=>bt,EqualStencilFunc:()=>Pr,EquirectangularReflectionMapping:()=>k,EquirectangularRefractionMapping:()=>DA,Euler:()=>w,EventDispatcher:()=>qn,ExtrudeGeometry:()=>CB,FileLoader:()=>bI,Float16BufferAttribute:()=>So,Float32BufferAttribute:()=>he,FloatType:()=>Kg,Fog:()=>FI,FogExp2:()=>sC,FramebufferTexture:()=>ol,FrontSide:()=>R,Frustum:()=>_E,GLBufferAttribute:()=>wE,GLSL1:()=>Yo,GLSL3:()=>Co,GreaterCompare:()=>zg,GreaterDepth:()=>hi,GreaterEqualCompare:()=>Ca,GreaterEqualDepth:()=>pi,GreaterEqualStencilFunc:()=>dg,GreaterStencilFunc:()=>Or,GridHelper:()=>RE,Group:()=>QI,HalfFloatType:()=>lr,HemisphereLight:()=>Vc,HemisphereLightHelper:()=>Pl,IcosahedronGeometry:()=>BB,ImageBitmapLoader:()=>vl,ImageLoader:()=>pB,ImageUtils:()=>kr,IncrementStencilOp:()=>zt,IncrementWrapStencilOp:()=>Fo,InstancedBufferAttribute:()=>ka,InstancedBufferGeometry:()=>ih,InstancedInterleavedBuffer:()=>Qh,InstancedMesh:()=>ZQ,Int16BufferAttribute:()=>Oi,Int32BufferAttribute:()=>io,Int8BufferAttribute:()=>li,IntType:()=>os,InterleavedBuffer:()=>gC,InterleavedBufferAttribute:()=>vI,Interpolant:()=>hB,InterpolateDiscrete:()=>Ma,InterpolateLinear:()=>gI,InterpolateSmooth:()=>Cr,InvertStencilOp:()=>Lr,KeepStencilOp:()=>Ft,KeyframeTrack:()=>tI,LOD:()=>_s,LatheGeometry:()=>QE,Layers:()=>L,LessCompare:()=>Yg,LessDepth:()=>Qt,LessEqualCompare:()=>ug,LessEqualDepth:()=>Ct,LessEqualStencilFunc:()=>xr,LessStencilFunc:()=>bg,Light:()=>kI,LightProbe:()=>th,Line:()=>zI,Line3:()=>dh,LineBasicMaterial:()=>ia,LineCurve:()=>Bc,LineCurve3:()=>Ql,LineDashedMaterial:()=>Tc,LineLoop:()=>tc,LineSegments:()=>cI,LinearFilter:()=>kn,LinearInterpolant:()=>gQ,LinearMipMapLinearFilter:()=>cg,LinearMipMapNearestFilter:()=>Ss,LinearMipmapLinearFilter:()=>is,LinearMipmapNearestFilter:()=>hr,LinearSRGBColorSpace:()=>Fe,LinearToneMapping:()=>Ao,LinearTransfer:()=>xe,Loader:()=>da,LoaderUtils:()=>lQ,LoadingManager:()=>IQ,LoopOnce:()=>sI,LoopPingPong:()=>oC,LoopRepeat:()=>pI,LuminanceAlphaFormat:()=>ut,LuminanceFormat:()=>We,MOUSE:()=>z,Material:()=>Jt,MaterialLoader:()=>fE,MathUtils:()=>MI,Matrix2:()=>WC,Matrix3:()=>ds,Matrix4:()=>Eo,MaxEquation:()=>pA,Mesh:()=>Jn,MeshBasicMaterial:()=>Bi,MeshDepthMaterial:()=>bc,MeshDistanceMaterial:()=>kc,MeshLambertMaterial:()=>xc,MeshMatcapMaterial:()=>_c,MeshNormalMaterial:()=>Lc,MeshPhongMaterial:()=>Nc,MeshPhysicalMaterial:()=>vc,MeshStandardMaterial:()=>oQ,MeshToonMaterial:()=>Uc,MinEquation:()=>TA,MirroredRepeatWrapping:()=>si,MixOperation:()=>En,MultiplyBlending:()=>Z,MultiplyOperation:()=>sn,NearestFilter:()=>Mi,NearestMipMapLinearFilter:()=>Zr,NearestMipMapNearestFilter:()=>nn,NearestMipmapLinearFilter:()=>zi,NearestMipmapNearestFilter:()=>Si,NeutralToneMapping:()=>ie,NeverCompare:()=>fo,NeverDepth:()=>ge,NeverStencilFunc:()=>rs,NoBlending:()=>G,NoColorSpace:()=>ee,NoToneMapping:()=>go,NormalAnimationBlendMode:()=>jr,NormalBlending:()=>x,NotEqualCompare:()=>fg,NotEqualDepth:()=>un,NotEqualStencilFunc:()=>Gs,NumberKeyframeTrack:()=>lB,Object3D:()=>be,ObjectLoader:()=>Gl,ObjectSpaceNormalMap:()=>Ue,OctahedronGeometry:()=>YC,OneFactor:()=>uA,OneMinusConstantAlphaFactor:()=>yA,OneMinusConstantColorFactor:()=>q,OneMinusDstAlphaFactor:()=>Oe,OneMinusDstColorFactor:()=>Ye,OneMinusSrcAlphaFactor:()=>pe,OneMinusSrcColorFactor:()=>NA,OrthographicCamera:()=>cQ,PCFShadowMap:()=>m,PCFSoftShadowMap:()=>u,Path:()=>EE,PerspectiveCamera:()=>ks,Plane:()=>IC,PlaneGeometry:()=>EB,PlaneHelper:()=>ZC,PointLight:()=>Xc,PointLightHelper:()=>fh,Points:()=>nc,PointsMaterial:()=>HE,PolarGridHelper:()=>VC,PolyhedronGeometry:()=>QC,PositionalAudio:()=>kl,PropertyBinding:()=>gr,PropertyMixer:()=>Bh,QuadraticBezierCurve:()=>Ec,QuadraticBezierCurve3:()=>Qc,Quaternion:()=>$o,QuaternionKeyframeTrack:()=>dB,QuaternionLinearInterpolant:()=>Pc,RAD2DEG:()=>Ga,RED_GREEN_RGTC2_Format:()=>Rs,RED_RGTC1_Format:()=>rg,REVISION:()=>s,RGBADepthPacking:()=>$A,RGBAFormat:()=>me,RGBAIntegerFormat:()=>mn,RGBA_ASTC_10x10_Format:()=>Zg,RGBA_ASTC_10x5_Format:()=>sa,RGBA_ASTC_10x6_Format:()=>ga,RGBA_ASTC_10x8_Format:()=>qa,RGBA_ASTC_12x10_Format:()=>jg,RGBA_ASTC_12x12_Format:()=>hg,RGBA_ASTC_4x4_Format:()=>Ur,RGBA_ASTC_5x4_Format:()=>Ng,RGBA_ASTC_5x5_Format:()=>Ug,RGBA_ASTC_6x5_Format:()=>Gg,RGBA_ASTC_6x6_Format:()=>Hr,RGBA_ASTC_8x5_Format:()=>Vg,RGBA_ASTC_8x6_Format:()=>Fg,RGBA_ASTC_8x8_Format:()=>ra,RGBA_BPTC_Format:()=>Xg,RGBA_ETC2_EAC_Format:()=>og,RGBA_PVRTC_2BPPV1_Format:()=>On,RGBA_PVRTC_4BPPV1_Format:()=>$r,RGBA_S3TC_DXT1_Format:()=>pr,RGBA_S3TC_DXT3_Format:()=>Ro,RGBA_S3TC_DXT5_Format:()=>ao,RGBDepthPacking:()=>re,RGBFormat:()=>XA,RGBIntegerFormat:()=>Qn,RGB_BPTC_SIGNED_Format:()=>aa,RGB_BPTC_UNSIGNED_Format:()=>lg,RGB_ETC1_Format:()=>Go,RGB_ETC2_Format:()=>Ys,RGB_PVRTC_2BPPV1_Format:()=>Yr,RGB_PVRTC_4BPPV1_Format:()=>Uo,RGB_S3TC_DXT1_Format:()=>Pn,RGDepthPacking:()=>Te,RGFormat:()=>xi,RGIntegerFormat:()=>Ut,RawShaderMaterial:()=>Fc,Ray:()=>eg,Raycaster:()=>ME,RectAreaLight:()=>Ah,RedFormat:()=>ai,RedIntegerFormat:()=>Pi,ReinhardToneMapping:()=>Kn,RenderTarget:()=>Ig,RenderTarget3D:()=>MB,RenderTargetArray:()=>PC,RepeatWrapping:()=>ue,ReplaceStencilOp:()=>Qi,ReverseSubtractEquation:()=>UA,RingGeometry:()=>QB,SIGNED_RED_GREEN_RGTC2_Format:()=>Ia,SIGNED_RED_RGTC1_Format:()=>Lg,SRGBColorSpace:()=>Ie,SRGBTransfer:()=>Lt,Scene:()=>$C,ShaderMaterial:()=>Ni,ShadowMaterial:()=>Gc,Shape:()=>cC,ShapeGeometry:()=>cB,ShapePath:()=>vE,ShapeUtils:()=>lI,ShortType:()=>ps,Skeleton:()=>AI,SkeletonHelper:()=>uh,SkinnedMesh:()=>NI,Source:()=>Ee,Sphere:()=>Rr,SphereGeometry:()=>dI,Spherical:()=>ch,SphericalHarmonics3:()=>eh,SplineCurve:()=>cc,SpotLight:()=>EQ,SpotLightHelper:()=>Hl,Sprite:()=>uo,SpriteMaterial:()=>AB,SrcAlphaFactor:()=>HA,SrcAlphaSaturateFactor:()=>Et,SrcColorFactor:()=>lA,StaticCopyUsage:()=>mI,StaticDrawUsage:()=>Fs,StaticReadUsage:()=>br,StereoCamera:()=>Ul,StreamCopyUsage:()=>zs,StreamDrawUsage:()=>ls,StreamReadUsage:()=>vs,StringKeyframeTrack:()=>DC,SubtractEquation:()=>SA,SubtractiveBlending:()=>j,TOUCH:()=>_,TangentSpaceNormalMap:()=>Ke,TetrahedronGeometry:()=>Os,Texture:()=>To,TextureLoader:()=>Sl,TextureUtils:()=>Dh,TimestampQuery:()=>DI,TorusGeometry:()=>qs,TorusKnotGeometry:()=>fC,Triangle:()=>Dt,TriangleFanDrawMode:()=>eA,TriangleStripDrawMode:()=>Wa,TrianglesDrawMode:()=>xg,TubeGeometry:()=>dE,UVMapping:()=>Be,Uint16BufferAttribute:()=>to,Uint32BufferAttribute:()=>bo,Uint8BufferAttribute:()=>Zt,Uint8ClampedBufferAttribute:()=>yi,Uniform:()=>AC,UniformsGroup:()=>SB,UniformsUtils:()=>Ri,UnsignedByteType:()=>ns,UnsignedInt248Type:()=>oa,UnsignedInt5999Type:()=>wa,UnsignedIntType:()=>Da,UnsignedShort4444Type:()=>Nr,UnsignedShort5551Type:()=>ya,UnsignedShortType:()=>Wg,VSMShadowMap:()=>l,Vector2:()=>ni,Vector3:()=>Qe,Vector4:()=>ir,VectorKeyframeTrack:()=>uB,VideoFrameTexture:()=>nl,VideoTexture:()=>rc,WebGL3DRenderTarget:()=>po,WebGLArrayRenderTarget:()=>Wn,WebGLCoordinateSystem:()=>ss,WebGLCubeRenderTarget:()=>EI,WebGLRenderTarget:()=>fi,WebGPUCoordinateSystem:()=>Ns,WebXRController:()=>_C,WireframeGeometry:()=>Mc,WrapAroundEnding:()=>ii,ZeroCurvatureEnding:()=>Sa,ZeroFactor:()=>hA,ZeroSlopeEnding:()=>In,ZeroStencilOp:()=>Vt,arrayNeedsUint32:()=>SI,cloneUniforms:()=>ke,createCanvasElement:()=>ag,createElementNS:()=>vo,getByteLength:()=>kB,getUnlitUniformColorSpace:()=>bi,mergeUniforms:()=>Tt,probeAsync:()=>Ea,toNormalizedProjectionMatrix:()=>CI,toReversedProjectionMatrix:()=>qI,warnOnce:()=>RI});/**
* @license
* Copyright 2010-2025 Three.js Authors
* SPDX-License-Identifier: MIT
*/const s="173",z={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},_={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},T=0,v=1,D=2,h=3,p=0,m=1,u=2,l=3,R=0,N=1,Y=2,G=0,x=1,U=2,j=3,Z=4,CA=5,QA=100,SA=101,UA=102,TA=103,pA=104,hA=200,uA=201,lA=202,NA=203,HA=204,pe=205,He=206,Oe=207,ye=208,Ye=209,Et=210,ct=211,q=212,gA=213,yA=214,ge=0,le=1,Qt=2,Ct=3,bt=4,pi=5,hi=6,un=7,sn=0,En=1,bn=2,go=0,Ao=1,Kn=2,_o=3,Kt=4,xA=5,vA=6,ie=7,ZA="attached",jA="detached",Be=300,aA=301,H=302,k=303,DA=304,YA=306,ue=1e3,De=1001,si=1002,Mi=1003,Si=1004,nn=1004,zi=1005,Zr=1005,kn=1006,hr=1007,Ss=1007,is=1008,cg=1008,ns=1009,Tg=1010,ps=1011,Wg=1012,os=1013,Da=1014,Kg=1015,lr=1016,Nr=1017,ya=1018,oa=1020,wa=35902,Ka=1021,XA=1022,me=1023,We=1024,ut=1025,gt=1026,Gt=1027,ai=1028,Pi=1029,xi=1030,Ut=1031,Qn=1032,mn=1033,Pn=33776,pr=33777,Ro=33778,ao=33779,Uo=35840,Yr=35841,$r=35842,On=35843,Go=36196,Ys=37492,og=37496,Ur=37808,Ng=37809,Ug=37810,Gg=37811,Hr=37812,Vg=37813,Fg=37814,ra=37815,sa=37816,ga=37817,qa=37818,Zg=37819,jg=37820,hg=37821,Xg=36492,aa=36494,lg=36495,rg=36283,Lg=36284,Rs=36285,Ia=36286,sI=2200,pI=2201,oC=2202,Ma=2300,gI=2301,Cr=2302,Sa=2400,In=2401,ii=2402,jr=2500,Jg=2501,xg=0,Wa=1,eA=2,LA=3200,$A=3201,re=3202,Te=3203,Ke=0,Ue=1,ee="",Ie="srgb",Fe="srgb-linear",xe="linear",Lt="srgb",Vt=0,Ft=7680,Qi=7681,zt=7682,vn=7683,Fo=34055,Io=34056,Lr=5386,rs=512,bg=513,Pr=514,xr=515,Or=516,Gs=517,dg=518,vi=519,fo=512,Yg=513,Ja=514,ug=515,zg=516,fg=517,Ca=518,Ra=519,Fs=35044,js=35048,ls=35040,br=35045,Xs=35049,vs=35041,mI=35046,sg=35050,zs=35042,Yo="100",Co="300 es",ss=2e3,Ns=2001,DI={COMPUTE:"compute",RENDER:"render"};class qn{addEventListener(e,i){this._listeners===void 0&&(this._listeners={});const o=this._listeners;o[e]===void 0&&(o[e]=[]),o[e].indexOf(i)===-1&&o[e].push(i)}hasEventListener(e,i){const o=this._listeners;return o===void 0?!1:o[e]!==void 0&&o[e].indexOf(i)!==-1}removeEventListener(e,i){const o=this._listeners;if(o===void 0)return;const g=o[e];if(g!==void 0){const C=g.indexOf(i);C!==-1&&g.splice(C,1)}}dispatchEvent(e){const i=this._listeners;if(i===void 0)return;const o=i[e.type];if(o!==void 0){e.target=this;const g=o.slice(0);for(let C=0,c=g.length;C<c;C++)g[C].call(this,e);e.target=null}}}const Ho=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let yI=1234567;const $g=Math.PI/180,Ga=180/Math.PI;function gg(){const P=Math.random()*4294967295|0,e=Math.random()*4294967295|0,i=Math.random()*4294967295|0,o=Math.random()*4294967295|0;return(Ho[P&255]+Ho[P>>8&255]+Ho[P>>16&255]+Ho[P>>24&255]+"-"+Ho[e&255]+Ho[e>>8&255]+"-"+Ho[e>>16&15|64]+Ho[e>>24&255]+"-"+Ho[i&63|128]+Ho[i>>8&255]+"-"+Ho[i>>16&255]+Ho[i>>24&255]+Ho[o&255]+Ho[o>>8&255]+Ho[o>>16&255]+Ho[o>>24&255]).toLowerCase()}function no(P,e,i){return Math.max(e,Math.min(i,P))}function aI(P,e){return(P%e+e)%e}function wI(P,e,i,o,g){return o+(P-e)*(g-o)/(i-e)}function rC(P,e,i){return P!==e?(i-P)/(e-P):0}function Lo(P,e,i){return(1-i)*P+i*e}function Aa(P,e,i,o){return Lo(P,e,1-Math.exp(-i*o))}function II(P,e=1){return e-Math.abs(aI(P,e*2)-e)}function Fa(P,e,i){return P<=e?0:P>=i?1:(P=(P-e)/(i-e),P*P*(3-2*P))}function OI(P,e,i){return P<=e?0:P>=i?1:(P=(P-e)/(i-e),P*P*P*(P*(P*6-15)+10))}function Dn(P,e){return P+Math.floor(Math.random()*(e-P+1))}function fA(P,e){return P+Math.random()*(e-P)}function Bs(P){return P*(.5-Math.random())}function Ot(P){P!==void 0&&(yI=P);let e=yI+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function Bo(P){return P*$g}function va(P){return P*Ga}function Na(P){return(P&P-1)===0&&P!==0}function Ua(P){return Math.pow(2,Math.ceil(Math.log(P)/Math.LN2))}function ea(P){return Math.pow(2,Math.floor(Math.log(P)/Math.LN2))}function La(P,e,i,o,g){const C=Math.cos,c=Math.sin,f=C(i/2),S=c(i/2),b=C((e+o)/2),$=c((e+o)/2),oA=C((e-o)/2),rA=c((e-o)/2),IA=C((o-e)/2),cA=c((o-e)/2);switch(g){case"XYX":P.set(f*$,S*oA,S*rA,f*b);break;case"YZY":P.set(S*rA,f*$,S*oA,f*b);break;case"ZXZ":P.set(S*oA,S*rA,f*$,f*b);break;case"XZX":P.set(f*$,S*cA,S*IA,f*b);break;case"YXY":P.set(S*IA,f*$,S*cA,f*b);break;case"ZYZ":P.set(S*cA,S*IA,f*$,f*b);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+g)}}function ms(P,e){switch(e.constructor){case Float32Array:return P;case Uint32Array:return P/4294967295;case Uint16Array:return P/65535;case Uint8Array:return P/255;case Int32Array:return Math.max(P/2147483647,-1);case Int16Array:return Math.max(P/32767,-1);case Int8Array:return Math.max(P/127,-1);default:throw new Error("Invalid component type.")}}function eo(P,e){switch(e.constructor){case Float32Array:return P;case Uint32Array:return Math.round(P*4294967295);case Uint16Array:return Math.round(P*65535);case Uint8Array:return Math.round(P*255);case Int32Array:return Math.round(P*2147483647);case Int16Array:return Math.round(P*32767);case Int8Array:return Math.round(P*127);default:throw new Error("Invalid component type.")}}const MI={DEG2RAD:$g,RAD2DEG:Ga,generateUUID:gg,clamp:no,euclideanModulo:aI,mapLinear:wI,inverseLerp:rC,lerp:Lo,damp:Aa,pingpong:II,smoothstep:Fa,smootherstep:OI,randInt:Dn,randFloat:fA,randFloatSpread:Bs,seededRandom:Ot,degToRad:Bo,radToDeg:va,isPowerOfTwo:Na,ceilPowerOfTwo:Ua,floorPowerOfTwo:ea,setQuaternionFromProperEuler:La,normalize:eo,denormalize:ms};class ni{constructor(e=0,i=0){ni.prototype.isVector2=!0,this.x=e,this.y=i}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,i){return this.x=e,this.y=i,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,i){switch(e){case 0:this.x=i;break;case 1:this.y=i;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,i){return this.x=e.x+i.x,this.y=e.y+i.y,this}addScaledVector(e,i){return this.x+=e.x*i,this.y+=e.y*i,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,i){return this.x=e.x-i.x,this.y=e.y-i.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const i=this.x,o=this.y,g=e.elements;return this.x=g[0]*i+g[3]*o+g[6],this.y=g[1]*i+g[4]*o+g[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,i){return this.x=no(this.x,e.x,i.x),this.y=no(this.y,e.y,i.y),this}clampScalar(e,i){return this.x=no(this.x,e,i),this.y=no(this.y,e,i),this}clampLength(e,i){const o=this.length();return this.divideScalar(o||1).multiplyScalar(no(o,e,i))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const i=Math.sqrt(this.lengthSq()*e.lengthSq());if(i===0)return Math.PI/2;const o=this.dot(e)/i;return Math.acos(no(o,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const i=this.x-e.x,o=this.y-e.y;return i*i+o*o}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,i){return this.x+=(e.x-this.x)*i,this.y+=(e.y-this.y)*i,this}lerpVectors(e,i,o){return this.x=e.x+(i.x-e.x)*o,this.y=e.y+(i.y-e.y)*o,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,i=0){return this.x=e[i],this.y=e[i+1],this}toArray(e=[],i=0){return e[i]=this.x,e[i+1]=this.y,e}fromBufferAttribute(e,i){return this.x=e.getX(i),this.y=e.getY(i),this}rotateAround(e,i){const o=Math.cos(i),g=Math.sin(i),C=this.x-e.x,c=this.y-e.y;return this.x=C*o-c*g+e.x,this.y=C*g+c*o+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class ds{constructor(e,i,o,g,C,c,f,S,b){ds.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,i,o,g,C,c,f,S,b)}set(e,i,o,g,C,c,f,S,b){const $=this.elements;return $[0]=e,$[1]=g,$[2]=f,$[3]=i,$[4]=C,$[5]=S,$[6]=o,$[7]=c,$[8]=b,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const i=this.elements,o=e.elements;return i[0]=o[0],i[1]=o[1],i[2]=o[2],i[3]=o[3],i[4]=o[4],i[5]=o[5],i[6]=o[6],i[7]=o[7],i[8]=o[8],this}extractBasis(e,i,o){return e.setFromMatrix3Column(this,0),i.setFromMatrix3Column(this,1),o.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const i=e.elements;return this.set(i[0],i[4],i[8],i[1],i[5],i[9],i[2],i[6],i[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,i){const o=e.elements,g=i.elements,C=this.elements,c=o[0],f=o[3],S=o[6],b=o[1],$=o[4],oA=o[7],rA=o[2],IA=o[5],cA=o[8],JA=g[0],te=g[3],Ce=g[6],Me=g[1],Re=g[4],Ne=g[7],wt=g[2],St=g[5],Yt=g[8];return C[0]=c*JA+f*Me+S*wt,C[3]=c*te+f*Re+S*St,C[6]=c*Ce+f*Ne+S*Yt,C[1]=b*JA+$*Me+oA*wt,C[4]=b*te+$*Re+oA*St,C[7]=b*Ce+$*Ne+oA*Yt,C[2]=rA*JA+IA*Me+cA*wt,C[5]=rA*te+IA*Re+cA*St,C[8]=rA*Ce+IA*Ne+cA*Yt,this}multiplyScalar(e){const i=this.elements;return i[0]*=e,i[3]*=e,i[6]*=e,i[1]*=e,i[4]*=e,i[7]*=e,i[2]*=e,i[5]*=e,i[8]*=e,this}determinant(){const e=this.elements,i=e[0],o=e[1],g=e[2],C=e[3],c=e[4],f=e[5],S=e[6],b=e[7],$=e[8];return i*c*$-i*f*b-o*C*$+o*f*S+g*C*b-g*c*S}invert(){const e=this.elements,i=e[0],o=e[1],g=e[2],C=e[3],c=e[4],f=e[5],S=e[6],b=e[7],$=e[8],oA=$*c-f*b,rA=f*S-$*C,IA=b*C-c*S,cA=i*oA+o*rA+g*IA;if(cA===0)return this.set(0,0,0,0,0,0,0,0,0);const JA=1/cA;return e[0]=oA*JA,e[1]=(g*b-$*o)*JA,e[2]=(f*o-g*c)*JA,e[3]=rA*JA,e[4]=($*i-g*S)*JA,e[5]=(g*C-f*i)*JA,e[6]=IA*JA,e[7]=(o*S-b*i)*JA,e[8]=(c*i-o*C)*JA,this}transpose(){let e;const i=this.elements;return e=i[1],i[1]=i[3],i[3]=e,e=i[2],i[2]=i[6],i[6]=e,e=i[5],i[5]=i[7],i[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const i=this.elements;return e[0]=i[0],e[1]=i[3],e[2]=i[6],e[3]=i[1],e[4]=i[4],e[5]=i[7],e[6]=i[2],e[7]=i[5],e[8]=i[8],this}setUvTransform(e,i,o,g,C,c,f){const S=Math.cos(C),b=Math.sin(C);return this.set(o*S,o*b,-o*(S*c+b*f)+c+e,-g*b,g*S,-g*(-b*c+S*f)+f+i,0,0,1),this}scale(e,i){return this.premultiply(Ba.makeScale(e,i)),this}rotate(e){return this.premultiply(Ba.makeRotation(-e)),this}translate(e,i){return this.premultiply(Ba.makeTranslation(e,i)),this}makeTranslation(e,i){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,i,0,0,1),this}makeRotation(e){const i=Math.cos(e),o=Math.sin(e);return this.set(i,-o,0,o,i,0,0,0,1),this}makeScale(e,i){return this.set(e,0,0,0,i,0,0,0,1),this}equals(e){const i=this.elements,o=e.elements;for(let g=0;g<9;g++)if(i[g]!==o[g])return!1;return!0}fromArray(e,i=0){for(let o=0;o<9;o++)this.elements[o]=e[o+i];return this}toArray(e=[],i=0){const o=this.elements;return e[i]=o[0],e[i+1]=o[1],e[i+2]=o[2],e[i+3]=o[3],e[i+4]=o[4],e[i+5]=o[5],e[i+6]=o[6],e[i+7]=o[7],e[i+8]=o[8],e}clone(){return new this.constructor().fromArray(this.elements)}}const Ba=new ds;function SI(P){for(let e=P.length-1;e>=0;--e)if(P[e]>=65535)return!0;return!1}const oo={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function Hs(P,e){return new oo[P](e)}function vo(P){return document.createElementNS("http://www.w3.org/1999/xhtml",P)}function ag(){const P=vo("canvas");return P.style.display="block",P}const Va={};function RI(P){P in Va||(Va[P]=!0,console.warn(P))}function Ea(P,e,i){return new Promise(function(o,g){function C(){switch(P.clientWaitSync(e,P.SYNC_FLUSH_COMMANDS_BIT,0)){case P.WAIT_FAILED:g();break;case P.TIMEOUT_EXPIRED:setTimeout(C,i);break;default:o()}}setTimeout(C,i)})}function CI(P){const e=P.elements;e[2]=.5*e[2]+.5*e[3],e[6]=.5*e[6]+.5*e[7],e[10]=.5*e[10]+.5*e[11],e[14]=.5*e[14]+.5*e[15]}function qI(P){const e=P.elements;e[11]===-1?(e[10]=-e[10]-1,e[14]=-e[14]):(e[10]=-e[10],e[14]=-e[14]+1)}const Sr=new ds().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),xo=new ds().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715);function BI(){const P={enabled:!0,workingColorSpace:Fe,spaces:{},convert:function(g,C,c){return this.enabled===!1||C===c||!C||!c||(this.spaces[C].transfer===Lt&&(g.r=Ds(g.r),g.g=Ds(g.g),g.b=Ds(g.b)),this.spaces[C].primaries!==this.spaces[c].primaries&&(g.applyMatrix3(this.spaces[C].toXYZ),g.applyMatrix3(this.spaces[c].fromXYZ)),this.spaces[c].transfer===Lt&&(g.r=pg(g.r),g.g=pg(g.g),g.b=pg(g.b))),g},fromWorkingColorSpace:function(g,C){return this.convert(g,this.workingColorSpace,C)},toWorkingColorSpace:function(g,C){return this.convert(g,C,this.workingColorSpace)},getPrimaries:function(g){return this.spaces[g].primaries},getTransfer:function(g){return g===ee?xe:this.spaces[g].transfer},getLuminanceCoefficients:function(g,C=this.workingColorSpace){return g.fromArray(this.spaces[C].luminanceCoefficients)},define:function(g){Object.assign(this.spaces,g)},_getMatrix:function(g,C,c){return g.copy(this.spaces[C].toXYZ).multiply(this.spaces[c].fromXYZ)},_getDrawingBufferColorSpace:function(g){return this.spaces[g].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(g=this.workingColorSpace){return this.spaces[g].workingColorSpaceConfig.unpackColorSpace}},e=[.64,.33,.3,.6,.15,.06],i=[.2126,.7152,.0722],o=[.3127,.329];return P.define({[Fe]:{primaries:e,whitePoint:o,transfer:xe,toXYZ:Sr,fromXYZ:xo,luminanceCoefficients:i,workingColorSpaceConfig:{unpackColorSpace:Ie},outputColorSpaceConfig:{drawingBufferColorSpace:Ie}},[Ie]:{primaries:e,whitePoint:o,transfer:Lt,toXYZ:Sr,fromXYZ:xo,luminanceCoefficients:i,outputColorSpaceConfig:{drawingBufferColorSpace:Ie}}}),P}const zo=BI();function Ds(P){return P<.04045?P*.0773993808:Math.pow(P*.9478672986+.0521327014,2.4)}function pg(P){return P<.0031308?P*12.92:1.055*Math.pow(P,.41666)-.055}let mg;class kr{static getDataURL(e){if(/^data:/i.test(e.src)||typeof HTMLCanvasElement>"u")return e.src;let i;if(e instanceof HTMLCanvasElement)i=e;else{mg===void 0&&(mg=vo("canvas")),mg.width=e.width,mg.height=e.height;const o=mg.getContext("2d");e instanceof ImageData?o.putImageData(e,0,0):o.drawImage(e,0,0,e.width,e.height),i=mg}return i.toDataURL("image/png")}static sRGBToLinear(e){if(typeof HTMLImageElement<"u"&&e instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&e instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&e instanceof ImageBitmap){const i=vo("canvas");i.width=e.width,i.height=e.height;const o=i.getContext("2d");o.drawImage(e,0,0,e.width,e.height);const g=o.getImageData(0,0,e.width,e.height),C=g.data;for(let c=0;c<C.length;c++)C[c]=Ds(C[c]/255)*255;return o.putImageData(g,0,0),i}else if(e.data){const i=e.data.slice(0);for(let o=0;o<i.length;o++)i instanceof Uint8Array||i instanceof Uint8ClampedArray?i[o]=Math.floor(Ds(i[o]/255)*255):i[o]=Ds(i[o]);return{data:i,width:e.width,height:e.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),e}}let Us=0;class Ee{constructor(e=null){this.isSource=!0,Object.defineProperty(this,"id",{value:Us++}),this.uuid=gg(),this.data=e,this.dataReady=!0,this.version=0}set needsUpdate(e){e===!0&&this.version++}toJSON(e){const i=e===void 0||typeof e=="string";if(!i&&e.images[this.uuid]!==void 0)return e.images[this.uuid];const o={uuid:this.uuid,url:""},g=this.data;if(g!==null){let C;if(Array.isArray(g)){C=[];for(let c=0,f=g.length;c<f;c++)g[c].isDataTexture?C.push(Hg(g[c].image)):C.push(Hg(g[c]))}else C=Hg(g);o.url=C}return i||(e.images[this.uuid]=o),o}}function Hg(P){return typeof HTMLImageElement<"u"&&P instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&P instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&P instanceof ImageBitmap?kr.getDataURL(P):P.data?{data:Array.from(P.data),width:P.width,height:P.height,type:P.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let Za=0;class To extends qn{constructor(e=To.DEFAULT_IMAGE,i=To.DEFAULT_MAPPING,o=De,g=De,C=kn,c=is,f=me,S=ns,b=To.DEFAULT_ANISOTROPY,$=ee){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:Za++}),this.uuid=gg(),this.name="",this.source=new Ee(e),this.mipmaps=[],this.mapping=i,this.channel=0,this.wrapS=o,this.wrapT=g,this.magFilter=C,this.minFilter=c,this.anisotropy=b,this.format=f,this.internalFormat=null,this.type=S,this.offset=new ni(0,0),this.repeat=new ni(1,1),this.center=new ni(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new ds,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=$,this.userData={},this.version=0,this.onUpdate=null,this.renderTarget=null,this.isRenderTargetTexture=!1,this.pmremVersion=0}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.renderTarget=e.renderTarget,this.isRenderTargetTexture=e.isRenderTargetTexture,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}toJSON(e){const i=e===void 0||typeof e=="string";if(!i&&e.textures[this.uuid]!==void 0)return e.textures[this.uuid];const o={metadata:{version:4.6,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(o.userData=this.userData),i||(e.textures[this.uuid]=o),o}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==Be)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case ue:e.x=e.x-Math.floor(e.x);break;case De:e.x=e.x<0?0:1;break;case si:Math.abs(Math.floor(e.x)%2)===1?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x);break}if(e.y<0||e.y>1)switch(this.wrapT){case ue:e.y=e.y-Math.floor(e.y);break;case De:e.y=e.y<0?0:1;break;case si:Math.abs(Math.floor(e.y)%2)===1?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y);break}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){e===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){e===!0&&this.pmremVersion++}}To.DEFAULT_IMAGE=null,To.DEFAULT_MAPPING=Be,To.DEFAULT_ANISOTROPY=1;class ir{constructor(e=0,i=0,o=0,g=1){ir.prototype.isVector4=!0,this.x=e,this.y=i,this.z=o,this.w=g}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,i,o,g){return this.x=e,this.y=i,this.z=o,this.w=g,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,i){switch(e){case 0:this.x=i;break;case 1:this.y=i;break;case 2:this.z=i;break;case 3:this.w=i;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w!==void 0?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,i){return this.x=e.x+i.x,this.y=e.y+i.y,this.z=e.z+i.z,this.w=e.w+i.w,this}addScaledVector(e,i){return this.x+=e.x*i,this.y+=e.y*i,this.z+=e.z*i,this.w+=e.w*i,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,i){return this.x=e.x-i.x,this.y=e.y-i.y,this.z=e.z-i.z,this.w=e.w-i.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const i=this.x,o=this.y,g=this.z,C=this.w,c=e.elements;return this.x=c[0]*i+c[4]*o+c[8]*g+c[12]*C,this.y=c[1]*i+c[5]*o+c[9]*g+c[13]*C,this.z=c[2]*i+c[6]*o+c[10]*g+c[14]*C,this.w=c[3]*i+c[7]*o+c[11]*g+c[15]*C,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const i=Math.sqrt(1-e.w*e.w);return i<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/i,this.y=e.y/i,this.z=e.z/i),this}setAxisAngleFromRotationMatrix(e){let i,o,g,C;const S=e.elements,b=S[0],$=S[4],oA=S[8],rA=S[1],IA=S[5],cA=S[9],JA=S[2],te=S[6],Ce=S[10];if(Math.abs($-rA)<.01&&Math.abs(oA-JA)<.01&&Math.abs(cA-te)<.01){if(Math.abs($+rA)<.1&&Math.abs(oA+JA)<.1&&Math.abs(cA+te)<.1&&Math.abs(b+IA+Ce-3)<.1)return this.set(1,0,0,0),this;i=Math.PI;const Re=(b+1)/2,Ne=(IA+1)/2,wt=(Ce+1)/2,St=($+rA)/4,Yt=(oA+JA)/4,xt=(cA+te)/4;return Re>Ne&&Re>wt?Re<.01?(o=0,g=.707106781,C=.707106781):(o=Math.sqrt(Re),g=St/o,C=Yt/o):Ne>wt?Ne<.01?(o=.707106781,g=0,C=.707106781):(g=Math.sqrt(Ne),o=St/g,C=xt/g):wt<.01?(o=.707106781,g=.707106781,C=0):(C=Math.sqrt(wt),o=Yt/C,g=xt/C),this.set(o,g,C,i),this}let Me=Math.sqrt((te-cA)*(te-cA)+(oA-JA)*(oA-JA)+(rA-$)*(rA-$));return Math.abs(Me)<.001&&(Me=1),this.x=(te-cA)/Me,this.y=(oA-JA)/Me,this.z=(rA-$)/Me,this.w=Math.acos((b+IA+Ce-1)/2),this}setFromMatrixPosition(e){const i=e.elements;return this.x=i[12],this.y=i[13],this.z=i[14],this.w=i[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,i){return this.x=no(this.x,e.x,i.x),this.y=no(this.y,e.y,i.y),this.z=no(this.z,e.z,i.z),this.w=no(this.w,e.w,i.w),this}clampScalar(e,i){return this.x=no(this.x,e,i),this.y=no(this.y,e,i),this.z=no(this.z,e,i),this.w=no(this.w,e,i),this}clampLength(e,i){const o=this.length();return this.divideScalar(o||1).multiplyScalar(no(o,e,i))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,i){return this.x+=(e.x-this.x)*i,this.y+=(e.y-this.y)*i,this.z+=(e.z-this.z)*i,this.w+=(e.w-this.w)*i,this}lerpVectors(e,i,o){return this.x=e.x+(i.x-e.x)*o,this.y=e.y+(i.y-e.y)*o,this.z=e.z+(i.z-e.z)*o,this.w=e.w+(i.w-e.w)*o,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,i=0){return this.x=e[i],this.y=e[i+1],this.z=e[i+2],this.w=e[i+3],this}toArray(e=[],i=0){return e[i]=this.x,e[i+1]=this.y,e[i+2]=this.z,e[i+3]=this.w,e}fromBufferAttribute(e,i){return this.x=e.getX(i),this.y=e.getY(i),this.z=e.getZ(i),this.w=e.getW(i),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Ig extends qn{constructor(e=1,i=1,o={}){super(),this.isRenderTarget=!0,this.width=e,this.height=i,this.depth=1,this.scissor=new ir(0,0,e,i),this.scissorTest=!1,this.viewport=new ir(0,0,e,i);const g={width:e,height:i,depth:1};o=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:kn,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},o);const C=new To(g,o.mapping,o.wrapS,o.wrapT,o.magFilter,o.minFilter,o.format,o.type,o.anisotropy,o.colorSpace);C.flipY=!1,C.generateMipmaps=o.generateMipmaps,C.internalFormat=o.internalFormat,this.textures=[];const c=o.count;for(let f=0;f<c;f++)this.textures[f]=C.clone(),this.textures[f].isRenderTargetTexture=!0,this.textures[f].renderTarget=this;this.depthBuffer=o.depthBuffer,this.stencilBuffer=o.stencilBuffer,this.resolveDepthBuffer=o.resolveDepthBuffer,this.resolveStencilBuffer=o.resolveStencilBuffer,this._depthTexture=null,this.depthTexture=o.depthTexture,this.samples=o.samples}get texture(){return this.textures[0]}set texture(e){this.textures[0]=e}set depthTexture(e){this._depthTexture!==null&&(this._depthTexture.renderTarget=null),e!==null&&(e.renderTarget=this),this._depthTexture=e}get depthTexture(){return this._depthTexture}setSize(e,i,o=1){if(this.width!==e||this.height!==i||this.depth!==o){this.width=e,this.height=i,this.depth=o;for(let g=0,C=this.textures.length;g<C;g++)this.textures[g].image.width=e,this.textures[g].image.height=i,this.textures[g].image.depth=o;this.dispose()}this.viewport.set(0,0,e,i),this.scissor.set(0,0,e,i)}clone(){return new this.constructor().copy(this)}copy(e){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.textures.length=0;for(let o=0,g=e.textures.length;o<g;o++)this.textures[o]=e.textures[o].clone(),this.textures[o].isRenderTargetTexture=!0,this.textures[o].renderTarget=this;const i=Object.assign({},e.texture.image);return this.texture.source=new Ee(i),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,this.resolveDepthBuffer=e.resolveDepthBuffer,this.resolveStencilBuffer=e.resolveStencilBuffer,e.depthTexture!==null&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class fi extends Ig{constructor(e=1,i=1,o={}){super(e,i,o),this.isWebGLRenderTarget=!0}}class Sn extends To{constructor(e=null,i=1,o=1,g=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:i,height:o,depth:g},this.magFilter=Mi,this.minFilter=Mi,this.wrapR=De,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class Wn extends fi{constructor(e=1,i=1,o=1,g={}){super(e,i,g),this.isWebGLArrayRenderTarget=!0,this.depth=o,this.texture=new Sn(null,e,i,o),this.texture.isRenderTargetTexture=!0}}class Po extends To{constructor(e=null,i=1,o=1,g=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:i,height:o,depth:g},this.magFilter=Mi,this.minFilter=Mi,this.wrapR=De,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class po extends fi{constructor(e=1,i=1,o=1,g={}){super(e,i,g),this.isWebGL3DRenderTarget=!0,this.depth=o,this.texture=new Po(null,e,i,o),this.texture.isRenderTargetTexture=!0}}class $o{constructor(e=0,i=0,o=0,g=1){this.isQuaternion=!0,this._x=e,this._y=i,this._z=o,this._w=g}static slerpFlat(e,i,o,g,C,c,f){let S=o[g+0],b=o[g+1],$=o[g+2],oA=o[g+3];const rA=C[c+0],IA=C[c+1],cA=C[c+2],JA=C[c+3];if(f===0){e[i+0]=S,e[i+1]=b,e[i+2]=$,e[i+3]=oA;return}if(f===1){e[i+0]=rA,e[i+1]=IA,e[i+2]=cA,e[i+3]=JA;return}if(oA!==JA||S!==rA||b!==IA||$!==cA){let te=1-f;const Ce=S*rA+b*IA+$*cA+oA*JA,Me=Ce>=0?1:-1,Re=1-Ce*Ce;if(Re>Number.EPSILON){const wt=Math.sqrt(Re),St=Math.atan2(wt,Ce*Me);te=Math.sin(te*St)/wt,f=Math.sin(f*St)/wt}const Ne=f*Me;if(S=S*te+rA*Ne,b=b*te+IA*Ne,$=$*te+cA*Ne,oA=oA*te+JA*Ne,te===1-f){const wt=1/Math.sqrt(S*S+b*b+$*$+oA*oA);S*=wt,b*=wt,$*=wt,oA*=wt}}e[i]=S,e[i+1]=b,e[i+2]=$,e[i+3]=oA}static multiplyQuaternionsFlat(e,i,o,g,C,c){const f=o[g],S=o[g+1],b=o[g+2],$=o[g+3],oA=C[c],rA=C[c+1],IA=C[c+2],cA=C[c+3];return e[i]=f*cA+$*oA+S*IA-b*rA,e[i+1]=S*cA+$*rA+b*oA-f*IA,e[i+2]=b*cA+$*IA+f*rA-S*oA,e[i+3]=$*cA-f*oA-S*rA-b*IA,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,i,o,g){return this._x=e,this._y=i,this._z=o,this._w=g,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,i=!0){const o=e._x,g=e._y,C=e._z,c=e._order,f=Math.cos,S=Math.sin,b=f(o/2),$=f(g/2),oA=f(C/2),rA=S(o/2),IA=S(g/2),cA=S(C/2);switch(c){case"XYZ":this._x=rA*$*oA+b*IA*cA,this._y=b*IA*oA-rA*$*cA,this._z=b*$*cA+rA*IA*oA,this._w=b*$*oA-rA*IA*cA;break;case"YXZ":this._x=rA*$*oA+b*IA*cA,this._y=b*IA*oA-rA*$*cA,this._z=b*$*cA-rA*IA*oA,this._w=b*$*oA+rA*IA*cA;break;case"ZXY":this._x=rA*$*oA-b*IA*cA,this._y=b*IA*oA+rA*$*cA,this._z=b*$*cA+rA*IA*oA,this._w=b*$*oA-rA*IA*cA;break;case"ZYX":this._x=rA*$*oA-b*IA*cA,this._y=b*IA*oA+rA*$*cA,this._z=b*$*cA-rA*IA*oA,this._w=b*$*oA+rA*IA*cA;break;case"YZX":this._x=rA*$*oA+b*IA*cA,this._y=b*IA*oA+rA*$*cA,this._z=b*$*cA-rA*IA*oA,this._w=b*$*oA-rA*IA*cA;break;case"XZY":this._x=rA*$*oA-b*IA*cA,this._y=b*IA*oA-rA*$*cA,this._z=b*$*cA+rA*IA*oA,this._w=b*$*oA+rA*IA*cA;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+c)}return i===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,i){const o=i/2,g=Math.sin(o);return this._x=e.x*g,this._y=e.y*g,this._z=e.z*g,this._w=Math.cos(o),this._onChangeCallback(),this}setFromRotationMatrix(e){const i=e.elements,o=i[0],g=i[4],C=i[8],c=i[1],f=i[5],S=i[9],b=i[2],$=i[6],oA=i[10],rA=o+f+oA;if(rA>0){const IA=.5/Math.sqrt(rA+1);this._w=.25/IA,this._x=($-S)*IA,this._y=(C-b)*IA,this._z=(c-g)*IA}else if(o>f&&o>oA){const IA=2*Math.sqrt(1+o-f-oA);this._w=($-S)/IA,this._x=.25*IA,this._y=(g+c)/IA,this._z=(C+b)/IA}else if(f>oA){const IA=2*Math.sqrt(1+f-o-oA);this._w=(C-b)/IA,this._x=(g+c)/IA,this._y=.25*IA,this._z=(S+$)/IA}else{const IA=2*Math.sqrt(1+oA-o-f);this._w=(c-g)/IA,this._x=(C+b)/IA,this._y=(S+$)/IA,this._z=.25*IA}return this._onChangeCallback(),this}setFromUnitVectors(e,i){let o=e.dot(i)+1;return o<Number.EPSILON?(o=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=o):(this._x=0,this._y=-e.z,this._z=e.y,this._w=o)):(this._x=e.y*i.z-e.z*i.y,this._y=e.z*i.x-e.x*i.z,this._z=e.x*i.y-e.y*i.x,this._w=o),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(no(this.dot(e),-1,1)))}rotateTowards(e,i){const o=this.angleTo(e);if(o===0)return this;const g=Math.min(1,i/o);return this.slerp(e,g),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,i){const o=e._x,g=e._y,C=e._z,c=e._w,f=i._x,S=i._y,b=i._z,$=i._w;return this._x=o*$+c*f+g*b-C*S,this._y=g*$+c*S+C*f-o*b,this._z=C*$+c*b+o*S-g*f,this._w=c*$-o*f-g*S-C*b,this._onChangeCallback(),this}slerp(e,i){if(i===0)return this;if(i===1)return this.copy(e);const o=this._x,g=this._y,C=this._z,c=this._w;let f=c*e._w+o*e._x+g*e._y+C*e._z;if(f<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,f=-f):this.copy(e),f>=1)return this._w=c,this._x=o,this._y=g,this._z=C,this;const S=1-f*f;if(S<=Number.EPSILON){const IA=1-i;return this._w=IA*c+i*this._w,this._x=IA*o+i*this._x,this._y=IA*g+i*this._y,this._z=IA*C+i*this._z,this.normalize(),this}const b=Math.sqrt(S),$=Math.atan2(b,f),oA=Math.sin((1-i)*$)/b,rA=Math.sin(i*$)/b;return this._w=c*oA+this._w*rA,this._x=o*oA+this._x*rA,this._y=g*oA+this._y*rA,this._z=C*oA+this._z*rA,this._onChangeCallback(),this}slerpQuaternions(e,i,o){return this.copy(e).slerp(i,o)}random(){const e=2*Math.PI*Math.random(),i=2*Math.PI*Math.random(),o=Math.random(),g=Math.sqrt(1-o),C=Math.sqrt(o);return this.set(g*Math.sin(e),g*Math.cos(e),C*Math.sin(i),C*Math.cos(i))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,i=0){return this._x=e[i],this._y=e[i+1],this._z=e[i+2],this._w=e[i+3],this._onChangeCallback(),this}toArray(e=[],i=0){return e[i]=this._x,e[i+1]=this._y,e[i+2]=this._z,e[i+3]=this._w,e}fromBufferAttribute(e,i){return this._x=e.getX(i),this._y=e.getY(i),this._z=e.getZ(i),this._w=e.getW(i),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class Qe{constructor(e=0,i=0,o=0){Qe.prototype.isVector3=!0,this.x=e,this.y=i,this.z=o}set(e,i,o){return o===void 0&&(o=this.z),this.x=e,this.y=i,this.z=o,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,i){switch(e){case 0:this.x=i;break;case 1:this.y=i;break;case 2:this.z=i;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,i){return this.x=e.x+i.x,this.y=e.y+i.y,this.z=e.z+i.z,this}addScaledVector(e,i){return this.x+=e.x*i,this.y+=e.y*i,this.z+=e.z*i,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,i){return this.x=e.x-i.x,this.y=e.y-i.y,this.z=e.z-i.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,i){return this.x=e.x*i.x,this.y=e.y*i.y,this.z=e.z*i.z,this}applyEuler(e){return this.applyQuaternion(Oo.setFromEuler(e))}applyAxisAngle(e,i){return this.applyQuaternion(Oo.setFromAxisAngle(e,i))}applyMatrix3(e){const i=this.x,o=this.y,g=this.z,C=e.elements;return this.x=C[0]*i+C[3]*o+C[6]*g,this.y=C[1]*i+C[4]*o+C[7]*g,this.z=C[2]*i+C[5]*o+C[8]*g,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const i=this.x,o=this.y,g=this.z,C=e.elements,c=1/(C[3]*i+C[7]*o+C[11]*g+C[15]);return this.x=(C[0]*i+C[4]*o+C[8]*g+C[12])*c,this.y=(C[1]*i+C[5]*o+C[9]*g+C[13])*c,this.z=(C[2]*i+C[6]*o+C[10]*g+C[14])*c,this}applyQuaternion(e){const i=this.x,o=this.y,g=this.z,C=e.x,c=e.y,f=e.z,S=e.w,b=2*(c*g-f*o),$=2*(f*i-C*g),oA=2*(C*o-c*i);return this.x=i+S*b+c*oA-f*$,this.y=o+S*$+f*b-C*oA,this.z=g+S*oA+C*$-c*b,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){const i=this.x,o=this.y,g=this.z,C=e.elements;return this.x=C[0]*i+C[4]*o+C[8]*g,this.y=C[1]*i+C[5]*o+C[9]*g,this.z=C[2]*i+C[6]*o+C[10]*g,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,i){return this.x=no(this.x,e.x,i.x),this.y=no(this.y,e.y,i.y),this.z=no(this.z,e.z,i.z),this}clampScalar(e,i){return this.x=no(this.x,e,i),this.y=no(this.y,e,i),this.z=no(this.z,e,i),this}clampLength(e,i){const o=this.length();return this.divideScalar(o||1).multiplyScalar(no(o,e,i))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,i){return this.x+=(e.x-this.x)*i,this.y+=(e.y-this.y)*i,this.z+=(e.z-this.z)*i,this}lerpVectors(e,i,o){return this.x=e.x+(i.x-e.x)*o,this.y=e.y+(i.y-e.y)*o,this.z=e.z+(i.z-e.z)*o,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,i){const o=e.x,g=e.y,C=e.z,c=i.x,f=i.y,S=i.z;return this.x=g*S-C*f,this.y=C*c-o*S,this.z=o*f-g*c,this}projectOnVector(e){const i=e.lengthSq();if(i===0)return this.set(0,0,0);const o=e.dot(this)/i;return this.copy(e).multiplyScalar(o)}projectOnPlane(e){return Ls.copy(this).projectOnVector(e),this.sub(Ls)}reflect(e){return this.sub(Ls.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const i=Math.sqrt(this.lengthSq()*e.lengthSq());if(i===0)return Math.PI/2;const o=this.dot(e)/i;return Math.acos(no(o,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const i=this.x-e.x,o=this.y-e.y,g=this.z-e.z;return i*i+o*o+g*g}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,i,o){const g=Math.sin(i)*e;return this.x=g*Math.sin(o),this.y=Math.cos(i)*e,this.z=g*Math.cos(o),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,i,o){return this.x=e*Math.sin(i),this.y=o,this.z=e*Math.cos(i),this}setFromMatrixPosition(e){const i=e.elements;return this.x=i[12],this.y=i[13],this.z=i[14],this}setFromMatrixScale(e){const i=this.setFromMatrixColumn(e,0).length(),o=this.setFromMatrixColumn(e,1).length(),g=this.setFromMatrixColumn(e,2).length();return this.x=i,this.y=o,this.z=g,this}setFromMatrixColumn(e,i){return this.fromArray(e.elements,i*4)}setFromMatrix3Column(e,i){return this.fromArray(e.elements,i*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,i=0){return this.x=e[i],this.y=e[i+1],this.z=e[i+2],this}toArray(e=[],i=0){return e[i]=this.x,e[i+1]=this.y,e[i+2]=this.z,e}fromBufferAttribute(e,i){return this.x=e.getX(i),this.y=e.getY(i),this.z=e.getZ(i),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,i=Math.random()*2-1,o=Math.sqrt(1-i*i);return this.x=o*Math.cos(e),this.y=i,this.z=o*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Ls=new Qe,Oo=new $o;class Xr{constructor(e=new Qe(1/0,1/0,1/0),i=new Qe(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=i}set(e,i){return this.min.copy(e),this.max.copy(i),this}setFromArray(e){this.makeEmpty();for(let i=0,o=e.length;i<o;i+=3)this.expandByPoint(gs.fromArray(e,i));return this}setFromBufferAttribute(e){this.makeEmpty();for(let i=0,o=e.count;i<o;i++)this.expandByPoint(gs.fromBufferAttribute(e,i));return this}setFromPoints(e){this.makeEmpty();for(let i=0,o=e.length;i<o;i++)this.expandByPoint(e[i]);return this}setFromCenterAndSize(e,i){const o=gs.copy(i).multiplyScalar(.5);return this.min.copy(e).sub(o),this.max.copy(e).add(o),this}setFromObject(e,i=!1){return this.makeEmpty(),this.expandByObject(e,i)}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(e){return this.isEmpty()?e.set(0,0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}expandByObject(e,i=!1){e.updateWorldMatrix(!1,!1);const o=e.geometry;if(o!==void 0){const C=o.getAttribute("position");if(i===!0&&C!==void 0&&e.isInstancedMesh!==!0)for(let c=0,f=C.count;c<f;c++)e.isMesh===!0?e.getVertexPosition(c,gs):gs.fromBufferAttribute(C,c),gs.applyMatrix4(e.matrixWorld),this.expandByPoint(gs);else e.boundingBox!==void 0?(e.boundingBox===null&&e.computeBoundingBox(),xs.copy(e.boundingBox)):(o.boundingBox===null&&o.computeBoundingBox(),xs.copy(o.boundingBox)),xs.applyMatrix4(e.matrixWorld),this.union(xs)}const g=e.children;for(let C=0,c=g.length;C<c;C++)this.expandByObject(g[C],i);return this}containsPoint(e){return e.x>=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,i){return i.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,gs),gs.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let i,o;return e.normal.x>0?(i=e.normal.x*this.min.x,o=e.normal.x*this.max.x):(i=e.normal.x*this.max.x,o=e.normal.x*this.min.x),e.normal.y>0?(i+=e.normal.y*this.min.y,o+=e.normal.y*this.max.y):(i+=e.normal.y*this.max.y,o+=e.normal.y*this.min.y),e.normal.z>0?(i+=e.normal.z*this.min.z,o+=e.normal.z*this.max.z):(i+=e.normal.z*this.max.z,o+=e.normal.z*this.min.z),i<=-e.constant&&o>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(dr),Qo.subVectors(this.max,dr),Zn.subVectors(e.a,dr),$s.subVectors(e.b,dr),qr.subVectors(e.c,dr),_r.subVectors($s,Zn),mr.subVectors(qr,$s),Dg.subVectors(Zn,qr);let i=[0,-_r.z,_r.y,0,-mr.z,mr.y,0,-Dg.z,Dg.y,_r.z,0,-_r.x,mr.z,0,-mr.x,Dg.z,0,-Dg.x,-_r.y,_r.x,0,-mr.y,mr.x,0,-Dg.y,Dg.x,0];return!Tr(i,Zn,$s,qr,Qo)||(i=[1,0,0,0,1,0,0,0,1],!Tr(i,Zn,$s,qr,Qo))?!1:(Nn.crossVectors(_r,mr),i=[Nn.x,Nn.y,Nn.z],Tr(i,Zn,$s,qr,Qo))}clampPoint(e,i){return i.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,gs).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=this.getSize(gs).length()*.5),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()?this:(Br[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),Br[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),Br[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),Br[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),Br[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),Br[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),Br[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),Br[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(Br),this)}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const Br=[new Qe,new Qe,new Qe,new Qe,new Qe,new Qe,new Qe,new Qe],gs=new Qe,xs=new Xr,Zn=new Qe,$s=new Qe,qr=new Qe,_r=new Qe,mr=new Qe,Dg=new Qe,dr=new Qe,Qo=new Qe,Nn=new Qe,lo=new Qe;function Tr(P,e,i,o,g){for(let C=0,c=P.length-3;C<=c;C+=3){lo.fromArray(P,C);const f=g.x*Math.abs(lo.x)+g.y*Math.abs(lo.y)+g.z*Math.abs(lo.z),S=e.dot(lo),b=i.dot(lo),$=o.dot(lo);if(Math.max(-Math.max(S,b,$),Math.min(S,b,$))>f)return!1}return!0}const tn=new Xr,Ag=new Qe,Kr=new Qe;class Rr{constructor(e=new Qe,i=-1){this.isSphere=!0,this.center=e,this.radius=i}set(e,i){return this.center.copy(e),this.radius=i,this}setFromPoints(e,i){const o=this.center;i!==void 0?o.copy(i):tn.setFromPoints(e).getCenter(o);let g=0;for(let C=0,c=e.length;C<c;C++)g=Math.max(g,o.distanceToSquared(e[C]));return this.radius=Math.sqrt(g),this}copy(e){return this.center.copy(e.center),this.radius=e.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(e){return e.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(e){return e.distanceTo(this.center)-this.radius}intersectsSphere(e){const i=this.radius+e.radius;return e.center.distanceToSquared(this.center)<=i*i}intersectsBox(e){return e.intersectsSphere(this)}intersectsPlane(e){return Math.abs(e.distanceToPoint(this.center))<=this.radius}clampPoint(e,i){const o=this.center.distanceToSquared(e);return i.copy(e),o>this.radius*this.radius&&(i.sub(this.center).normalize(),i.multiplyScalar(this.radius).add(this.center)),i}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;Ag.subVectors(e,this.center);const i=Ag.lengthSq();if(i>this.radius*this.radius){const o=Math.sqrt(i),g=(o-this.radius)*.5;this.center.addScaledVector(Ag,g/o),this.radius+=g}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(this.center.equals(e.center)===!0?this.radius=Math.max(this.radius,e.radius):(Kr.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Ag.copy(e.center).add(Kr)),this.expandByPoint(Ag.copy(e.center).sub(Kr))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}const Cg=new Qe,yg=new Qe,Qa=new Qe,as=new Qe,ja=new Qe,ys=new Qe,Er=new Qe;class eg{constructor(e=new Qe,i=new Qe(0,0,-1)){this.origin=e,this.direction=i}set(e,i){return this.origin.copy(e),this.direction.copy(i),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,i){return i.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,Cg)),this}closestPointToPoint(e,i){i.subVectors(e,this.origin);const o=i.dot(this.direction);return o<0?i.copy(this.origin):i.copy(this.origin).addScaledVector(this.direction,o)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){const i=Cg.subVectors(e,this.origin).dot(this.direction);return i<0?this.origin.distanceToSquared(e):(Cg.copy(this.origin).addScaledVector(this.direction,i),Cg.distanceToSquared(e))}distanceSqToSegment(e,i,o,g){yg.copy(e).add(i).multiplyScalar(.5),Qa.copy(i).sub(e).normalize(),as.copy(this.origin).sub(yg);const C=e.distanceTo(i)*.5,c=-this.direction.dot(Qa),f=as.dot(this.direction),S=-as.dot(Qa),b=as.lengthSq(),$=Math.abs(1-c*c);let oA,rA,IA,cA;if($>0)if(oA=c*S-f,rA=c*f-S,cA=C*$,oA>=0)if(rA>=-cA)if(rA<=cA){const JA=1/$;oA*=JA,rA*=JA,IA=oA*(oA+c*rA+2*f)+rA*(c*oA+rA+2*S)+b}else rA=C,oA=Math.max(0,-(c*rA+f)),IA=-oA*oA+rA*(rA+2*S)+b;else rA=-C,oA=Math.max(0,-(c*rA+f)),IA=-oA*oA+rA*(rA+2*S)+b;else rA<=-cA?(oA=Math.max(0,-(-c*C+f)),rA=oA>0?-C:Math.min(Math.max(-C,-S),C),IA=-oA*oA+rA*(rA+2*S)+b):rA<=cA?(oA=0,rA=Math.min(Math.max(-C,-S),C),IA=rA*(rA+2*S)+b):(oA=Math.max(0,-(c*C+f)),rA=oA>0?C:Math.min(Math.max(-C,-S),C),IA=-oA*oA+rA*(rA+2*S)+b);else rA=c>0?-C:C,oA=Math.max(0,-(c*rA+f)),IA=-oA*oA+rA*(rA+2*S)+b;return o&&o.copy(this.origin).addScaledVector(this.direction,oA),g&&g.copy(yg).addScaledVector(Qa,rA),IA}intersectSphere(e,i){Cg.subVectors(e.center,this.origin);const o=Cg.dot(this.direction),g=Cg.dot(Cg)-o*o,C=e.radius*e.radius;if(g>C)return null;const c=Math.sqrt(C-g),f=o-c,S=o+c;return S<0?null:f<0?this.at(S,i):this.at(f,i)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){const i=e.normal.dot(this.direction);if(i===0)return e.distanceToPoint(this.origin)===0?0:null;const o=-(this.origin.dot(e.normal)+e.constant)/i;return o>=0?o:null}intersectPlane(e,i){const o=this.distanceToPlane(e);return o===null?null:this.at(o,i)}intersectsPlane(e){const i=e.distanceToPoint(this.origin);return i===0||e.normal.dot(this.direction)*i<0}intersectBox(e,i){let o,g,C,c,f,S;const b=1/this.direction.x,$=1/this.direction.y,oA=1/this.direction.z,rA=this.origin;return b>=0?(o=(e.min.x-rA.x)*b,g=(e.max.x-rA.x)*b):(o=(e.max.x-rA.x)*b,g=(e.min.x-rA.x)*b),$>=0?(C=(e.min.y-rA.y)*$,c=(e.max.y-rA.y)*$):(C=(e.max.y-rA.y)*$,c=(e.min.y-rA.y)*$),o>c||C>g||((C>o||isNaN(o))&&(o=C),(c<g||isNaN(g))&&(g=c),oA>=0?(f=(e.min.z-rA.z)*oA,S=(e.max.z-rA.z)*oA):(f=(e.max.z-rA.z)*oA,S=(e.min.z-rA.z)*oA),o>S||f>g)||((f>o||o!==o)&&(o=f),(S<g||g!==g)&&(g=S),g<0)?null:this.at(o>=0?o:g,i)}intersectsBox(e){return this.intersectBox(e,Cg)!==null}intersectTriangle(e,i,o,g,C){ja.subVectors(i,e),ys.subVectors(o,e),Er.crossVectors(ja,ys);let c=this.direction.dot(Er),f;if(c>0){if(g)return null;f=1}else if(c<0)f=-1,c=-c;else return null;as.subVectors(this.origin,e);const S=f*this.direction.dot(ys.crossVectors(as,ys));if(S<0)return null;const b=f*this.direction.dot(ja.cross(as));if(b<0||S+b>c)return null;const $=-f*as.dot(Er);return $<0?null:this.at($/c,C)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class Eo{constructor(e,i,o,g,C,c,f,S,b,$,oA,rA,IA,cA,JA,te){Eo.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,i,o,g,C,c,f,S,b,$,oA,rA,IA,cA,JA,te)}set(e,i,o,g,C,c,f,S,b,$,oA,rA,IA,cA,JA,te){const Ce=this.elements;return Ce[0]=e,Ce[4]=i,Ce[8]=o,Ce[12]=g,Ce[1]=C,Ce[5]=c,Ce[9]=f,Ce[13]=S,Ce[2]=b,Ce[6]=$,Ce[10]=oA,Ce[14]=rA,Ce[3]=IA,Ce[7]=cA,Ce[11]=JA,Ce[15]=te,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new Eo().fromArray(this.elements)}copy(e){const i=this.elements,o=e.elements;return i[0]=o[0],i[1]=o[1],i[2]=o[2],i[3]=o[3],i[4]=o[4],i[5]=o[5],i[6]=o[6],i[7]=o[7],i[8]=o[8],i[9]=o[9],i[10]=o[10],i[11]=o[11],i[12]=o[12],i[13]=o[13],i[14]=o[14],i[15]=o[15],this}copyPosition(e){const i=this.elements,o=e.elements;return i[12]=o[12],i[13]=o[13],i[14]=o[14],this}setFromMatrix3(e){const i=e.elements;return this.set(i[0],i[3],i[6],0,i[1],i[4],i[7],0,i[2],i[5],i[8],0,0,0,0,1),this}extractBasis(e,i,o){return e.setFromMatrixColumn(this,0),i.setFromMatrixColumn(this,1),o.setFromMatrixColumn(this,2),this}makeBasis(e,i,o){return this.set(e.x,i.x,o.x,0,e.y,i.y,o.y,0,e.z,i.z,o.z,0,0,0,0,1),this}extractRotation(e){const i=this.elements,o=e.elements,g=1/ta.setFromMatrixColumn(e,0).length(),C=1/ta.setFromMatrixColumn(e,1).length(),c=1/ta.setFromMatrixColumn(e,2).length();return i[0]=o[0]*g,i[1]=o[1]*g,i[2]=o[2]*g,i[3]=0,i[4]=o[4]*C,i[5]=o[5]*C,i[6]=o[6]*C,i[7]=0,i[8]=o[8]*c,i[9]=o[9]*c,i[10]=o[10]*c,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,this}makeRotationFromEuler(e){const i=this.elements,o=e.x,g=e.y,C=e.z,c=Math.cos(o),f=Math.sin(o),S=Math.cos(g),b=Math.sin(g),$=Math.cos(C),oA=Math.sin(C);if(e.order==="XYZ"){const rA=c*$,IA=c*oA,cA=f*$,JA=f*oA;i[0]=S*$,i[4]=-S*oA,i[8]=b,i[1]=IA+cA*b,i[5]=rA-JA*b,i[9]=-f*S,i[2]=JA-rA*b,i[6]=cA+IA*b,i[10]=c*S}else if(e.order==="YXZ"){const rA=S*$,IA=S*oA,cA=b*$,JA=b*oA;i[0]=rA+JA*f,i[4]=cA*f-IA,i[8]=c*b,i[1]=c*oA,i[5]=c*$,i[9]=-f,i[2]=IA*f-cA,i[6]=JA+rA*f,i[10]=c*S}else if(e.order==="ZXY"){const rA=S*$,IA=S*oA,cA=b*$,JA=b*oA;i[0]=rA-JA*f,i[4]=-c*oA,i[8]=cA+IA*f,i[1]=IA+cA*f,i[5]=c*$,i[9]=JA-rA*f,i[2]=-c*b,i[6]=f,i[10]=c*S}else if(e.order==="ZYX"){const rA=c*$,IA=c*oA,cA=f*$,JA=f*oA;i[0]=S*$,i[4]=cA*b-IA,i[8]=rA*b+JA,i[1]=S*oA,i[5]=JA*b+rA,i[9]=IA*b-cA,i[2]=-b,i[6]=f*S,i[10]=c*S}else if(e.order==="YZX"){const rA=c*S,IA=c*b,cA=f*S,JA=f*b;i[0]=S*$,i[4]=JA-rA*oA,i[8]=cA*oA+IA,i[1]=oA,i[5]=c*$,i[9]=-f*$,i[2]=-b*$,i[6]=IA*oA+cA,i[10]=rA-JA*oA}else if(e.order==="XZY"){const rA=c*S,IA=c*b,cA=f*S,JA=f*b;i[0]=S*$,i[4]=-oA,i[8]=b*$,i[1]=rA*oA+JA,i[5]=c*$,i[9]=IA*oA-cA,i[2]=cA*oA-IA,i[6]=f*$,i[10]=JA*oA+rA}return i[3]=0,i[7]=0,i[11]=0,i[12]=0,i[13]=0,i[14]=0,i[15]=1,this}makeRotationFromQuaternion(e){return this.compose(ca,e,GI)}lookAt(e,i,o){const g=this.elements;return us.subVectors(e,i),us.lengthSq()===0&&(us.z=1),us.normalize(),bs.crossVectors(o,us),bs.lengthSq()===0&&(Math.abs(o.z)===1?us.x+=1e-4:us.z+=1e-4,us.normalize(),bs.crossVectors(o,us)),bs.normalize(),Pg.crossVectors(us,bs),g[0]=bs.x,g[4]=Pg.x,g[8]=us.x,g[1]=bs.y,g[5]=Pg.y,g[9]=us.y,g[2]=bs.z,g[6]=Pg.z,g[10]=us.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,i){const o=e.elements,g=i.elements,C=this.elements,c=o[0],f=o[4],S=o[8],b=o[12],$=o[1],oA=o[5],rA=o[9],IA=o[13],cA=o[2],JA=o[6],te=o[10],Ce=o[14],Me=o[3],Re=o[7],Ne=o[11],wt=o[15],St=g[0],Yt=g[4],xt=g[8],Li=g[12],Wi=g[1],hn=g[5],qo=g[9],Qr=g[13],ur=g[2],cs=g[6],Ms=g[10],ua=g[14],_a=g[3],Ks=g[7],tg=g[11],Vs=g[15];return C[0]=c*St+f*Wi+S*ur+b*_a,C[4]=c*Yt+f*hn+S*cs+b*Ks,C[8]=c*xt+f*qo+S*Ms+b*tg,C[12]=c*Li+f*Qr+S*ua+b*Vs,C[1]=$*St+oA*Wi+rA*ur+IA*_a,C[5]=$*Yt+oA*hn+rA*cs+IA*Ks,C[9]=$*xt+oA*qo+rA*Ms+IA*tg,C[13]=$*Li+oA*Qr+rA*ua+IA*Vs,C[2]=cA*St+JA*Wi+te*ur+Ce*_a,C[6]=cA*Yt+JA*hn+te*cs+Ce*Ks,C[10]=cA*xt+JA*qo+te*Ms+Ce*tg,C[14]=cA*Li+JA*Qr+te*ua+Ce*Vs,C[3]=Me*St+Re*Wi+Ne*ur+wt*_a,C[7]=Me*Yt+Re*hn+Ne*cs+wt*Ks,C[11]=Me*xt+Re*qo+Ne*Ms+wt*tg,C[15]=Me*Li+Re*Qr+Ne*ua+wt*Vs,this}multiplyScalar(e){const i=this.elements;return i[0]*=e,i[4]*=e,i[8]*=e,i[12]*=e,i[1]*=e,i[5]*=e,i[9]*=e,i[13]*=e,i[2]*=e,i[6]*=e,i[10]*=e,i[14]*=e,i[3]*=e,i[7]*=e,i[11]*=e,i[15]*=e,this}determinant(){const e=this.elements,i=e[0],o=e[4],g=e[8],C=e[12],c=e[1],f=e[5],S=e[9],b=e[13],$=e[2],oA=e[6],rA=e[10],IA=e[14],cA=e[3],JA=e[7],te=e[11],Ce=e[15];return cA*(+C*S*oA-g*b*oA-C*f*rA+o*b*rA+g*f*IA-o*S*IA)+JA*(+i*S*IA-i*b*rA+C*c*rA-g*c*IA+g*b*$-C*S*$)+te*(+i*b*oA-i*f*IA-C*c*oA+o*c*IA+C*f*$-o*b*$)+Ce*(-g*f*$-i*S*oA+i*f*rA+g*c*oA-o*c*rA+o*S*$)}transpose(){const e=this.elements;let i;return i=e[1],e[1]=e[4],e[4]=i,i=e[2],e[2]=e[8],e[8]=i,i=e[6],e[6]=e[9],e[9]=i,i=e[3],e[3]=e[12],e[12]=i,i=e[7],e[7]=e[13],e[13]=i,i=e[11],e[11]=e[14],e[14]=i,this}setPosition(e,i,o){const g=this.elements;return e.isVector3?(g[12]=e.x,g[13]=e.y,g[14]=e.z):(g[12]=e,g[13]=i,g[14]=o),this}invert(){const e=this.elements,i=e[0],o=e[1],g=e[2],C=e[3],c=e[4],f=e[5],S=e[6],b=e[7],$=e[8],oA=e[9],rA=e[10],IA=e[11],cA=e[12],JA=e[13],te=e[14],Ce=e[15],Me=oA*te*b-JA*rA*b+JA*S*IA-f*te*IA-oA*S*Ce+f*rA*Ce,Re=cA*rA*b-$*te*b-cA*S*IA+c*te*IA+$*S*Ce-c*rA*Ce,Ne=$*JA*b-cA*oA*b+cA*f*IA-c*JA*IA-$*f*Ce+c*oA*Ce,wt=cA*oA*S-$*JA*S-cA*f*rA+c*JA*rA+$*f*te-c*oA*te,St=i*Me+o*Re+g*Ne+C*wt;if(St===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const Yt=1/St;return e[0]=Me*Yt,e[1]=(JA*rA*C-oA*te*C-JA*g*IA+o*te*IA+oA*g*Ce-o*rA*Ce)*Yt,e[2]=(f*te*C-JA*S*C+JA*g*b-o*te*b-f*g*Ce+o*S*Ce)*Yt,e[3]=(oA*S*C-f*rA*C-oA*g*b+o*rA*b+f*g*IA-o*S*IA)*Yt,e[4]=Re*Yt,e[5]=($*te*C-cA*rA*C+cA*g*IA-i*te*IA-$*g*Ce+i*rA*Ce)*Yt,e[6]=(cA*S*C-c*te*C-cA*g*b+i*te*b+c*g*Ce-i*S*Ce)*Yt,e[7]=(c*rA*C-$*S*C+$*g*b-i*rA*b-c*g*IA+i*S*IA)*Yt,e[8]=Ne*Yt,e[9]=(cA*oA*C-$*JA*C-cA*o*IA+i*JA*IA+$*o*Ce-i*oA*Ce)*Yt,e[10]=(c*JA*C-cA*f*C+cA*o*b-i*JA*b-c*o*Ce+i*f*Ce)*Yt,e[11]=($*f*C-c*oA*C-$*o*b+i*oA*b+c*o*IA-i*f*IA)*Yt,e[12]=wt*Yt,e[13]=($*JA*g-cA*oA*g+cA*o*rA-i*JA*rA-$*o*te+i*oA*te)*Yt,e[14]=(cA*f*g-c*JA*g-cA*o*S+i*JA*S+c*o*te-i*f*te)*Yt,e[15]=(c*oA*g-$*f*g+$*o*S-i*oA*S-c*o*rA+i*f*rA)*Yt,this}scale(e){const i=this.elements,o=e.x,g=e.y,C=e.z;return i[0]*=o,i[4]*=g,i[8]*=C,i[1]*=o,i[5]*=g,i[9]*=C,i[2]*=o,i[6]*=g,i[10]*=C,i[3]*=o,i[7]*=g,i[11]*=C,this}getMaxScaleOnAxis(){const e=this.elements,i=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],o=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],g=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(i,o,g))}makeTranslation(e,i,o){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,i,0,0,1,o,0,0,0,1),this}makeRotationX(e){const i=Math.cos(e),o=Math.sin(e);return this.set(1,0,0,0,0,i,-o,0,0,o,i,0,0,0,0,1),this}makeRotationY(e){const i=Math.cos(e),o=Math.sin(e);return this.set(i,0,o,0,0,1,0,0,-o,0,i,0,0,0,0,1),this}makeRotationZ(e){const i=Math.cos(e),o=Math.sin(e);return this.set(i,-o,0,0,o,i,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,i){const o=Math.cos(i),g=Math.sin(i),C=1-o,c=e.x,f=e.y,S=e.z,b=C*c,$=C*f;return this.set(b*c+o,b*f-g*S,b*S+g*f,0,b*f+g*S,$*f+o,$*S-g*c,0,b*S-g*f,$*S+g*c,C*S*S+o,0,0,0,0,1),this}makeScale(e,i,o){return this.set(e,0,0,0,0,i,0,0,0,0,o,0,0,0,0,1),this}makeShear(e,i,o,g,C,c){return this.set(1,o,C,0,e,1,c,0,i,g,1,0,0,0,0,1),this}compose(e,i,o){const g=this.elements,C=i._x,c=i._y,f=i._z,S=i._w,b=C+C,$=c+c,oA=f+f,rA=C*b,IA=C*$,cA=C*oA,JA=c*$,te=c*oA,Ce=f*oA,Me=S*b,Re=S*$,Ne=S*oA,wt=o.x,St=o.y,Yt=o.z;return g[0]=(1-(JA+Ce))*wt,g[1]=(IA+Ne)*wt,g[2]=(cA-Re)*wt,g[3]=0,g[4]=(IA-Ne)*St,g[5]=(1-(rA+Ce))*St,g[6]=(te+Me)*St,g[7]=0,g[8]=(cA+Re)*Yt,g[9]=(te-Me)*Yt,g[10]=(1-(rA+JA))*Yt,g[11]=0,g[12]=e.x,g[13]=e.y,g[14]=e.z,g[15]=1,this}decompose(e,i,o){const g=this.elements;let C=ta.set(g[0],g[1],g[2]).length();const c=ta.set(g[4],g[5],g[6]).length(),f=ta.set(g[8],g[9],g[10]).length();this.determinant()<0&&(C=-C),e.x=g[12],e.y=g[13],e.z=g[14],As.copy(this);const b=1/C,$=1/c,oA=1/f;return As.elements[0]*=b,As.elements[1]*=b,As.elements[2]*=b,As.elements[4]*=$,As.elements[5]*=$,As.elements[6]*=$,As.elements[8]*=oA,As.elements[9]*=oA,As.elements[10]*=oA,i.setFromRotationMatrix(As),o.x=C,o.y=c,o.z=f,this}makePerspective(e,i,o,g,C,c,f=ss){const S=this.elements,b=2*C/(i-e),$=2*C/(o-g),oA=(i+e)/(i-e),rA=(o+g)/(o-g);let IA,cA;if(f===ss)IA=-(c+C)/(c-C),cA=-2*c*C/(c-C);else if(f===Ns)IA=-c/(c-C),cA=-c*C/(c-C);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+f);return S[0]=b,S[4]=0,S[8]=oA,S[12]=0,S[1]=0,S[5]=$,S[9]=rA,S[13]=0,S[2]=0,S[6]=0,S[10]=IA,S[14]=cA,S[3]=0,S[7]=0,S[11]=-1,S[15]=0,this}makeOrthographic(e,i,o,g,C,c,f=ss){const S=this.elements,b=1/(i-e),$=1/(o-g),oA=1/(c-C),rA=(i+e)*b,IA=(o+g)*$;let cA,JA;if(f===ss)cA=(c+C)*oA,JA=-2*oA;else if(f===Ns)cA=C*oA,JA=-1*oA;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+f);return S[0]=2*b,S[4]=0,S[8]=0,S[12]=-rA,S[1]=0,S[5]=2*$,S[9]=0,S[13]=-IA,S[2]=0,S[6]=0,S[10]=JA,S[14]=-cA,S[3]=0,S[7]=0,S[11]=0,S[15]=1,this}equals(e){const i=this.elements,o=e.elements;for(let g=0;g<16;g++)if(i[g]!==o[g])return!1;return!0}fromArray(e,i=0){for(let o=0;o<16;o++)this.elements[o]=e[o+i];return this}toArray(e=[],i=0){const o=this.elements;return e[i]=o[0],e[i+1]=o[1],e[i+2]=o[2],e[i+3]=o[3],e[i+4]=o[4],e[i+5]=o[5],e[i+6]=o[6],e[i+7]=o[7],e[i+8]=o[8],e[i+9]=o[9],e[i+10]=o[10],e[i+11]=o[11],e[i+12]=o[12],e[i+13]=o[13],e[i+14]=o[14],e[i+15]=o[15],e}}const ta=new Qe,As=new Eo,ca=new Qe(0,0,0),GI=new Qe(1,1,1),bs=new Qe,Pg=new Qe,us=new Qe,WI=new Eo,VI=new $o;class w{constructor(e=0,i=0,o=0,g=w.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=i,this._z=o,this._order=g}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,i,o,g=this._order){return this._x=e,this._y=i,this._z=o,this._order=g,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,i=this._order,o=!0){const g=e.elements,C=g[0],c=g[4],f=g[8],S=g[1],b=g[5],$=g[9],oA=g[2],rA=g[6],IA=g[10];switch(i){case"XYZ":this._y=Math.asin(no(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(-$,IA),this._z=Math.atan2(-c,C)):(this._x=Math.atan2(rA,b),this._z=0);break;case"YXZ":this._x=Math.asin(-no($,-1,1)),Math.abs($)<.9999999?(this._y=Math.atan2(f,IA),this._z=Math.atan2(S,b)):(this._y=Math.atan2(-oA,C),this._z=0);break;case"ZXY":this._x=Math.asin(no(rA,-1,1)),Math.abs(rA)<.9999999?(this._y=Math.atan2(-oA,IA),this._z=Math.atan2(-c,b)):(this._y=0,this._z=Math.atan2(S,C));break;case"ZYX":this._y=Math.asin(-no(oA,-1,1)),Math.abs(oA)<.9999999?(this._x=Math.atan2(rA,IA),this._z=Math.atan2(S,C)):(this._x=0,this._z=Math.atan2(-c,b));break;case"YZX":this._z=Math.asin(no(S,-1,1)),Math.abs(S)<.9999999?(this._x=Math.atan2(-$,b),this._y=Math.atan2(-oA,C)):(this._x=0,this._y=Math.atan2(f,IA));break;case"XZY":this._z=Math.asin(-no(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(rA,b),this._y=Math.atan2(f,C)):(this._x=Math.atan2(-$,IA),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+i)}return this._order=i,o===!0&&this._onChangeCallback(),this}setFromQuaternion(e,i,o){return WI.makeRotationFromQuaternion(e),this.setFromRotationMatrix(WI,i,o)}setFromVector3(e,i=this._order){return this.set(e.x,e.y,e.z,i)}reorder(e){return VI.setFromEuler(this),this.setFromQuaternion(VI,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],i=0){return e[i]=this._x,e[i+1]=this._y,e[i+2]=this._z,e[i+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}w.DEFAULT_ORDER="XYZ";class L{constructor(){this.mask=1}set(e){this.mask=(1<<e|0)>>>0}enable(e){this.mask|=1<<e|0}enableAll(){this.mask=-1}toggle(e){this.mask^=1<<e|0}disable(e){this.mask&=~(1<<e|0)}disableAll(){this.mask=0}test(e){return(this.mask&e.mask)!==0}isEnabled(e){return(this.mask&(1<<e|0))!==0}}let AA=0;const EA=new Qe,GA=new $o,qA=new Eo,de=new Qe,E=new Qe,J=new Qe,F=new $o,sA=new Qe(1,0,0),MA=new Qe(0,1,0),dA=new Qe(0,0,1),PA={type:"added"},OA={type:"removed"},Xe={type:"childadded",child:null},Le={type:"childremoved",child:null};class be extends qn{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:AA++}),this.uuid=gg(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=be.DEFAULT_UP.clone();const e=new Qe,i=new w,o=new $o,g=new Qe(1,1,1);function C(){o.setFromEuler(i,!1)}function c(){i.setFromQuaternion(o,void 0,!1)}i._onChange(C),o._onChange(c),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:e},rotation:{configurable:!0,enumerable:!0,value:i},quaternion:{configurable:!0,enumerable:!0,value:o},scale:{configurable:!0,enumerable:!0,value:g},modelViewMatrix:{value:new Eo},normalMatrix:{value:new ds}}),this.matrix=new Eo,this.matrixWorld=new Eo,this.matrixAutoUpdate=be.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=be.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new L,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(e){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(e),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(e){return this.quaternion.premultiply(e),this}setRotationFromAxisAngle(e,i){this.quaternion.setFromAxisAngle(e,i)}setRotationFromEuler(e){this.quaternion.setFromEuler(e,!0)}setRotationFromMatrix(e){this.quaternion.setFromRotationMatrix(e)}setRotationFromQuaternion(e){this.quaternion.copy(e)}rotateOnAxis(e,i){return GA.setFromAxisAngle(e,i),this.quaternion.multiply(GA),this}rotateOnWorldAxis(e,i){return GA.setFromAxisAngle(e,i),this.quaternion.premultiply(GA),this}rotateX(e){return this.rotateOnAxis(sA,e)}rotateY(e){return this.rotateOnAxis(MA,e)}rotateZ(e){return this.rotateOnAxis(dA,e)}translateOnAxis(e,i){return EA.copy(e).applyQuaternion(this.quaternion),this.position.add(EA.multiplyScalar(i)),this}translateX(e){return this.translateOnAxis(sA,e)}translateY(e){return this.translateOnAxis(MA,e)}translateZ(e){return this.translateOnAxis(dA,e)}localToWorld(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(this.matrixWorld)}worldToLocal(e){return this.updateWorldMatrix(!0,!1),e.applyMatrix4(qA.copy(this.matrixWorld).invert())}lookAt(e,i,o){e.isVector3?de.copy(e):de.set(e,i,o);const g=this.parent;this.updateWorldMatrix(!0,!1),E.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?qA.lookAt(E,de,this.up):qA.lookAt(de,E,this.up),this.quaternion.setFromRotationMatrix(qA),g&&(qA.extractRotation(g.matrixWorld),GA.setFromRotationMatrix(qA),this.quaternion.premultiply(GA.invert()))}add(e){if(arguments.length>1){for(let i=0;i<arguments.length;i++)this.add(arguments[i]);return this}return e===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",e),this):(e&&e.isObject3D?(e.removeFromParent(),e.parent=this,this.children.push(e),e.dispatchEvent(PA),Xe.child=e,this.dispatchEvent(Xe),Xe.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",e),this)}remove(e){if(arguments.length>1){for(let o=0;o<arguments.length;o++)this.remove(arguments[o]);return this}const i=this.children.indexOf(e);return i!==-1&&(e.parent=null,this.children.splice(i,1),e.dispatchEvent(OA),Le.child=e,this.dispatchEvent(Le),Le.child=null),this}removeFromParent(){const e=this.parent;return e!==null&&e.remove(this),this}clear(){return this.remove(...this.children)}attach(e){return this.updateWorldMatrix(!0,!1),qA.copy(this.matrixWorld).invert(),e.parent!==null&&(e.parent.updateWorldMatrix(!0,!1),qA.multiply(e.parent.matrixWorld)),e.applyMatrix4(qA),e.removeFromParent(),e.parent=this,this.children.push(e),e.updateWorldMatrix(!1,!0),e.dispatchEvent(PA),Xe.child=e,this.dispatchEvent(Xe),Xe.child=null,this}getObjectById(e){return this.getObjectByProperty("id",e)}getObjectByName(e){return this.getObjectByProperty("name",e)}getObjectByProperty(e,i){if(this[e]===i)return this;for(let o=0,g=this.children.length;o<g;o++){const c=this.children[o].getObjectByProperty(e,i);if(c!==void 0)return c}}getObjectsByProperty(e,i,o=[]){this[e]===i&&o.push(this);const g=this.children;for(let C=0,c=g.length;C<c;C++)g[C].getObjectsByProperty(e,i,o);return o}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(E,e,J),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(E,F,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);const i=this.matrixWorld.elements;return e.set(i[8],i[9],i[10]).normalize()}raycast(){}traverse(e){e(this);const i=this.children;for(let o=0,g=i.length;o<g;o++)i[o].traverse(e)}traverseVisible(e){if(this.visible===!1)return;e(this);const i=this.children;for(let o=0,g=i.length;o<g;o++)i[o].traverseVisible(e)}traverseAncestors(e){const i=this.parent;i!==null&&(e(i),i.traverseAncestors(e))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(e){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||e)&&(this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),this.matrixWorldNeedsUpdate=!1,e=!0);const i=this.children;for(let o=0,g=i.length;o<g;o++)i[o].updateMatrixWorld(e)}updateWorldMatrix(e,i){const o=this.parent;if(e===!0&&o!==null&&o.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldAutoUpdate===!0&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix)),i===!0){const g=this.children;for(let C=0,c=g.length;C<c;C++)g[C].updateWorldMatrix(!1,!0)}}toJSON(e){const i=e===void 0||typeof e=="string",o={};i&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},o.metadata={version:4.6,type:"Object",generator:"Object3D.toJSON"});const g={};g.uuid=this.uuid,g.type=this.type,this.name!==""&&(g.name=this.name),this.castShadow===!0&&(g.castShadow=!0),this.receiveShadow===!0&&(g.receiveShadow=!0),this.visible===!1&&(g.visible=!1),this.frustumCulled===!1&&(g.frustumCulled=!1),this.renderOrder!==0&&(g.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(g.userData=this.userData),g.layers=this.layers.mask,g.matrix=this.matrix.toArray(),g.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(g.matrixAutoUpdate=!1),this.isInstancedMesh&&(g.type="InstancedMesh",g.count=this.count,g.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(g.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(g.type="BatchedMesh",g.perObjectFrustumCulled=this.perObjectFrustumCulled,g.sortObjects=this.sortObjects,g.drawRanges=this._drawRanges,g.reservedRanges=this._reservedRanges,g.visibility=this._visibility,g.active=this._active,g.bounds=this._bounds.map(f=>({boxInitialized:f.boxInitialized,boxMin:f.box.min.toArray(),boxMax:f.box.max.toArray(),sphereInitialized:f.sphereInitialized,sphereRadius:f.sphere.radius,sphereCenter:f.sphere.center.toArray()})),g.maxInstanceCount=this._maxInstanceCount,g.maxVertexCount=this._maxVertexCount,g.maxIndexCount=this._maxIndexCount,g.geometryInitialized=this._geometryInitialized,g.geometryCount=this._geometryCount,g.matricesTexture=this._matricesTexture.toJSON(e),this._colorsTexture!==null&&(g.colorsTexture=this._colorsTexture.toJSON(e)),this.boundingSphere!==null&&(g.boundingSphere={center:g.boundingSphere.center.toArray(),radius:g.boundingSphere.radius}),this.boundingBox!==null&&(g.boundingBox={min:g.boundingBox.min.toArray(),max:g.boundingBox.max.toArray()}));function C(f,S){return f[S.uuid]===void 0&&(f[S.uuid]=S.toJSON(e)),S.uuid}if(this.isScene)this.background&&(this.background.isColor?g.background=this.background.toJSON():this.background.isTexture&&(g.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(g.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){g.geometry=C(e.geometries,this.geometry);const f=this.geometry.parameters;if(f!==void 0&&f.shapes!==void 0){const S=f.shapes;if(Array.isArray(S))for(let b=0,$=S.length;b<$;b++){const oA=S[b];C(e.shapes,oA)}else C(e.shapes,S)}}if(this.isSkinnedMesh&&(g.bindMode=this.bindMode,g.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(C(e.skeletons,this.skeleton),g.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const f=[];for(let S=0,b=this.material.length;S<b;S++)f.push(C(e.materials,this.material[S]));g.material=f}else g.material=C(e.materials,this.material);if(this.children.length>0){g.children=[];for(let f=0;f<this.children.length;f++)g.children.push(this.children[f].toJSON(e).object)}if(this.animations.length>0){g.animations=[];for(let f=0;f<this.animations.length;f++){const S=this.animations[f];g.animations.push(C(e.animations,S))}}if(i){const f=c(e.geometries),S=c(e.materials),b=c(e.textures),$=c(e.images),oA=c(e.shapes),rA=c(e.skeletons),IA=c(e.animations),cA=c(e.nodes);f.length>0&&(o.geometries=f),S.length>0&&(o.materials=S),b.length>0&&(o.textures=b),$.length>0&&(o.images=$),oA.length>0&&(o.shapes=oA),rA.length>0&&(o.skeletons=rA),IA.length>0&&(o.animations=IA),cA.length>0&&(o.nodes=cA)}return o.object=g,o;function c(f){const S=[];for(const b in f){const $=f[b];delete $.metadata,S.push($)}return S}}clone(e){return new this.constructor().copy(this,e)}copy(e,i=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),i===!0)for(let o=0;o<e.children.length;o++){const g=e.children[o];this.add(g.clone())}return this}}be.DEFAULT_UP=new Qe(0,1,0),be.DEFAULT_MATRIX_AUTO_UPDATE=!0,be.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const se=new Qe,Ge=new Qe,je=new Qe,ve=new Qe,Ve=new Qe,Ae=new Qe,FA=new Qe,At=new Qe,Pe=new Qe,at=new Qe,et=new ir,rt=new ir,Bt=new ir;class Dt{constructor(e=new Qe,i=new Qe,o=new Qe){this.a=e,this.b=i,this.c=o}static getNormal(e,i,o,g){g.subVectors(o,i),se.subVectors(e,i),g.cross(se);const C=g.lengthSq();return C>0?g.multiplyScalar(1/Math.sqrt(C)):g.set(0,0,0)}static getBarycoord(e,i,o,g,C){se.subVectors(g,i),Ge.subVectors(o,i),je.subVectors(e,i);const c=se.dot(se),f=se.dot(Ge),S=se.dot(je),b=Ge.dot(Ge),$=Ge.dot(je),oA=c*b-f*f;if(oA===0)return C.set(0,0,0),null;const rA=1/oA,IA=(b*S-f*$)*rA,cA=(c*$-f*S)*rA;return C.set(1-IA-cA,cA,IA)}static containsPoint(e,i,o,g){return this.getBarycoord(e,i,o,g,ve)===null?!1:ve.x>=0&&ve.y>=0&&ve.x+ve.y<=1}static getInterpolation(e,i,o,g,C,c,f,S){return this.getBarycoord(e,i,o,g,ve)===null?(S.x=0,S.y=0,"z"in S&&(S.z=0),"w"in S&&(S.w=0),null):(S.setScalar(0),S.addScaledVector(C,ve.x),S.addScaledVector(c,ve.y),S.addScaledVector(f,ve.z),S)}static getInterpolatedAttribute(e,i,o,g,C,c){return et.setScalar(0),rt.setScalar(0),Bt.setScalar(0),et.fromBufferAttribute(e,i),rt.fromBufferAttribute(e,o),Bt.fromBufferAttribute(e,g),c.setScalar(0),c.addScaledVector(et,C.x),c.addScaledVector(rt,C.y),c.addScaledVector(Bt,C.z),c}static isFrontFacing(e,i,o,g){return se.subVectors(o,i),Ge.subVectors(e,i),se.cross(Ge).dot(g)<0}set(e,i,o){return this.a.copy(e),this.b.copy(i),this.c.copy(o),this}setFromPointsAndIndices(e,i,o,g){return this.a.copy(e[i]),this.b.copy(e[o]),this.c.copy(e[g]),this}setFromAttributeAndIndices(e,i,o,g){return this.a.fromBufferAttribute(e,i),this.b.fromBufferAttribute(e,o),this.c.fromBufferAttribute(e,g),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return se.subVectors(this.c,this.b),Ge.subVectors(this.a,this.b),se.cross(Ge).length()*.5}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(.3333333333333333)}getNormal(e){return Dt.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,i){return Dt.getBarycoord(e,this.a,this.b,this.c,i)}getInterpolation(e,i,o,g,C){return Dt.getInterpolation(e,this.a,this.b,this.c,i,o,g,C)}containsPoint(e){return Dt.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return Dt.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,i){const o=this.a,g=this.b,C=this.c;let c,f;Ve.subVectors(g,o),Ae.subVectors(C,o),At.subVectors(e,o);const S=Ve.dot(At),b=Ae.dot(At);if(S<=0&&b<=0)return i.copy(o);Pe.subVectors(e,g);const $=Ve.dot(Pe),oA=Ae.dot(Pe);if($>=0&&oA<=$)return i.copy(g);const rA=S*oA-$*b;if(rA<=0&&S>=0&&$<=0)return c=S/(S-$),i.copy(o).addScaledVector(Ve,c);at.subVectors(e,C);const IA=Ve.dot(at),cA=Ae.dot(at);if(cA>=0&&IA<=cA)return i.copy(C);const JA=IA*b-S*cA;if(JA<=0&&b>=0&&cA<=0)return f=b/(b-cA),i.copy(o).addScaledVector(Ae,f);const te=$*cA-IA*oA;if(te<=0&&oA-$>=0&&IA-cA>=0)return FA.subVectors(C,g),f=(oA-$)/(oA-$+(IA-cA)),i.copy(g).addScaledVector(FA,f);const Ce=1/(te+JA+rA);return c=JA*Ce,f=rA*Ce,i.copy(o).addScaledVector(Ve,c).addScaledVector(Ae,f)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}const ce={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},oe={h:0,s:0,l:0},it={h:0,s:0,l:0};function $t(P,e,i){return i<0&&(i+=1),i>1&&(i-=1),i<.16666666666666666?P+(e-P)*6*i:i<.5?e:i<.6666666666666666?P+(e-P)*6*(.6666666666666666-i):P}class ht{constructor(e,i,o){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,i,o)}set(e,i,o){if(i===void 0&&o===void 0){const g=e;g&&g.isColor?this.copy(g):typeof g=="number"?this.setHex(g):typeof g=="string"&&this.setStyle(g)}else this.setRGB(e,i,o);return this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,i=Ie){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(e&255)/255,zo.toWorkingColorSpace(this,i),this}setRGB(e,i,o,g=zo.workingColorSpace){return this.r=e,this.g=i,this.b=o,zo.toWorkingColorSpace(this,g),this}setHSL(e,i,o,g=zo.workingColorSpace){if(e=aI(e,1),i=no(i,0,1),o=no(o,0,1),i===0)this.r=this.g=this.b=o;else{const C=o<=.5?o*(1+i):o+i-o*i,c=2*o-C;this.r=$t(c,C,e+.3333333333333333),this.g=$t(c,C,e),this.b=$t(c,C,e-.3333333333333333)}return zo.toWorkingColorSpace(this,g),this}setStyle(e,i=Ie){function o(C){C!==void 0&&parseFloat(C)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let g;if(g=/^(\w+)\(([^\)]*)\)/.exec(e)){let C;const c=g[1],f=g[2];switch(c){case"rgb":case"rgba":if(C=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(f))return o(C[4]),this.setRGB(Math.min(255,parseInt(C[1],10))/255,Math.min(255,parseInt(C[2],10))/255,Math.min(255,parseInt(C[3],10))/255,i);if(C=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(f))return o(C[4]),this.setRGB(Math.min(100,parseInt(C[1],10))/100,Math.min(100,parseInt(C[2],10))/100,Math.min(100,parseInt(C[3],10))/100,i);break;case"hsl":case"hsla":if(C=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(f))return o(C[4]),this.setHSL(parseFloat(C[1])/360,parseFloat(C[2])/100,parseFloat(C[3])/100,i);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(g=/^\#([A-Fa-f\d]+)$/.exec(e)){const C=g[1],c=C.length;if(c===3)return this.setRGB(parseInt(C.charAt(0),16)/15,parseInt(C.charAt(1),16)/15,parseInt(C.charAt(2),16)/15,i);if(c===6)return this.setHex(parseInt(C,16),i);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,i);return this}setColorName(e,i=Ie){const o=ce[e.toLowerCase()];return o!==void 0?this.setHex(o,i):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=Ds(e.r),this.g=Ds(e.g),this.b=Ds(e.b),this}copyLinearToSRGB(e){return this.r=pg(e.r),this.g=pg(e.g),this.b=pg(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Ie){return zo.fromWorkingColorSpace(mt.copy(this),e),Math.round(no(mt.r*255,0,255))*65536+Math.round(no(mt.g*255,0,255))*256+Math.round(no(mt.b*255,0,255))}getHexString(e=Ie){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,i=zo.workingColorSpace){zo.fromWorkingColorSpace(mt.copy(this),i);const o=mt.r,g=mt.g,C=mt.b,c=Math.max(o,g,C),f=Math.min(o,g,C);let S,b;const $=(f+c)/2;if(f===c)S=0,b=0;else{const oA=c-f;switch(b=$<=.5?oA/(c+f):oA/(2-c-f),c){case o:S=(g-C)/oA+(g<C?6:0);break;case g:S=(C-o)/oA+2;break;case C:S=(o-g)/oA+4;break}S/=6}return e.h=S,e.s=b,e.l=$,e}getRGB(e,i=zo.workingColorSpace){return zo.fromWorkingColorSpace(mt.copy(this),i),e.r=mt.r,e.g=mt.g,e.b=mt.b,e}getStyle(e=Ie){zo.fromWorkingColorSpace(mt.copy(this),e);const i=mt.r,o=mt.g,g=mt.b;return e!==Ie?`color(${e} ${i.toFixed(3)} ${o.toFixed(3)} ${g.toFixed(3)})`:`rgb(${Math.round(i*255)},${Math.round(o*255)},${Math.round(g*255)})`}offsetHSL(e,i,o){return this.getHSL(oe),this.setHSL(oe.h+e,oe.s+i,oe.l+o)}add(e){return this.r+=e.r,this.g+=e.g,this.b+=e.b,this}addColors(e,i){return this.r=e.r+i.r,this.g=e.g+i.g,this.b=e.b+i.b,this}addScalar(e){return this.r+=e,this.g+=e,this.b+=e,this}sub(e){return this.r=Math.max(0,this.r-e.r),this.g=Math.max(0,this.g-e.g),this.b=Math.max(0,this.b-e.b),this}multiply(e){return this.r*=e.r,this.g*=e.g,this.b*=e.b,this}multiplyScalar(e){return this.r*=e,this.g*=e,this.b*=e,this}lerp(e,i){return this.r+=(e.r-this.r)*i,this.g+=(e.g-this.g)*i,this.b+=(e.b-this.b)*i,this}lerpColors(e,i,o){return this.r=e.r+(i.r-e.r)*o,this.g=e.g+(i.g-e.g)*o,this.b=e.b+(i.b-e.b)*o,this}lerpHSL(e,i){this.getHSL(oe),e.getHSL(it);const o=Lo(oe.h,it.h,i),g=Lo(oe.s,it.s,i),C=Lo(oe.l,it.l,i);return this.setHSL(o,g,C),this}setFromVector3(e){return this.r=e.x,this.g=e.y,this.b=e.z,this}applyMatrix3(e){const i=this.r,o=this.g,g=this.b,C=e.elements;return this.r=C[0]*i+C[3]*o+C[6]*g,this.g=C[1]*i+C[4]*o+C[7]*g,this.b=C[2]*i+C[5]*o+C[8]*g,this}equals(e){return e.r===this.r&&e.g===this.g&&e.b===this.b}fromArray(e,i=0){return this.r=e[i],this.g=e[i+1],this.b=e[i+2],this}toArray(e=[],i=0){return e[i]=this.r,e[i+1]=this.g,e[i+2]=this.b,e}fromBufferAttribute(e,i){return this.r=e.getX(i),this.g=e.getY(i),this.b=e.getZ(i),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const mt=new ht;ht.NAMES=ce;let mi=0;class Jt extends qn{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:mi++}),this.uuid=gg(),this.name="",this.type="Material",this.blending=x,this.side=R,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=HA,this.blendDst=pe,this.blendEquation=QA,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new ht(0,0,0),this.blendAlpha=0,this.depthFunc=Ct,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=vi,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=Ft,this.stencilZFail=Ft,this.stencilZPass=Ft,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(e!==void 0)for(const i in e){const o=e[i];if(o===void 0){console.warn(`THREE.Material: parameter '${i}' has value of undefined.`);continue}const g=this[i];if(g===void 0){console.warn(`THREE.Material: '${i}' is not a property of THREE.${this.type}.`);continue}g&&g.isColor?g.set(o):g&&g.isVector3&&o&&o.isVector3?g.copy(o):this[i]=o}}toJSON(e){const i=e===void 0||typeof e=="string";i&&(e={textures:{},images:{}});const o={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};o.uuid=this.uuid,o.type=this.type,this.name!==""&&(o.name=this.name),this.color&&this.color.isColor&&(o.color=this.color.getHex()),this.roughness!==void 0&&(o.roughness=this.roughness),this.metalness!==void 0&&(o.metalness=this.metalness),this.sheen!==void 0&&(o.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(o.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(o.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(o.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(o.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(o.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(o.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(o.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(o.shininess=this.shininess),this.clearcoat!==void 0&&(o.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(o.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(o.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(o.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(o.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,o.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(o.dispersion=this.dispersion),this.iridescence!==void 0&&(o.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(o.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(o.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(o.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(o.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.anisotropy!==void 0&&(o.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(o.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(o.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(o.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(o.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(o.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(o.lightMap=this.lightMap.toJSON(e).uuid,o.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(o.aoMap=this.aoMap.toJSON(e).uuid,o.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(o.bumpMap=this.bumpMap.toJSON(e).uuid,o.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(o.normalMap=this.normalMap.toJSON(e).uuid,o.normalMapType=this.normalMapType,o.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(o.displacementMap=this.displacementMap.toJSON(e).uuid,o.displacementScale=this.displacementScale,o.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(o.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(o.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(o.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(o.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(o.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(o.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(o.envMap=this.envMap.toJSON(e).uuid,this.combine!==void 0&&(o.combine=this.combine)),this.envMapRotation!==void 0&&(o.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(o.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(o.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(o.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(o.gradientMap=this.gradientMap.toJSON(e).uuid),this.transmission!==void 0&&(o.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(o.transmissionMap=this.transmissionMap.toJSON(e).uuid),this.thickness!==void 0&&(o.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(o.thicknessMap=this.thicknessMap.toJSON(e).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(o.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(o.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(o.size=this.size),this.shadowSide!==null&&(o.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(o.sizeAttenuation=this.sizeAttenuation),this.blending!==x&&(o.blending=this.blending),this.side!==R&&(o.side=this.side),this.vertexColors===!0&&(o.vertexColors=!0),this.opacity<1&&(o.opacity=this.opacity),this.transparent===!0&&(o.transparent=!0),this.blendSrc!==HA&&(o.blendSrc=this.blendSrc),this.blendDst!==pe&&(o.blendDst=this.blendDst),this.blendEquation!==QA&&(o.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(o.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(o.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(o.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(o.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(o.blendAlpha=this.blendAlpha),this.depthFunc!==Ct&&(o.depthFunc=this.depthFunc),this.depthTest===!1&&(o.depthTest=this.depthTest),this.depthWrite===!1&&(o.depthWrite=this.depthWrite),this.colorWrite===!1&&(o.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(o.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==vi&&(o.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(o.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(o.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Ft&&(o.stencilFail=this.stencilFail),this.stencilZFail!==Ft&&(o.stencilZFail=this.stencilZFail),this.stencilZPass!==Ft&&(o.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(o.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(o.rotation=this.rotation),this.polygonOffset===!0&&(o.polygonOffset=!0),this.polygonOffsetFactor!==0&&(o.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(o.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(o.linewidth=this.linewidth),this.dashSize!==void 0&&(o.dashSize=this.dashSize),this.gapSize!==void 0&&(o.gapSize=this.gapSize),this.scale!==void 0&&(o.scale=this.scale),this.dithering===!0&&(o.dithering=!0),this.alphaTest>0&&(o.alphaTest=this.alphaTest),this.alphaHash===!0&&(o.alphaHash=!0),this.alphaToCoverage===!0&&(o.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(o.premultipliedAlpha=!0),this.forceSinglePass===!0&&(o.forceSinglePass=!0),this.wireframe===!0&&(o.wireframe=!0),this.wireframeLinewidth>1&&(o.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(o.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(o.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(o.flatShading=!0),this.visible===!1&&(o.visible=!1),this.toneMapped===!1&&(o.toneMapped=!1),this.fog===!1&&(o.fog=!1),Object.keys(this.userData).length>0&&(o.userData=this.userData);function g(C){const c=[];for(const f in C){const S=C[f];delete S.metadata,c.push(S)}return c}if(i){const C=g(e.textures),c=g(e.images);C.length>0&&(o.textures=C),c.length>0&&(o.images=c)}return o}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;const i=e.clippingPlanes;let o=null;if(i!==null){const g=i.length;o=new Array(g);for(let C=0;C!==g;++C)o[C]=i[C].clone()}return this.clippingPlanes=o,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){e===!0&&this.version++}onBuild(){console.warn("Material: onBuild() has been removed.")}}class Bi extends Jt{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new ht(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new w,this.combine=sn,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}const _t=vt();function vt(){const P=new ArrayBuffer(4),e=new Float32Array(P),i=new Uint32Array(P),o=new Uint32Array(512),g=new Uint32Array(512);for(let S=0;S<256;++S){const b=S-127;b<-27?(o[S]=0,o[S|256]=32768,g[S]=24,g[S|256]=24):b<-14?(o[S]=1024>>-b-14,o[S|256]=1024>>-b-14|32768,g[S]=-b-1,g[S|256]=-b-1):b<=15?(o[S]=b+15<<10,o[S|256]=b+15<<10|32768,g[S]=13,g[S|256]=13):b<128?(o[S]=31744,o[S|256]=64512,g[S]=24,g[S|256]=24):(o[S]=31744,o[S|256]=64512,g[S]=13,g[S|256]=13)}const C=new Uint32Array(2048),c=new Uint32Array(64),f=new Uint32Array(64);for(let S=1;S<1024;++S){let b=S<<13,$=0;for(;!(b&8388608);)b<<=1,$-=8388608;b&=-8388609,$+=947912704,C[S]=b|$}for(let S=1024;S<2048;++S)C[S]=939524096+(S-1024<<13);for(let S=1;S<31;++S)c[S]=S<<23;c[31]=1199570944,c[32]=2147483648;for(let S=33;S<63;++S)c[S]=2147483648+(S-32<<23);c[63]=3347054592;for(let S=1;S<64;++S)S!==32&&(f[S]=1024);return{floatView:e,uint32View:i,baseTable:o,shiftTable:g,mantissaTable:C,exponentTable:c,offsetTable:f}}function yn(P){Math.abs(P)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),P=no(P,-65504,65504),_t.floatView[0]=P;const e=_t.uint32View[0],i=e>>23&511;return _t.baseTable[i]+((e&8388607)>>_t.shiftTable[i])}function Xn(P){const e=P>>10;return _t.uint32View[0]=_t.mantissaTable[_t.offsetTable[e]+(P&1023)]+_t.exponentTable[e],_t.floatView[0]}const Gr={toHalfFloat:yn,fromHalfFloat:Xn},co=new Qe,Ar=new ni;let Fr=0;class an{constructor(e,i,o=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:Fr++}),this.name="",this.array=e,this.itemSize=i,this.count=e!==void 0?e.length/i:0,this.normalized=o,this.usage=Fs,this.updateRanges=[],this.gpuType=Kg,this.version=0}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,i){this.updateRanges.push({start:e,count:i})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,i,o){e*=this.itemSize,o*=i.itemSize;for(let g=0,C=this.itemSize;g<C;g++)this.array[e+g]=i.array[o+g];return this}copyArray(e){return this.array.set(e),this}applyMatrix3(e){if(this.itemSize===2)for(let i=0,o=this.count;i<o;i++)Ar.fromBufferAttribute(this,i),Ar.applyMatrix3(e),this.setXY(i,Ar.x,Ar.y);else if(this.itemSize===3)for(let i=0,o=this.count;i<o;i++)co.fromBufferAttribute(this,i),co.applyMatrix3(e),this.setXYZ(i,co.x,co.y,co.z);return this}applyMatrix4(e){for(let i=0,o=this.count;i<o;i++)co.fromBufferAttribute(this,i),co.applyMatrix4(e),this.setXYZ(i,co.x,co.y,co.z);return this}applyNormalMatrix(e){for(let i=0,o=this.count;i<o;i++)co.fromBufferAttribute(this,i),co.applyNormalMatrix(e),this.setXYZ(i,co.x,co.y,co.z);return this}transformDirection(e){for(let i=0,o=this.count;i<o;i++)co.fromBufferAttribute(this,i),co.transformDirection(e),this.setXYZ(i,co.x,co.y,co.z);return this}set(e,i=0){return this.array.set(e,i),this}getComponent(e,i){let o=this.array[e*this.itemSize+i];return this.normalized&&(o=ms(o,this.array)),o}setComponent(e,i,o){return this.normalized&&(o=eo(o,this.array)),this.array[e*this.itemSize+i]=o,this}getX(e){let i=this.array[e*this.itemSize];return this.normalized&&(i=ms(i,this.array)),i}setX(e,i){return this.normalized&&(i=eo(i,this.array)),this.array[e*this.itemSize]=i,this}getY(e){let i=this.array[e*this.itemSize+1];return this.normalized&&(i=ms(i,this.array)),i}setY(e,i){return this.normalized&&(i=eo(i,this.array)),this.array[e*this.itemSize+1]=i,this}getZ(e){let i=this.array[e*this.itemSize+2];return this.normalized&&(i=ms(i,this.array)),i}setZ(e,i){return this.normalized&&(i=eo(i,this.array)),this.array[e*this.itemSize+2]=i,this}getW(e){let i=this.array[e*this.itemSize+3];return this.normalized&&(i=ms(i,this.array)),i}setW(e,i){return this.normalized&&(i=eo(i,this.array)),this.array[e*this.itemSize+3]=i,this}setXY(e,i,o){return e*=this.itemSize,this.normalized&&(i=eo(i,this.array),o=eo(o,this.array)),this.array[e+0]=i,this.array[e+1]=o,this}setXYZ(e,i,o,g){return e*=this.itemSize,this.normalized&&(i=eo(i,this.array),o=eo(o,this.array),g=eo(g,this.array)),this.array[e+0]=i,this.array[e+1]=o,this.array[e+2]=g,this}setXYZW(e,i,o,g,C){return e*=this.itemSize,this.normalized&&(i=eo(i,this.array),o=eo(o,this.array),g=eo(g,this.array),C=eo(C,this.array)),this.array[e+0]=i,this.array[e+1]=o,this.array[e+2]=g,this.array[e+3]=C,this}onUpload(e){return this.onUploadCallback=e,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const e={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(e.name=this.name),this.usage!==Fs&&(e.usage=this.usage),e}}class li extends an{constructor(e,i,o){super(new Int8Array(e),i,o)}}class Zt extends an{constructor(e,i,o){super(new Uint8Array(e),i,o)}}class yi extends an{constructor(e,i,o){super(new Uint8ClampedArray(e),i,o)}}class Oi extends an{constructor(e,i,o){super(new Int16Array(e),i,o)}}class to extends an{constructor(e,i,o){super(new Uint16Array(e),i,o)}}class io extends an{constructor(e,i,o){super(new Int32Array(e),i,o)}}class bo extends an{constructor(e,i,o){super(new Uint32Array(e),i,o)}}class So extends an{constructor(e,i,o){super(new Uint16Array(e),i,o),this.isFloat16BufferAttribute=!0}getX(e){let i=Xn(this.array[e*this.itemSize]);return this.normalized&&(i=ms(i,this.array)),i}setX(e,i){return this.normalized&&(i=eo(i,this.array)),this.array[e*this.itemSize]=yn(i),this}getY(e){let i=Xn(this.array[e*this.itemSize+1]);return this.normalized&&(i=ms(i,this.array)),i}setY(e,i){return this.normalized&&(i=eo(i,this.array)),this.array[e*this.itemSize+1]=yn(i),this}getZ(e){let i=Xn(this.array[e*this.itemSize+2]);return this.normalized&&(i=ms(i,this.array)),i}setZ(e,i){return this.normalized&&(i=eo(i,this.array)),this.array[e*this.itemSize+2]=yn(i),this}getW(e){let i=Xn(this.array[e*this.itemSize+3]);return this.normalized&&(i=ms(i,this.array)),i}setW(e,i){return this.normalized&&(i=eo(i,this.array)),this.array[e*this.itemSize+3]=yn(i),this}setXY(e,i,o){return e*=this.itemSize,this.normalized&&(i=eo(i,this.array),o=eo(o,this.array)),this.array[e+0]=yn(i),this.array[e+1]=yn(o),this}setXYZ(e,i,o,g){return e*=this.itemSize,this.normalized&&(i=eo(i,this.array),o=eo(o,this.array),g=eo(g,this.array)),this.array[e+0]=yn(i),this.array[e+1]=yn(o),this.array[e+2]=yn(g),this}setXYZW(e,i,o,g,C){return e*=this.itemSize,this.normalized&&(i=eo(i,this.array),o=eo(o,this.array),g=eo(g,this.array),C=eo(C,this.array)),this.array[e+0]=yn(i),this.array[e+1]=yn(o),this.array[e+2]=yn(g),this.array[e+3]=yn(C),this}}class he extends an{constructor(e,i,o){super(new Float32Array(e),i,o)}}let fs=0;const fn=new Eo,ko=new be,cn=new Qe,nr=new Xr,wn=new Xr,qi=new Qe;class Rn extends qn{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:fs++}),this.uuid=gg(),this.name="",this.type="BufferGeometry",this.index=null,this.indirect=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(e){return Array.isArray(e)?this.index=new(SI(e)?bo:to)(e,1):this.index=e,this}setIndirect(e){return this.indirect=e,this}getIndirect(){return this.indirect}getAttribute(e){return this.attributes[e]}setAttribute(e,i){return this.attributes[e]=i,this}deleteAttribute(e){return delete this.attributes[e],this}hasAttribute(e){return this.attributes[e]!==void 0}addGroup(e,i,o=0){this.groups.push({start:e,count:i,materialIndex:o})}clearGroups(){this.groups=[]}setDrawRange(e,i){this.drawRange.start=e,this.drawRange.count=i}applyMatrix4(e){const i=this.attributes.position;i!==void 0&&(i.applyMatrix4(e),i.needsUpdate=!0);const o=this.attributes.normal;if(o!==void 0){const C=new ds().getNormalMatrix(e);o.applyNormalMatrix(C),o.needsUpdate=!0}const g=this.attributes.tangent;return g!==void 0&&(g.transformDirection(e),g.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(e){return fn.makeRotationFromQuaternion(e),this.applyMatrix4(fn),this}rotateX(e){return fn.makeRotationX(e),this.applyMatrix4(fn),this}rotateY(e){return fn.makeRotationY(e),this.applyMatrix4(fn),this}rotateZ(e){return fn.makeRotationZ(e),this.applyMatrix4(fn),this}translate(e,i,o){return fn.makeTranslation(e,i,o),this.applyMatrix4(fn),this}scale(e,i,o){return fn.makeScale(e,i,o),this.applyMatrix4(fn),this}lookAt(e){return ko.lookAt(e),ko.updateMatrix(),this.applyMatrix4(ko.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(cn).negate(),this.translate(cn.x,cn.y,cn.z),this}setFromPoints(e){const i=this.getAttribute("position");if(i===void 0){const o=[];for(let g=0,C=e.length;g<C;g++){const c=e[g];o.push(c.x,c.y,c.z||0)}this.setAttribute("position",new he(o,3))}else{const o=Math.min(e.length,i.count);for(let g=0;g<o;g++){const C=e[g];i.setXYZ(g,C.x,C.y,C.z||0)}e.length>i.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),i.needsUpdate=!0}return this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Xr);const e=this.attributes.position,i=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new Qe(-1/0,-1/0,-1/0),new Qe(1/0,1/0,1/0));return}if(e!==void 0){if(this.boundingBox.setFromBufferAttribute(e),i)for(let o=0,g=i.length;o<g;o++){const C=i[o];nr.setFromBufferAttribute(C),this.morphTargetsRelative?(qi.addVectors(this.boundingBox.min,nr.min),this.boundingBox.expandByPoint(qi),qi.addVectors(this.boundingBox.max,nr.max),this.boundingBox.expandByPoint(qi)):(this.boundingBox.expandByPoint(nr.min),this.boundingBox.expandByPoint(nr.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Rr);const e=this.attributes.position,i=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new Qe,1/0);return}if(e){const o=this.boundingSphere.center;if(nr.setFromBufferAttribute(e),i)for(let C=0,c=i.length;C<c;C++){const f=i[C];wn.setFromBufferAttribute(f),this.morphTargetsRelative?(qi.addVectors(nr.min,wn.min),nr.expandByPoint(qi),qi.addVectors(nr.max,wn.max),nr.expandByPoint(qi)):(nr.expandByPoint(wn.min),nr.expandByPoint(wn.max))}nr.getCenter(o);let g=0;for(let C=0,c=e.count;C<c;C++)qi.fromBufferAttribute(e,C),g=Math.max(g,o.distanceToSquared(qi));if(i)for(let C=0,c=i.length;C<c;C++){const f=i[C],S=this.morphTargetsRelative;for(let b=0,$=f.count;b<$;b++)qi.fromBufferAttribute(f,b),S&&(cn.fromBufferAttribute(e,b),qi.add(cn)),g=Math.max(g,o.distanceToSquared(qi))}this.boundingSphere.radius=Math.sqrt(g),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const e=this.index,i=this.attributes;if(e===null||i.position===void 0||i.normal===void 0||i.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const o=i.position,g=i.normal,C=i.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new an(new Float32Array(4*o.count),4));const c=this.getAttribute("tangent"),f=[],S=[];for(let xt=0;xt<o.count;xt++)f[xt]=new Qe,S[xt]=new Qe;const b=new Qe,$=new Qe,oA=new Qe,rA=new ni,IA=new ni,cA=new ni,JA=new Qe,te=new Qe;function Ce(xt,Li,Wi){b.fromBufferAttribute(o,xt),$.fromBufferAttribute(o,Li),oA.fromBufferAttribute(o,Wi),rA.fromBufferAttribute(C,xt),IA.fromBufferAttribute(C,Li),cA.fromBufferAttribute(C,Wi),$.sub(b),oA.sub(b),IA.sub(rA),cA.sub(rA);const hn=1/(IA.x*cA.y-cA.x*IA.y);isFinite(hn)&&(JA.copy($).multiplyScalar(cA.y).addScaledVector(oA,-IA.y).multiplyScalar(hn),te.copy(oA).multiplyScalar(IA.x).addScaledVector($,-cA.x).multiplyScalar(hn),f[xt].add(JA),f[Li].add(JA),f[Wi].add(JA),S[xt].add(te),S[Li].add(te),S[Wi].add(te))}let Me=this.groups;Me.length===0&&(Me=[{start:0,count:e.count}]);for(let xt=0,Li=Me.length;xt<Li;++xt){const Wi=Me[xt],hn=Wi.start,qo=Wi.count;for(let Qr=hn,ur=hn+qo;Qr<ur;Qr+=3)Ce(e.getX(Qr+0),e.getX(Qr+1),e.getX(Qr+2))}const Re=new Qe,Ne=new Qe,wt=new Qe,St=new Qe;function Yt(xt){wt.fromBufferAttribute(g,xt),St.copy(wt);const Li=f[xt];Re.copy(Li),Re.sub(wt.multiplyScalar(wt.dot(Li))).normalize(),Ne.crossVectors(St,Li);const hn=Ne.dot(S[xt])<0?-1:1;c.setXYZW(xt,Re.x,Re.y,Re.z,hn)}for(let xt=0,Li=Me.length;xt<Li;++xt){const Wi=Me[xt],hn=Wi.start,qo=Wi.count;for(let Qr=hn,ur=hn+qo;Qr<ur;Qr+=3)Yt(e.getX(Qr+0)),Yt(e.getX(Qr+1)),Yt(e.getX(Qr+2))}}computeVertexNormals(){const e=this.index,i=this.getAttribute("position");if(i!==void 0){let o=this.getAttribute("normal");if(o===void 0)o=new an(new Float32Array(i.count*3),3),this.setAttribute("normal",o);else for(let rA=0,IA=o.count;rA<IA;rA++)o.setXYZ(rA,0,0,0);const g=new Qe,C=new Qe,c=new Qe,f=new Qe,S=new Qe,b=new Qe,$=new Qe,oA=new Qe;if(e)for(let rA=0,IA=e.count;rA<IA;rA+=3){const cA=e.getX(rA+0),JA=e.getX(rA+1),te=e.getX(rA+2);g.fromBufferAttribute(i,cA),C.fromBufferAttribute(i,JA),c.fromBufferAttribute(i,te),$.subVectors(c,C),oA.subVectors(g,C),$.cross(oA),f.fromBufferAttribute(o,cA),S.fromBufferAttribute(o,JA),b.fromBufferAttribute(o,te),f.add($),S.add($),b.add($),o.setXYZ(cA,f.x,f.y,f.z),o.setXYZ(JA,S.x,S.y,S.z),o.setXYZ(te,b.x,b.y,b.z)}else for(let rA=0,IA=i.count;rA<IA;rA+=3)g.fromBufferAttribute(i,rA+0),C.fromBufferAttribute(i,rA+1),c.fromBufferAttribute(i,rA+2),$.subVectors(c,C),oA.subVectors(g,C),$.cross(oA),o.setXYZ(rA+0,$.x,$.y,$.z),o.setXYZ(rA+1,$.x,$.y,$.z),o.setXYZ(rA+2,$.x,$.y,$.z);this.normalizeNormals(),o.needsUpdate=!0}}normalizeNormals(){const e=this.attributes.normal;for(let i=0,o=e.count;i<o;i++)qi.fromBufferAttribute(e,i),qi.normalize(),e.setXYZ(i,qi.x,qi.y,qi.z)}toNonIndexed(){function e(f,S){const b=f.array,$=f.itemSize,oA=f.normalized,rA=new b.constructor(S.length*$);let IA=0,cA=0;for(let JA=0,te=S.length;JA<te;JA++){f.isInterleavedBufferAttribute?IA=S[JA]*f.data.stride+f.offset:IA=S[JA]*$;for(let Ce=0;Ce<$;Ce++)rA[cA++]=b[IA++]}return new an(rA,$,oA)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const i=new Rn,o=this.index.array,g=this.attributes;for(const f in g){const S=g[f],b=e(S,o);i.setAttribute(f,b)}const C=this.morphAttributes;for(const f in C){const S=[],b=C[f];for(let $=0,oA=b.length;$<oA;$++){const rA=b[$],IA=e(rA,o);S.push(IA)}i.morphAttributes[f]=S}i.morphTargetsRelative=this.morphTargetsRelative;const c=this.groups;for(let f=0,S=c.length;f<S;f++){const b=c[f];i.addGroup(b.start,b.count,b.materialIndex)}return i}toJSON(){const e={metadata:{version:4.6,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(e.uuid=this.uuid,e.type=this.type,this.name!==""&&(e.name=this.name),Object.keys(this.userData).length>0&&(e.userData=this.userData),this.parameters!==void 0){const S=this.parameters;for(const b in S)S[b]!==void 0&&(e[b]=S[b]);return e}e.data={attributes:{}};const i=this.index;i!==null&&(e.data.index={type:i.array.constructor.name,array:Array.prototype.slice.call(i.array)});const o=this.attributes;for(const S in o){const b=o[S];e.data.attributes[S]=b.toJSON(e.data)}const g={};let C=!1;for(const S in this.morphAttributes){const b=this.morphAttributes[S],$=[];for(let oA=0,rA=b.length;oA<rA;oA++){const IA=b[oA];$.push(IA.toJSON(e.data))}$.length>0&&(g[S]=$,C=!0)}C&&(e.data.morphAttributes=g,e.data.morphTargetsRelative=this.morphTargetsRelative);const c=this.groups;c.length>0&&(e.data.groups=JSON.parse(JSON.stringify(c)));const f=this.boundingSphere;return f!==null&&(e.data.boundingSphere={center:f.center.toArray(),radius:f.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const i={};this.name=e.name;const o=e.index;o!==null&&this.setIndex(o.clone(i));const g=e.attributes;for(const b in g){const $=g[b];this.setAttribute(b,$.clone(i))}const C=e.morphAttributes;for(const b in C){const $=[],oA=C[b];for(let rA=0,IA=oA.length;rA<IA;rA++)$.push(oA[rA].clone(i));this.morphAttributes[b]=$}this.morphTargetsRelative=e.morphTargetsRelative;const c=e.groups;for(let b=0,$=c.length;b<$;b++){const oA=c[b];this.addGroup(oA.start,oA.count,oA.materialIndex)}const f=e.boundingBox;f!==null&&(this.boundingBox=f.clone());const S=e.boundingSphere;return S!==null&&(this.boundingSphere=S.clone()),this.drawRange.start=e.drawRange.start,this.drawRange.count=e.drawRange.count,this.userData=e.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const Es=new Eo,mo=new eg,Se=new Rr,bA=new Qe,ot=new Qe,Wt=new Qe,kt=new Qe,Ht=new Qe,ji=new Qe,ci=new Qe,Yi=new Qe;class Jn extends be{constructor(e=new Rn,i=new Bi){super(),this.isMesh=!0,this.type="Mesh",this.geometry=e,this.material=i,this.updateMorphTargets()}copy(e,i){return super.copy(e,i),e.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=e.morphTargetInfluences.slice()),e.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},e.morphTargetDictionary)),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}updateMorphTargets(){const i=this.geometry.morphAttributes,o=Object.keys(i);if(o.length>0){const g=i[o[0]];if(g!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let C=0,c=g.length;C<c;C++){const f=g[C].name||String(C);this.morphTargetInfluences.push(0),this.morphTargetDictionary[f]=C}}}}getVertexPosition(e,i){const o=this.geometry,g=o.attributes.position,C=o.morphAttributes.position,c=o.morphTargetsRelative;i.fromBufferAttribute(g,e);const f=this.morphTargetInfluences;if(C&&f){ji.set(0,0,0);for(let S=0,b=C.length;S<b;S++){const $=f[S],oA=C[S];$!==0&&(Ht.fromBufferAttribute(oA,e),c?ji.addScaledVector(Ht,$):ji.addScaledVector(Ht.sub(i),$))}i.add(ji)}return i}raycast(e,i){const o=this.geometry,g=this.material,C=this.matrixWorld;g!==void 0&&(o.boundingSphere===null&&o.computeBoundingSphere(),Se.copy(o.boundingSphere),Se.applyMatrix4(C),mo.copy(e.ray).recast(e.near),!(Se.containsPoint(mo.origin)===!1&&(mo.intersectSphere(Se,bA)===null||mo.origin.distanceToSquared(bA)>(e.far-e.near)**2))&&(Es.copy(C).invert(),mo.copy(e.ray).applyMatrix4(Es),!(o.boundingBox!==null&&mo.intersectsBox(o.boundingBox)===!1)&&this._computeIntersections(e,i,mo)))}_computeIntersections(e,i,o){let g;const C=this.geometry,c=this.material,f=C.index,S=C.attributes.position,b=C.attributes.uv,$=C.attributes.uv1,oA=C.attributes.normal,rA=C.groups,IA=C.drawRange;if(f!==null)if(Array.isArray(c))for(let cA=0,JA=rA.length;cA<JA;cA++){const te=rA[cA],Ce=c[te.materialIndex],Me=Math.max(te.start,IA.start),Re=Math.min(f.count,Math.min(te.start+te.count,IA.start+IA.count));for(let Ne=Me,wt=Re;Ne<wt;Ne+=3){const St=f.getX(Ne),Yt=f.getX(Ne+1),xt=f.getX(Ne+2);g=Mn(this,Ce,e,o,b,$,oA,St,Yt,xt),g&&(g.faceIndex=Math.floor(Ne/3),g.face.materialIndex=te.materialIndex,i.push(g))}}else{const cA=Math.max(0,IA.start),JA=Math.min(f.count,IA.start+IA.count);for(let te=cA,Ce=JA;te<Ce;te+=3){const Me=f.getX(te),Re=f.getX(te+1),Ne=f.getX(te+2);g=Mn(this,c,e,o,b,$,oA,Me,Re,Ne),g&&(g.faceIndex=Math.floor(te/3),i.push(g))}}else if(S!==void 0)if(Array.isArray(c))for(let cA=0,JA=rA.length;cA<JA;cA++){const te=rA[cA],Ce=c[te.materialIndex],Me=Math.max(te.start,IA.start),Re=Math.min(S.count,Math.min(te.start+te.count,IA.start+IA.count));for(let Ne=Me,wt=Re;Ne<wt;Ne+=3){const St=Ne,Yt=Ne+1,xt=Ne+2;g=Mn(this,Ce,e,o,b,$,oA,St,Yt,xt),g&&(g.faceIndex=Math.floor(Ne/3),g.face.materialIndex=te.materialIndex,i.push(g))}}else{const cA=Math.max(0,IA.start),JA=Math.min(S.count,IA.start+IA.count);for(let te=cA,Ce=JA;te<Ce;te+=3){const Me=te,Re=te+1,Ne=te+2;g=Mn(this,c,e,o,b,$,oA,Me,Re,Ne),g&&(g.faceIndex=Math.floor(te/3),i.push(g))}}}}function di(P,e,i,o,g,C,c,f){let S;if(e.side===N?S=o.intersectTriangle(c,C,g,!0,f):S=o.intersectTriangle(g,C,c,e.side===R,f),S===null)return null;Yi.copy(f),Yi.applyMatrix4(P.matrixWorld);const b=i.ray.origin.distanceTo(Yi);return b<i.near||b>i.far?null:{distance:b,point:Yi.clone(),object:P}}function Mn(P,e,i,o,g,C,c,f,S,b){P.getVertexPosition(f,ot),P.getVertexPosition(S,Wt),P.getVertexPosition(b,kt);const $=di(P,e,i,o,ot,Wt,kt,ci);if($){const oA=new Qe;Dt.getBarycoord(ci,ot,Wt,kt,oA),g&&($.uv=Dt.getInterpolatedAttribute(g,f,S,b,oA,new ni)),C&&($.uv1=Dt.getInterpolatedAttribute(C,f,S,b,oA,new ni)),c&&($.normal=Dt.getInterpolatedAttribute(c,f,S,b,oA,new Qe),$.normal.dot(o.direction)>0&&$.normal.multiplyScalar(-1));const rA={a:f,b:S,c:b,normal:new Qe,materialIndex:0};Dt.getNormal(ot,Wt,kt,rA.normal),$.face=rA,$.barycoord=oA}return $}class ro extends Rn{constructor(e=1,i=1,o=1,g=1,C=1,c=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:i,depth:o,widthSegments:g,heightSegments:C,depthSegments:c};const f=this;g=Math.floor(g),C=Math.floor(C),c=Math.floor(c);const S=[],b=[],$=[],oA=[];let rA=0,IA=0;cA("z","y","x",-1,-1,o,i,e,c,C,0),cA("z","y","x",1,-1,o,i,-e,c,C,1),cA("x","z","y",1,1,e,o,i,g,c,2),cA("x","z","y",1,-1,e,o,-i,g,c,3),cA("x","y","z",1,-1,e,i,o,g,C,4),cA("x","y","z",-1,-1,e,i,-o,g,C,5),this.setIndex(S),this.setAttribute("position",new he(b,3)),this.setAttribute("normal",new he($,3)),this.setAttribute("uv",new he(oA,2));function cA(JA,te,Ce,Me,Re,Ne,wt,St,Yt,xt,Li){const Wi=Ne/Yt,hn=wt/xt,qo=Ne/2,Qr=wt/2,ur=St/2,cs=Yt+1,Ms=xt+1;let ua=0,_a=0;const Ks=new Qe;for(let tg=0;tg<Ms;tg++){const Vs=tg*hn-Qr;for(let nI=0;nI<cs;nI++){const vC=nI*Wi-qo;Ks[JA]=vC*Me,Ks[te]=Vs*Re,Ks[Ce]=ur,b.push(Ks.x,Ks.y,Ks.z),Ks[JA]=0,Ks[te]=0,Ks[Ce]=St>0?1:-1,$.push(Ks.x,Ks.y,Ks.z),oA.push(nI/Yt),oA.push(1-tg/xt),ua+=1}}for(let tg=0;tg<xt;tg++)for(let Vs=0;Vs<Yt;Vs++){const nI=rA+Vs+cs*tg,vC=rA+Vs+cs*(tg+1),NC=rA+(Vs+1)+cs*(tg+1),NE=rA+(Vs+1)+cs*tg;S.push(nI,vC,NE),S.push(vC,NC,NE),_a+=6}f.addGroup(IA,_a,Li),IA+=_a,rA+=ua}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new ro(e.width,e.height,e.depth,e.widthSegments,e.heightSegments,e.depthSegments)}}function ke(P){const e={};for(const i in P){e[i]={};for(const o in P[i]){const g=P[i][o];g&&(g.isColor||g.isMatrix3||g.isMatrix4||g.isVector2||g.isVector3||g.isVector4||g.isTexture||g.isQuaternion)?g.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),e[i][o]=null):e[i][o]=g.clone():Array.isArray(g)?e[i][o]=g.slice():e[i][o]=g}}return e}function Tt(P){const e={};for(let i=0;i<P.length;i++){const o=ke(P[i]);for(const g in o)e[g]=o[g]}return e}function ti(P){const e=[];for(let i=0;i<P.length;i++)e.push(P[i].clone());return e}function bi(P){const e=P.getRenderTarget();return e===null?P.outputColorSpace:e.isXRRenderTarget===!0?e.texture.colorSpace:zo.workingColorSpace}const Ri={clone:ke,merge:Tt};var $i=`void main() {
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}`,zn=`void main() {
gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
}`;class Ni extends Jt{constructor(e){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=$i,this.fragmentShader=zn,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,e!==void 0&&this.setValues(e)}copy(e){return super.copy(e),this.fragmentShader=e.fragmentShader,this.vertexShader=e.vertexShader,this.uniforms=ke(e.uniforms),this.uniformsGroups=ti(e.uniformsGroups),this.defines=Object.assign({},e.defines),this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.fog=e.fog,this.lights=e.lights,this.clipping=e.clipping,this.extensions=Object.assign({},e.extensions),this.glslVersion=e.glslVersion,this}toJSON(e){const i=super.toJSON(e);i.glslVersion=this.glslVersion,i.uniforms={};for(const g in this.uniforms){const c=this.uniforms[g].value;c&&c.isTexture?i.uniforms[g]={type:"t",value:c.toJSON(e).uuid}:c&&c.isColor?i.uniforms[g]={type:"c",value:c.getHex()}:c&&c.isVector2?i.uniforms[g]={type:"v2",value:c.toArray()}:c&&c.isVector3?i.uniforms[g]={type:"v3",value:c.toArray()}:c&&c.isVector4?i.uniforms[g]={type:"v4",value:c.toArray()}:c&&c.isMatrix3?i.uniforms[g]={type:"m3",value:c.toArray()}:c&&c.isMatrix4?i.uniforms[g]={type:"m4",value:c.toArray()}:i.uniforms[g]={value:c}}Object.keys(this.defines).length>0&&(i.defines=this.defines),i.vertexShader=this.vertexShader,i.fragmentShader=this.fragmentShader,i.lights=this.lights,i.clipping=this.clipping;const o={};for(const g in this.extensions)this.extensions[g]===!0&&(o[g]=!0);return Object.keys(o).length>0&&(i.extensions=o),i}}class Ui extends be{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Eo,this.projectionMatrix=new Eo,this.projectionMatrixInverse=new Eo,this.coordinateSystem=ss}copy(e,i){return super.copy(e,i),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,i){super.updateWorldMatrix(e,i),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const on=new Qe,or=new ni,zr=new ni;class ks extends Ui{constructor(e=50,i=1,o=.1,g=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=o,this.far=g,this.focus=10,this.aspect=i,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,i){return super.copy(e,i),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=e.view===null?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){const i=.5*this.getFilmHeight()/e;this.fov=Ga*2*Math.atan(i),this.updateProjectionMatrix()}getFocalLength(){const e=Math.tan($g*.5*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return Ga*2*Math.atan(Math.tan($g*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,i,o){on.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),i.set(on.x,on.y).multiplyScalar(-e/on.z),on.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),o.set(on.x,on.y).multiplyScalar(-e/on.z)}getViewSize(e,i){return this.getViewBounds(e,or,zr),i.subVectors(zr,or)}setViewOffset(e,i,o,g,C,c){this.aspect=e/i,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=i,this.view.offsetX=o,this.view.offsetY=g,this.view.width=C,this.view.height=c,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=this.near;let i=e*Math.tan($g*.5*this.fov)/this.zoom,o=2*i,g=this.aspect*o,C=-.5*g;const c=this.view;if(this.view!==null&&this.view.enabled){const S=c.fullWidth,b=c.fullHeight;C+=c.offsetX*g/S,i-=c.offsetY*o/b,g*=c.width/S,o*=c.height/b}const f=this.filmOffset;f!==0&&(C+=e*f/this.getFilmWidth()),this.projectionMatrix.makePerspective(C,C+g,i,i-o,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const i=super.toJSON(e);return i.object.fov=this.fov,i.object.zoom=this.zoom,i.object.near=this.near,i.object.far=this.far,i.object.focus=this.focus,i.object.aspect=this.aspect,this.view!==null&&(i.object.view=Object.assign({},this.view)),i.object.filmGauge=this.filmGauge,i.object.filmOffset=this.filmOffset,i}}const Xa=-90,xa=1;class kC extends be{constructor(e,i,o){super(),this.type="CubeCamera",this.renderTarget=o,this.coordinateSystem=null,this.activeMipmapLevel=0;const g=new ks(Xa,xa,e,i);g.layers=this.layers,this.add(g);const C=new ks(Xa,xa,e,i);C.layers=this.layers,this.add(C);const c=new ks(Xa,xa,e,i);c.layers=this.layers,this.add(c);const f=new ks(Xa,xa,e,i);f.layers=this.layers,this.add(f);const S=new ks(Xa,xa,e,i);S.layers=this.layers,this.add(S);const b=new ks(Xa,xa,e,i);b.layers=this.layers,this.add(b)}updateCoordinateSystem(){const e=this.coordinateSystem,i=this.children.concat(),[o,g,C,c,f,S]=i;for(const b of i)this.remove(b);if(e===ss)o.up.set(0,1,0),o.lookAt(1,0,0),g.up.set(0,1,0),g.lookAt(-1,0,0),C.up.set(0,0,-1),C.lookAt(0,1,0),c.up.set(0,0,1),c.lookAt(0,-1,0),f.up.set(0,1,0),f.lookAt(0,0,1),S.up.set(0,1,0),S.lookAt(0,0,-1);else if(e===Ns)o.up.set(0,-1,0),o.lookAt(-1,0,0),g.up.set(0,-1,0),g.lookAt(1,0,0),C.up.set(0,0,1),C.lookAt(0,1,0),c.up.set(0,0,-1),c.lookAt(0,-1,0),f.up.set(0,-1,0),f.lookAt(0,0,1),S.up.set(0,-1,0),S.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(const b of i)this.add(b),b.updateMatrixWorld()}update(e,i){this.parent===null&&this.updateMatrixWorld();const{renderTarget:o,activeMipmapLevel:g}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());const[C,c,f,S,b,$]=this.children,oA=e.getRenderTarget(),rA=e.getActiveCubeFace(),IA=e.getActiveMipmapLevel(),cA=e.xr.enabled;e.xr.enabled=!1;const JA=o.texture.generateMipmaps;o.texture.generateMipmaps=!1,e.setRenderTarget(o,0,g),e.render(i,C),e.setRenderTarget(o,1,g),e.render(i,c),e.setRenderTarget(o,2,g),e.render(i,f),e.setRenderTarget(o,3,g),e.render(i,S),e.setRenderTarget(o,4,g),e.render(i,b),o.texture.generateMipmaps=JA,e.setRenderTarget(o,5,g),e.render(i,$),e.setRenderTarget(oA,rA,IA),e.xr.enabled=cA,o.texture.needsPMREMUpdate=!0}}class Ya extends To{constructor(e,i,o,g,C,c,f,S,b,$){e=e!==void 0?e:[],i=i!==void 0?i:aA,super(e,i,o,g,C,c,f,S,b,$),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class EI extends fi{constructor(e=1,i={}){super(e,e,i),this.isWebGLCubeRenderTarget=!0;const o={width:e,height:e,depth:1},g=[o,o,o,o,o,o];this.texture=new Ya(g,i.mapping,i.wrapS,i.wrapT,i.magFilter,i.minFilter,i.format,i.type,i.anisotropy,i.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=i.generateMipmaps!==void 0?i.generateMipmaps:!1,this.texture.minFilter=i.minFilter!==void 0?i.minFilter:kn}fromEquirectangularTexture(e,i){this.texture.type=i.type,this.texture.colorSpace=i.colorSpace,this.texture.generateMipmaps=i.generateMipmaps,this.texture.minFilter=i.minFilter,this.texture.magFilter=i.magFilter;const o={uniforms:{tEquirect:{value:null}},vertexShader:`
varying vec3 vWorldDirection;
vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
}
void main() {
vWorldDirection = transformDirection( position, modelMatrix );
#include <begin_vertex>
#include <project_vertex>
}
`,fragmentShader:`
uniform sampler2D tEquirect;
varying vec3 vWorldDirection;
#include <common>
void main() {
vec3 direction = normalize( vWorldDirection );
vec2 sampleUV = equirectUv( direction );
gl_FragColor = texture2D( tEquirect, sampleUV );
}
`},g=new ro(5,5,5),C=new Ni({name:"CubemapFromEquirect",uniforms:ke(o.uniforms),vertexShader:o.vertexShader,fragmentShader:o.fragmentShader,side:N,blending:G});C.uniforms.tEquirect.value=i;const c=new Jn(g,C),f=i.minFilter;return i.minFilter===is&&(i.minFilter=kn),new kC(1,10,this).update(e,c),i.minFilter=f,c.geometry.dispose(),c.material.dispose(),this}clear(e,i,o,g){const C=e.getRenderTarget();for(let c=0;c<6;c++)e.setRenderTarget(this,c),e.clear(i,o,g);e.setRenderTarget(C)}}class QI extends be{constructor(){super(),this.isGroup=!0,this.type="Group"}}const $B={type:"move"};class _C{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new QI,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new QI,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new Qe,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new Qe),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new QI,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new Qe,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new Qe),this._grip}dispatchEvent(e){return this._targetRay!==null&&this._targetRay.dispatchEvent(e),this._grip!==null&&this._grip.dispatchEvent(e),this._hand!==null&&this._hand.dispatchEvent(e),this}connect(e){if(e&&e.hand){const i=this._hand;if(i)for(const o of e.hand.values())this._getHandJoint(i,o)}return this.dispatchEvent({type:"connected",data:e}),this}disconnect(e){return this.dispatchEvent({type:"disconnected",data:e}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(e,i,o){let g=null,C=null,c=null;const f=this._targetRay,S=this._grip,b=this._hand;if(e&&i.session.visibilityState!=="visible-blurred"){if(b&&e.hand){c=!0;for(const JA of e.hand.values()){const te=i.getJointPose(JA,o),Ce=this._getHandJoint(b,JA);te!==null&&(Ce.matrix.fromArray(te.transform.matrix),Ce.matrix.decompose(Ce.position,Ce.rotation,Ce.scale),Ce.matrixWorldNeedsUpdate=!0,Ce.jointRadius=te.radius),Ce.visible=te!==null}const $=b.joints["index-finger-tip"],oA=b.joints["thumb-tip"],rA=$.position.distanceTo(oA.position),IA=.02,cA=.005;b.inputState.pinching&&rA>IA+cA?(b.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!b.inputState.pinching&&rA<=IA-cA&&(b.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else S!==null&&e.gripSpace&&(C=i.getPose(e.gripSpace,o),C!==null&&(S.matrix.fromArray(C.transform.matrix),S.matrix.decompose(S.position,S.rotation,S.scale),S.matrixWorldNeedsUpdate=!0,C.linearVelocity?(S.hasLinearVelocity=!0,S.linearVelocity.copy(C.linearVelocity)):S.hasLinearVelocity=!1,C.angularVelocity?(S.hasAngularVelocity=!0,S.angularVelocity.copy(C.angularVelocity)):S.hasAngularVelocity=!1));f!==null&&(g=i.getPose(e.targetRaySpace,o),g===null&&C!==null&&(g=C),g!==null&&(f.matrix.fromArray(g.transform.matrix),f.matrix.decompose(f.position,f.rotation,f.scale),f.matrixWorldNeedsUpdate=!0,g.linearVelocity?(f.hasLinearVelocity=!0,f.linearVelocity.copy(g.linearVelocity)):f.hasLinearVelocity=!1,g.angularVelocity?(f.hasAngularVelocity=!0,f.angularVelocity.copy(g.angularVelocity)):f.hasAngularVelocity=!1,this.dispatchEvent($B)))}return f!==null&&(f.visible=g!==null),S!==null&&(S.visible=C!==null),b!==null&&(b.visible=c!==null),this}_getHandJoint(e,i){if(e.joints[i.jointName]===void 0){const o=new QI;o.matrixAutoUpdate=!1,o.visible=!1,e.joints[i.jointName]=o,e.add(o)}return e.joints[i.jointName]}}class sC{constructor(e,i=25e-5){this.isFogExp2=!0,this.name="",this.color=new ht(e),this.density=i}clone(){return new sC(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class FI{constructor(e,i=1,o=1e3){this.isFog=!0,this.name="",this.color=new ht(e),this.near=i,this.far=o}clone(){return new FI(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class $C extends be{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new w,this.environmentIntensity=1,this.environmentRotation=new w,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,i){return super.copy(e,i),e.background!==null&&(this.background=e.background.clone()),e.environment!==null&&(this.environment=e.environment.clone()),e.fog!==null&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),e.overrideMaterial!==null&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){const i=super.toJSON(e);return this.fog!==null&&(i.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(i.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(i.object.backgroundIntensity=this.backgroundIntensity),i.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(i.object.environmentIntensity=this.environmentIntensity),i.object.environmentRotation=this.environmentRotation.toArray(),i}}class gC{constructor(e,i){this.isInterleavedBuffer=!0,this.array=e,this.stride=i,this.count=e!==void 0?e.length/i:0,this.usage=Fs,this.updateRanges=[],this.version=0,this.uuid=gg()}onUploadCallback(){}set needsUpdate(e){e===!0&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,i){this.updateRanges.push({start:e,count:i})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,i,o){e*=this.stride,o*=i.stride;for(let g=0,C=this.stride;g<C;g++)this.array[e+g]=i.array[o+g];return this}set(e,i=0){return this.array.set(e,i),this}clone(e){e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=gg()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);const i=new this.array.constructor(e.arrayBuffers[this.array.buffer._uuid]),o=new this.constructor(i,this.stride);return o.setUsage(this.usage),o}onUpload(e){return this.onUploadCallback=e,this}toJSON(e){return e.arrayBuffers===void 0&&(e.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=gg()),e.arrayBuffers[this.array.buffer._uuid]===void 0&&(e.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}}const kg=new Qe;class vI{constructor(e,i,o,g=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=e,this.itemSize=i,this.offset=o,this.normalized=g}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(e){this.data.needsUpdate=e}applyMatrix4(e){for(let i=0,o=this.data.count;i<o;i++)kg.fromBufferAttribute(this,i),kg.applyMatrix4(e),this.setXYZ(i,kg.x,kg.y,kg.z);return this}applyNormalMatrix(e){for(let i=0,o=this.count;i<o;i++)kg.fromBufferAttribute(this,i),kg.applyNormalMatrix(e),this.setXYZ(i,kg.x,kg.y,kg.z);return this}transformDirection(e){for(let i=0,o=this.count;i<o;i++)kg.fromBufferAttribute(this,i),kg.transformDirection(e),this.setXYZ(i,kg.x,kg.y,kg.z);return this}getComponent(e,i){let o=this.array[e*this.data.stride+this.offset+i];return this.normalized&&(o=ms(o,this.array)),o}setComponent(e,i,o){return this.normalized&&(o=eo(o,this.array)),this.data.array[e*this.data.stride+this.offset+i]=o,this}setX(e,i){return this.normalized&&(i=eo(i,this.array)),this.data.array[e*this.data.stride+this.offset]=i,this}setY(e,i){return this.normalized&&(i=eo(i,this.array)),this.data.array[e*this.data.stride+this.offset+1]=i,this}setZ(e,i){return this.normalized&&(i=eo(i,this.array)),this.data.array[e*this.data.stride+this.offset+2]=i,this}setW(e,i){return this.normalized&&(i=eo(i,this.array)),this.data.array[e*this.data.stride+this.offset+3]=i,this}getX(e){let i=this.data.array[e*this.data.stride+this.offset];return this.normalized&&(i=ms(i,this.array)),i}getY(e){let i=this.data.array[e*this.data.stride+this.offset+1];return this.normalized&&(i=ms(i,this.array)),i}getZ(e){let i=this.data.array[e*this.data.stride+this.offset+2];return this.normalized&&(i=ms(i,this.array)),i}getW(e){let i=this.data.array[e*this.data.stride+this.offset+3];return this.normalized&&(i=ms(i,this.array)),i}setXY(e,i,o){return e=e*this.data.stride+this.offset,this.normalized&&(i=eo(i,this.array),o=eo(o,this.array)),this.data.array[e+0]=i,this.data.array[e+1]=o,this}setXYZ(e,i,o,g){return e=e*this.data.stride+this.offset,this.normalized&&(i=eo(i,this.array),o=eo(o,this.array),g=eo(g,this.array)),this.data.array[e+0]=i,this.data.array[e+1]=o,this.data.array[e+2]=g,this}setXYZW(e,i,o,g,C){return e=e*this.data.stride+this.offset,this.normalized&&(i=eo(i,this.array),o=eo(o,this.array),g=eo(g,this.array),C=eo(C,this.array)),this.data.array[e+0]=i,this.data.array[e+1]=o,this.data.array[e+2]=g,this.data.array[e+3]=C,this}clone(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");const i=[];for(let o=0;o<this.count;o++){const g=o*this.data.stride+this.offset;for(let C=0;C<this.itemSize;C++)i.push(this.data.array[g+C])}return new an(new this.array.constructor(i),this.itemSize,this.normalized)}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.clone(e)),new vI(e.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(e){if(e===void 0){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");const i=[];for(let o=0;o<this.count;o++){const g=o*this.data.stride+this.offset;for(let C=0;C<this.itemSize;C++)i.push(this.data.array[g+C])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:i,normalized:this.normalized}}else return e.interleavedBuffers===void 0&&(e.interleavedBuffers={}),e.interleavedBuffers[this.data.uuid]===void 0&&(e.interleavedBuffers[this.data.uuid]=this.data.toJSON(e)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}}class AB extends Jt{constructor(e){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new ht(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.rotation=e.rotation,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}let ZI;const aC=new Qe,jI=new Qe,WA=new Qe,qe=new ni,It=new ni,lt=new Eo,ze=new Qe,Ii=new Qe,Ki=new Qe,rn=new ni,gn=new ni,ho=new ni;class uo extends be{constructor(e=new AB){if(super(),this.isSprite=!0,this.type="Sprite",ZI===void 0){ZI=new Rn;const i=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),o=new gC(i,5);ZI.setIndex([0,1,2,0,2,3]),ZI.setAttribute("position",new vI(o,3,0,!1)),ZI.setAttribute("uv",new vI(o,2,3,!1))}this.geometry=ZI,this.material=e,this.center=new ni(.5,.5)}raycast(e,i){e.camera===null&&console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),jI.setFromMatrixScale(this.matrixWorld),lt.copy(e.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(e.camera.matrixWorldInverse,this.matrixWorld),WA.setFromMatrixPosition(this.modelViewMatrix),e.camera.isPerspectiveCamera&&this.material.sizeAttenuation===!1&&jI.multiplyScalar(-WA.z);const o=this.material.rotation;let g,C;o!==0&&(C=Math.cos(o),g=Math.sin(o));const c=this.center;Tn(ze.set(-.5,-.5,0),WA,c,jI,g,C),Tn(Ii.set(.5,-.5,0),WA,c,jI,g,C),Tn(Ki.set(.5,.5,0),WA,c,jI,g,C),rn.set(0,0),gn.set(1,0),ho.set(1,1);let f=e.ray.intersectTriangle(ze,Ii,Ki,!1,aC);if(f===null&&(Tn(Ii.set(-.5,.5,0),WA,c,jI,g,C),gn.set(0,1),f=e.ray.intersectTriangle(ze,Ki,Ii,!1,aC),f===null))return;const S=e.ray.origin.distanceTo(aC);S<e.near||S>e.far||i.push({distance:S,point:aC.clone(),uv:Dt.getInterpolation(aC,ze,Ii,Ki,rn,gn,ho,new ni),face:null,object:this})}copy(e,i){return super.copy(e,i),e.center!==void 0&&this.center.copy(e.center),this.material=e.material,this}}function Tn(P,e,i,o,g,C){qe.subVectors(P,i).addScalar(.5).multiply(o),g!==void 0?(It.x=C*qe.x-g*qe.y,It.y=g*qe.x+C*qe.y):It.copy(qe),P.copy(e),P.x+=It.x,P.y+=It.y,P.applyMatrix4(lt)}const Vo=new Qe,Dr=new Qe;class _s extends be{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);const i=e.levels;for(let o=0,g=i.length;o<g;o++){const C=i[o];this.addLevel(C.object.clone(),C.distance,C.hysteresis)}return this.autoUpdate=e.autoUpdate,this}addLevel(e,i=0,o=0){i=Math.abs(i);const g=this.levels;let C;for(C=0;C<g.length&&!(i<g[C].distance);C++);return g.splice(C,0,{distance:i,hysteresis:o,object:e}),this.add(e),this}removeLevel(e){const i=this.levels;for(let o=0;o<i.length;o++)if(i[o].distance===e){const g=i.splice(o,1);return this.remove(g[0].object),!0}return!1}getCurrentLevel(){return this._currentLevel}getObjectForDistance(e){const i=this.levels;if(i.length>0){let o,g;for(o=1,g=i.length;o<g;o++){let C=i[o].distance;if(i[o].object.visible&&(C-=C*i[o].hysteresis),e<C)break}return i[o-1].object}return null}raycast(e,i){if(this.levels.length>0){Vo.setFromMatrixPosition(this.matrixWorld);const g=e.ray.origin.distanceTo(Vo);this.getObjectForDistance(g).raycast(e,i)}}update(e){const i=this.levels;if(i.length>1){Vo.setFromMatrixPosition(e.matrixWorld),Dr.setFromMatrixPosition(this.matrixWorld);const o=Vo.distanceTo(Dr)/e.zoom;i[0].object.visible=!0;let g,C;for(g=1,C=i.length;g<C;g++){let c=i[g].distance;if(i[g].object.visible&&(c-=c*i[g].hysteresis),o>=c)i[g-1].object.visible=!1,i[g].object.visible=!0;else break}for(this._currentLevel=g-1;g<C;g++)i[g].object.visible=!1}}toJSON(e){const i=super.toJSON(e);this.autoUpdate===!1&&(i.object.autoUpdate=!1),i.object.levels=[];const o=this.levels;for(let g=0,C=o.length;g<C;g++){const c=o[g];i.object.levels.push({object:c.object.uuid,distance:c.distance,hysteresis:c.hysteresis})}return i}}const ws=new Qe,rr=new ir,wg=new ir,Hn=new Qe,XI=new Eo,sr=new Qe,_g=new Rr,ba=new Eo,za=new eg;class NI extends Jn{constructor(e,i){super(e,i),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode=ZA,this.bindMatrix=new Eo,this.bindMatrixInverse=new Eo,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){const e=this.geometry;this.boundingBox===null&&(this.boundingBox=new Xr),this.boundingBox.makeEmpty();const i=e.getAttribute("position");for(let o=0;o<i.count;o++)this.getVertexPosition(o,sr),this.boundingBox.expandByPoint(sr)}computeBoundingSphere(){const e=this.geometry;this.boundingSphere===null&&(this.boundingSphere=new Rr),this.boundingSphere.makeEmpty();const i=e.getAttribute("position");for(let o=0;o<i.count;o++)this.getVertexPosition(o,sr),this.boundingSphere.expandByPoint(sr)}copy(e,i){return super.copy(e,i),this.bindMode=e.bindMode,this.bindMatrix.copy(e.bindMatrix),this.bindMatrixInverse.copy(e.bindMatrixInverse),this.skeleton=e.skeleton,e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}raycast(e,i){const o=this.material,g=this.matrixWorld;o!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),_g.copy(this.boundingSphere),_g.applyMatrix4(g),e.ray.intersectsSphere(_g)!==!1&&(ba.copy(g).invert(),za.copy(e.ray).applyMatrix4(ba),!(this.boundingBox!==null&&za.intersectsBox(this.boundingBox)===!1)&&this._computeIntersections(e,i,za)))}getVertexPosition(e,i){return super.getVertexPosition(e,i),this.applyBoneTransform(e,i),i}bind(e,i){this.skeleton=e,i===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),i=this.matrixWorld),this.bindMatrix.copy(i),this.bindMatrixInverse.copy(i).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const e=new ir,i=this.geometry.attributes.skinWeight;for(let o=0,g=i.count;o<g;o++){e.fromBufferAttribute(i,o);const C=1/e.manhattanLength();C!==1/0?e.multiplyScalar(C):e.set(1,0,0,0),i.setXYZW(o,e.x,e.y,e.z,e.w)}}updateMatrixWorld(e){super.updateMatrixWorld(e),this.bindMode===ZA?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode===jA?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)}applyBoneTransform(e,i){const o=this.skeleton,g=this.geometry;rr.fromBufferAttribute(g.attributes.skinIndex,e),wg.fromBufferAttribute(g.attributes.skinWeight,e),ws.copy(i).applyMatrix4(this.bindMatrix),i.set(0,0,0);for(let C=0;C<4;C++){const c=wg.getComponent(C);if(c!==0){const f=rr.getComponent(C);XI.multiplyMatrices(o.bones[f].matrixWorld,o.boneInverses[f]),i.addScaledVector(Hn.copy(ws).applyMatrix4(XI),c)}}return i.applyMatrix4(this.bindMatrixInverse)}}class vr extends be{constructor(){super(),this.isBone=!0,this.type="Bone"}}class es extends To{constructor(e=null,i=1,o=1,g,C,c,f,S,b=Mi,$=Mi,oA,rA){super(null,c,f,S,b,$,g,C,oA,rA),this.isDataTexture=!0,this.image={data:e,width:i,height:o},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}const $a=new Eo,Ps=new Eo;class AI{constructor(e=[],i=[]){this.uuid=gg(),this.bones=e.slice(0),this.boneInverses=i,this.boneMatrices=null,this.boneTexture=null,this.init()}init(){const e=this.bones,i=this.boneInverses;if(this.boneMatrices=new Float32Array(e.length*16),i.length===0)this.calculateInverses();else if(e.length!==i.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(let o=0,g=this.bones.length;o<g;o++)this.boneInverses.push(new Eo)}}calculateInverses(){this.boneInverses.length=0;for(let e=0,i=this.bones.length;e<i;e++){const o=new Eo;this.bones[e]&&o.copy(this.bones[e].matrixWorld).invert(),this.boneInverses.push(o)}}pose(){for(let e=0,i=this.bones.length;e<i;e++){const o=this.bones[e];o&&o.matrixWorld.copy(this.boneInverses[e]).invert()}for(let e=0,i=this.bones.length;e<i;e++){const o=this.bones[e];o&&(o.parent&&o.parent.isBone?(o.matrix.copy(o.parent.matrixWorld).invert(),o.matrix.multiply(o.matrixWorld)):o.matrix.copy(o.matrixWorld),o.matrix.decompose(o.position,o.quaternion,o.scale))}}update(){const e=this.bones,i=this.boneInverses,o=this.boneMatrices,g=this.boneTexture;for(let C=0,c=e.length;C<c;C++){const f=e[C]?e[C].matrixWorld:Ps;$a.multiplyMatrices(f,i[C]),$a.toArray(o,C*16)}g!==null&&(g.needsUpdate=!0)}clone(){return new AI(this.bones,this.boneInverses)}computeBoneTexture(){let e=Math.sqrt(this.bones.length*4);e=Math.ceil(e/4)*4,e=Math.max(e,4);const i=new Float32Array(e*e*4);i.set(this.boneMatrices);const o=new es(i,e,e,me,Kg);return o.needsUpdate=!0,this.boneMatrices=i,this.boneTexture=o,this}getBoneByName(e){for(let i=0,o=this.bones.length;i<o;i++){const g=this.bones[i];if(g.name===e)return g}}dispose(){this.boneTexture!==null&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(e,i){this.uuid=e.uuid;for(let o=0,g=e.bones.length;o<g;o++){const C=e.bones[o];let c=i[C];c===void 0&&(console.warn("THREE.Skeleton: No bone found with UUID:",C),c=new vr),this.bones.push(c),this.boneInverses.push(new Eo().fromArray(e.boneInverses[o]))}return this.init(),this}toJSON(){const e={metadata:{version:4.6,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]};e.uuid=this.uuid;const i=this.bones,o=this.boneInverses;for(let g=0,C=i.length;g<C;g++){const c=i[g];e.bones.push(c.uuid);const f=o[g];e.boneInverses.push(f.toArray())}return e}}class ka extends an{constructor(e,i,o,g=1){super(e,i,o),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=g}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}toJSON(){const e=super.toJSON();return e.meshPerAttribute=this.meshPerAttribute,e.isInstancedBufferAttribute=!0,e}}const UI=new Eo,WQ=new Eo,AE=[],VQ=new Xr,Zh=new Eo,eB=new Jn,tB=new Rr;class ZQ extends Jn{constructor(e,i,o){super(e,i),this.isInstancedMesh=!0,this.instanceMatrix=new ka(new Float32Array(o*16),16),this.instanceColor=null,this.morphTexture=null,this.count=o,this.boundingBox=null,this.boundingSphere=null;for(let g=0;g<o;g++)this.setMatrixAt(g,Zh)}computeBoundingBox(){const e=this.geometry,i=this.count;this.boundingBox===null&&(this.boundingBox=new Xr),e.boundingBox===null&&e.computeBoundingBox(),this.boundingBox.makeEmpty();for(let o=0;o<i;o++)this.getMatrixAt(o,UI),VQ.copy(e.boundingBox).applyMatrix4(UI),this.boundingBox.union(VQ)}computeBoundingSphere(){const e=this.geometry,i=this.count;this.boundingSphere===null&&(this.boundingSphere=new Rr),e.boundingSphere===null&&e.computeBoundingSphere(),this.boundingSphere.makeEmpty();for(let o=0;o<i;o++)this.getMatrixAt(o,UI),tB.copy(e.boundingSphere).applyMatrix4(UI),this.boundingSphere.union(tB)}copy(e,i){return super.copy(e,i),this.instanceMatrix.copy(e.instanceMatrix),e.morphTexture!==null&&(this.morphTexture=e.morphTexture.clone()),e.instanceColor!==null&&(this.instanceColor=e.instanceColor.clone()),this.count=e.count,e.boundingBox!==null&&(this.boundingBox=e.boundingBox.clone()),e.boundingSphere!==null&&(this.boundingSphere=e.boundingSphere.clone()),this}getColorAt(e,i){i.fromArray(this.instanceColor.array,e*3)}getMatrixAt(e,i){i.fromArray(this.instanceMatrix.array,e*16)}getMorphAt(e,i){const o=i.morphTargetInfluences,g=this.morphTexture.source.data.data,C=o.length+1,c=e*C+1;for(let f=0;f<o.length;f++)o[f]=g[c+f]}raycast(e,i){const o=this.matrixWorld,g=this.count;if(eB.geometry=this.geometry,eB.material=this.material,eB.material!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),tB.copy(this.boundingSphere),tB.applyMatrix4(o),e.ray.intersectsSphere(tB)!==!1))for(let C=0;C<g;C++){this.getMatrixAt(C,UI),WQ.multiplyMatrices(o,UI),eB.matrixWorld=WQ,eB.raycast(e,AE);for(let c=0,f=AE.length;c<f;c++){const S=AE[c];S.instanceId=C,S.object=this,i.push(S)}AE.length=0}}setColorAt(e,i){this.instanceColor===null&&(this.instanceColor=new ka(new Float32Array(this.instanceMatrix.count*3).fill(1),3)),i.toArray(this.instanceColor.array,e*3)}setMatrixAt(e,i){i.toArray(this.instanceMatrix.array,e*16)}setMorphAt(e,i){const o=i.morphTargetInfluences,g=o.length+1;this.morphTexture===null&&(this.morphTexture=new es(new Float32Array(g*this.count),g,this.count,ai,Kg));const C=this.morphTexture.source.data.data;let c=0;for(let b=0;b<o.length;b++)c+=o[b];const f=this.geometry.morphTargetsRelative?1:1-c,S=g*e;C[S]=f,C.set(o,S+1)}updateMorphTargets(){}dispose(){return this.dispatchEvent({type:"dispose"}),this.morphTexture!==null&&(this.morphTexture.dispose(),this.morphTexture=null),this}}const kE=new Qe,jh=new Qe,Xh=new ds;class IC{constructor(e=new Qe(1,0,0),i=0){this.isPlane=!0,this.normal=e,this.constant=i}set(e,i){return this.normal.copy(e),this.constant=i,this}setComponents(e,i,o,g){return this.normal.set(e,i,o),this.constant=g,this}setFromNormalAndCoplanarPoint(e,i){return this.normal.copy(e),this.constant=-i.dot(this.normal),this}setFromCoplanarPoints(e,i,o){const g=kE.subVectors(o,i).cross(jh.subVectors(e,i)).normalize();return this.setFromNormalAndCoplanarPoint(g,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){const e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,i){return i.copy(e).addScaledVector(this.normal,-this.distanceToPoint(e))}intersectLine(e,i){const o=e.delta(kE),g=this.normal.dot(o);if(g===0)return this.distanceToPoint(e.start)===0?i.copy(e.start):null;const C=-(e.start.dot(this.normal)+this.constant)/g;return C<0||C>1?null:i.copy(e.start).addScaledVector(o,C)}intersectsLine(e){const i=this.distanceToPoint(e.start),o=this.distanceToPoint(e.end);return i<0&&o>0||o<0&&i>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,i){const o=i||Xh.getNormalMatrix(e),g=this.coplanarPoint(kE).applyMatrix4(e),C=this.normal.applyMatrix3(o).normalize();return this.constant=-g.dot(C),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}const CC=new Rr,eE=new Qe;class _E{constructor(e=new IC,i=new IC,o=new IC,g=new IC,C=new IC,c=new IC){this.planes=[e,i,o,g,C,c]}set(e,i,o,g,C,c){const f=this.planes;return f[0].copy(e),f[1].copy(i),f[2].copy(o),f[3].copy(g),f[4].copy(C),f[5].copy(c),this}copy(e){const i=this.planes;for(let o=0;o<6;o++)i[o].copy(e.planes[o]);return this}setFromProjectionMatrix(e,i=ss){const o=this.planes,g=e.elements,C=g[0],c=g[1],f=g[2],S=g[3],b=g[4],$=g[5],oA=g[6],rA=g[7],IA=g[8],cA=g[9],JA=g[10],te=g[11],Ce=g[12],Me=g[13],Re=g[14],Ne=g[15];if(o[0].setComponents(S-C,rA-b,te-IA,Ne-Ce).normalize(),o[1].setComponents(S+C,rA+b,te+IA,Ne+Ce).normalize(),o[2].setComponents(S+c,rA+$,te+cA,Ne+Me).normalize(),o[3].setComponents(S-c,rA-$,te-cA,Ne-Me).normalize(),o[4].setComponents(S-f,rA-oA,te-JA,Ne-Re).normalize(),i===ss)o[5].setComponents(S+f,rA+oA,te+JA,Ne+Re).normalize();else if(i===Ns)o[5].setComponents(f,oA,JA,Re).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+i);return this}intersectsObject(e){if(e.boundingSphere!==void 0)e.boundingSphere===null&&e.computeBoundingSphere(),CC.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{const i=e.geometry;i.boundingSphere===null&&i.computeBoundingSphere(),CC.copy(i.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(CC)}intersectsSprite(e){return CC.center.set(0,0,0),CC.radius=.7071067811865476,CC.applyMatrix4(e.matrixWorld),this.intersectsSphere(CC)}intersectsSphere(e){const i=this.planes,o=e.center,g=-e.radius;for(let C=0;C<6;C++)if(i[C].distanceToPoint(o)<g)return!1;return!0}intersectsBox(e){const i=this.planes;for(let o=0;o<6;o++){const g=i[o];if(eE.x=g.normal.x>0?e.max.x:e.min.x,eE.y=g.normal.y>0?e.max.y:e.min.y,eE.z=g.normal.z>0?e.max.z:e.min.z,g.distanceToPoint(eE)<0)return!1}return!0}containsPoint(e){const i=this.planes;for(let o=0;o<6;o++)if(i[o].distanceToPoint(e)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function TE(P,e){return P-e}function zh(P,e){return P.z-e.z}function $h(P,e){return e.z-P.z}class Al{constructor(){this.index=0,this.pool=[],this.list=[]}push(e,i,o,g){const C=this.pool,c=this.list;this.index>=C.length&&C.push({start:-1,count:-1,z:-1,index:-1});const f=C[this.index];c.push(f),this.index++,f.start=e,f.count=i,f.z=o,f.index=g}reset(){this.list.length=0,this.index=0}}const ha=new Eo,el=new ht(1,1,1),KE=new _E,tE=new Xr,BC=new Rr,iB=new Qe,jQ=new Qe,tl=new Qe,JE=new Al,Og=new Jn,iE=[];function il(P,e,i=0){const o=e.itemSize;if(P.isInterleavedBufferAttribute||P.array.constructor!==e.array.constructor){const g=P.count;for(let C=0;C<g;C++)for(let c=0;c<o;c++)e.setComponent(C+i,c,P.getComponent(C,c))}else e.array.set(P.array,i*o);e.needsUpdate=!0}function EC(P,e){if(P.constructor!==e.constructor){const i=Math.min(P.length,e.length);for(let o=0;o<i;o++)e[o]=P[o]}else{const i=Math.min(P.length,e.length);e.set(new P.constructor(P.buffer,0,i))}}class XQ extends Jn{get maxInstanceCount(){return this._maxInstanceCount}get instanceCount(){return this._instanceInfo.length-this._availableInstanceIds.length}get unusedVertexCount(){return this._maxVertexCount-this._nextVertexStart}get unusedIndexCount(){return this._maxIndexCount-this._nextIndexStart}constructor(e,i,o=i*2,g){super(new Rn,g),this.isBatchedMesh=!0,this.perObjectFrustumCulled=!0,this.sortObjects=!0,this.boundingBox=null,this.boundingSphere=null,this.customSort=null,this._instanceInfo=[],this._geometryInfo=[],this._availableInstanceIds=[],this._availableGeometryIds=[],this._nextIndexStart=0,this._nextVertexStart=0,this._geometryCount=0,this._visibilityChanged=!0,this._geometryInitialized=!1,this._maxInstanceCount=e,this._maxVertexCount=i,this._maxIndexCount=o,this._multiDrawCounts=new Int32Array(e),this._multiDrawStarts=new Int32Array(e),this._multiDrawCount=0,this._multiDrawInstances=null,this._matricesTexture=null,this._indirectTexture=null,this._colorsTexture=null,this._initMatricesTexture(),this._initIndirectTexture()}_initMatricesTexture(){let e=Math.sqrt(this._maxInstanceCount*4);e=Math.ceil(e/4)*4,e=Math.max(e,4);const i=new Float32Array(e*e*4),o=new es(i,e,e,me,Kg);this._matricesTexture=o}_initIndirectTexture(){let e=Math.sqrt(this._maxInstanceCount);e=Math.ceil(e);const i=new Uint32Array(e*e),o=new es(i,e,e,Pi,Da);this._indirectTexture=o}_initColorsTexture(){let e=Math.sqrt(this._maxInstanceCount);e=Math.ceil(e);const i=new Float32Array(e*e*4).fill(1),o=new es(i,e,e,me,Kg);o.colorSpace=zo.workingColorSpace,this._colorsTexture=o}_initializeGeometry(e){const i=this.geometry,o=this._maxVertexCount,g=this._maxIndexCount;if(this._geometryInitialized===!1){for(const C in e.attributes){const c=e.getAttribute(C),{array:f,itemSize:S,normalized:b}=c,$=new f.constructor(o*S),oA=new an($,S,b);i.setAttribute(C,oA)}if(e.getIndex()!==null){const C=o>65535?new Uint32Array(g):new Uint16Array(g);i.setIndex(new an(C,1))}this._geometryInitialized=!0}}_validateGeometry(e){const i=this.geometry;if(!!e.getIndex()!=!!i.getIndex())throw new Error('THREE.BatchedMesh: All geometries must consistently have "index".');for(const o in i.attributes){if(!e.hasAttribute(o))throw new Error(`THREE.BatchedMesh: Added geometry missing "${o}". All geometries must have consistent attributes.`);const g=e.getAttribute(o),C=i.getAttribute(o);if(g.itemSize!==C.itemSize||g.normalized!==C.normalized)throw new Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}validateInstanceId(e){const i=this._instanceInfo;if(e<0||e>=i.length||i[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid instanceId ${e}. Instance is either out of range or has been deleted.`)}validateGeometryId(e){const i=this._geometryInfo;if(e<0||e>=i.length||i[e].active===!1)throw new Error(`THREE.BatchedMesh: Invalid geometryId ${e}. Geometry is either out of range or has been deleted.`)}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new Xr);const e=this.boundingBox,i=this._instanceInfo;e.makeEmpty();for(let o=0,g=i.length;o<g;o++){if(i[o].active===!1)continue;const C=i[o].geometryIndex;this.getMatrixAt(o,ha),this.getBoundingBoxAt(C,tE).applyMatrix4(ha),e.union(tE)}}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new Rr);const e=this.boundingSphere,i=this._instanceInfo;e.makeEmpty();for(let o=0,g=i.length;o<g;o++){if(i[o].active===!1)continue;const C=i[o].geometryIndex;this.getMatrixAt(o,ha),this.getBoundingSphereAt(C,BC).applyMatrix4(ha),e.union(BC)}}addInstance(e){if(this._instanceInfo.length>=this.maxInstanceCount&&this._availableInstanceIds.length===0)throw new Error("THREE.BatchedMesh: Maximum item count reached.");const o={visible:!0,active:!0,geometryIndex:e};let g=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(TE),g=this._availableInstanceIds.shift(),this._instanceInfo[g]=o):(g=this._instanceInfo.length,this._instanceInfo.push(o));const C=this._matricesTexture;ha.identity().toArray(C.image.data,g*16),C.needsUpdate=!0;const c=this._colorsTexture;return c&&(el.toArray(c.image.data,g*4),c.needsUpdate=!0),this._visibilityChanged=!0,g}addGeometry(e,i=-1,o=-1){this._initializeGeometry(e),this._validateGeometry(e);const g={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},C=this._geometryInfo;g.vertexStart=this._nextVertexStart,g.reservedVertexCount=i===-1?e.getAttribute("position").count:i;const c=e.getIndex();if(c!==null&&(g.indexStart=this._nextIndexStart,g.reservedIndexCount=o===-1?c.count:o),g.indexStart!==-1&&g.indexStart+g.reservedIndexCount>this._maxIndexCount||g.vertexStart+g.reservedVertexCount>this._maxVertexCount)throw new Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.");let S;return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(TE),S=this._availableGeometryIds.shift(),C[S]=g):(S=this._geometryCount,this._geometryCount++,C.push(g)),this.setGeometryAt(S,e),this._nextIndexStart=g.indexStart+g.reservedIndexCount,this._nextVertexStart=g.vertexStart+g.reservedVertexCount,S}setGeometryAt(e,i){if(e>=this._geometryCount)throw new Error("THREE.BatchedMesh: Maximum geometry count reached.");this._validateGeometry(i);const o=this.geometry,g=o.getIndex()!==null,C=o.getIndex(),c=i.getIndex(),f=this._geometryInfo[e];if(g&&c.count>f.reservedIndexCount||i.attributes.position.count>f.reservedVertexCount)throw new Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry.");const S=f.vertexStart,b=f.reservedVertexCount;f.vertexCount=i.getAttribute("position").count;for(const $ in o.attributes){const oA=i.getAttribute($),rA=o.getAttribute($);il(oA,rA,S);const IA=oA.itemSize;for(let cA=oA.count,JA=b;cA<JA;cA++){const te=S+cA;for(let Ce=0;Ce<IA;Ce++)rA.setComponent(te,Ce,0)}rA.needsUpdate=!0,rA.addUpdateRange(S*IA,b*IA)}if(g){const $=f.indexStart,oA=f.reservedIndexCount;f.indexCount=i.getIndex().count;for(let rA=0;rA<c.count;rA++)C.setX($+rA,S+c.getX(rA));for(let rA=c.count,IA=oA;rA<IA;rA++)C.setX($+rA,S);C.needsUpdate=!0,C.addUpdateRange($,f.reservedIndexCount)}return f.start=g?f.indexStart:f.vertexStart,f.count=g?f.indexCount:f.vertexCount,f.boundingBox=null,i.boundingBox!==null&&(f.boundingBox=i.boundingBox.clone()),f.boundingSphere=null,i.boundingSphere!==null&&(f.boundingSphere=i.boundingSphere.clone()),this._visibilityChanged=!0,e}deleteGeometry(e){const i=this._geometryInfo;if(e>=i.length||i[e].active===!1)return this;const o=this._instanceInfo;for(let g=0,C=o.length;g<C;g++)o[g].active&&o[g].geometryIndex===e&&this.deleteInstance(g);return i[e].active=!1,this._availableGeometryIds.push(e),this._visibilityChanged=!0,this}deleteInstance(e){return this.validateInstanceId(e),this._instanceInfo[e].active=!1,this._availableInstanceIds.push(e),this._visibilityChanged=!0,this}optimize(){let e=0,i=0;const o=this._geometryInfo,g=o.map((c,f)=>f).sort((c,f)=>o[c].vertexStart-o[f].vertexStart),C=this.geometry;for(let c=0,f=o.length;c<f;c++){const S=g[c],b=o[S];if(b.active!==!1){if(C.index!==null){if(b.indexStart!==i){const{indexStart:$,vertexStart:oA,reservedIndexCount:rA}=b,IA=C.index,cA=IA.array,JA=e-oA;for(let te=$;te<$+rA;te++)cA[te]=cA[te]+JA;IA.array.copyWithin(i,$,$+rA),IA.addUpdateRange(i,rA),b.indexStart=i}i+=b.reservedIndexCount}if(b.vertexStart!==e){const{vertexStart:$,reservedVertexCount:oA}=b,rA=C.attributes;for(const IA in rA){const cA=rA[IA],{array:JA,itemSize:te}=cA;JA.copyWithin(e*te,$*te,($+oA)*te),cA.addUpdateRange(e*te,oA*te)}b.vertexStart=e}e+=b.reservedVertexCount,b.start=C.index?b.indexStart:b.vertexStart,this._nextIndexStart=C.index?b.indexStart+b.reservedIndexCount:0,this._nextVertexStart=b.vertexStart+b.reservedVertexCount}}return this}getBoundingBoxAt(e,i){if(e>=this._geometryCount)return null;const o=this.geometry,g=this._geometryInfo[e];if(g.boundingBox===null){const C=new Xr,c=o.index,f=o.attributes.position;for(let S=g.start,b=g.start+g.count;S<b;S++){let $=S;c&&($=c.getX($)),C.expandByPoint(iB.fromBufferAttribute(f,$))}g.boundingBox=C}return i.copy(g.boundingBox),i}getBoundingSphereAt(e,i){if(e>=this._geometryCount)return null;const o=this.geometry,g=this._geometryInfo[e];if(g.boundingSphere===null){const C=new Rr;this.getBoundingBoxAt(e,tE),tE.getCenter(C.center);const c=o.index,f=o.attributes.position;let S=0;for(let b=g.start,$=g.start+g.count;b<$;b++){let oA=b;c&&(oA=c.getX(oA)),iB.fromBufferAttribute(f,oA),S=Math.max(S,C.center.distanceToSquared(iB))}C.radius=Math.sqrt(S),g.boundingSphere=C}return i.copy(g.boundingSphere),i}setMatrixAt(e,i){this.validateInstanceId(e);const o=this._matricesTexture,g=this._matricesTexture.image.data;return i.toArray(g,e*16),o.needsUpdate=!0,this}getMatrixAt(e,i){return this.validateInstanceId(e),i.fromArray(this._matricesTexture.image.data,e*16)}setColorAt(e,i){return this.validateInstanceId(e),this._colorsTexture===null&&this._initColorsTexture(),i.toArray(this._colorsTexture.image.data,e*4),this._colorsTexture.needsUpdate=!0,this}getColorAt(e,i){return this.validateInstanceId(e),i.fromArray(this._colorsTexture.image.data,e*4)}setVisibleAt(e,i){return this.validateInstanceId(e),this._instanceInfo[e].visible===i?this:(this._instanceInfo[e].visible=i,this._visibilityChanged=!0,this)}getVisibleAt(e){return this.validateInstanceId(e),this._instanceInfo[e].visible}setGeometryIdAt(e,i){return this.validateInstanceId(e),this.validateGeometryId(i),this._instanceInfo[e].geometryIndex=i,this}getGeometryIdAt(e){return this.validateInstanceId(e),this._instanceInfo[e].geometryIndex}getGeometryRangeAt(e,i={}){this.validateGeometryId(e);const o=this._geometryInfo[e];return i.vertexStart=o.vertexStart,i.vertexCount=o.vertexCount,i.reservedVertexCount=o.reservedVertexCount,i.indexStart=o.indexStart,i.indexCount=o.indexCount,i.reservedIndexCount=o.reservedIndexCount,i.start=o.start,i.count=o.count,i}setInstanceCount(e){const i=this._availableInstanceIds,o=this._instanceInfo;for(i.sort(TE);i[i.length-1]===o.length;)o.pop(),i.pop();if(e<o.length)throw new Error(`BatchedMesh: Instance ids outside the range ${e} are being used. Cannot shrink instance count.`);const g=new Int32Array(e),C=new Int32Array(e);EC(this._multiDrawCounts,g),EC(this._multiDrawStarts,C),this._multiDrawCounts=g,this._multiDrawStarts=C,this._maxInstanceCount=e;const c=this._indirectTexture,f=this._matricesTexture,S=this._colorsTexture;c.dispose(),this._initIndirectTexture(),EC(c.image.data,this._indirectTexture.image.data),f.dispose(),this._initMatricesTexture(),EC(f.image.data,this._matricesTexture.image.data),S&&(S.dispose(),this._initColorsTexture(),EC(S.image.data,this._colorsTexture.image.data))}setGeometrySize(e,i){const o=[...this._geometryInfo].filter(f=>f.active);if(Math.max(...o.map(f=>f.vertexStart+f.reservedVertexCount))>e)throw new Error(`BatchedMesh: Geometry vertex values are being used outside the range ${i}. Cannot shrink further.`);if(this.geometry.index&&Math.max(...o.map(S=>S.indexStart+S.reservedIndexCount))>i)throw new Error(`BatchedMesh: Geometry index values are being used outside the range ${i}. Cannot shrink further.`);const C=this.geometry;C.dispose(),this._maxVertexCount=e,this._maxIndexCount=i,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new Rn,this._initializeGeometry(C));const c=this.geometry;C.index&&EC(C.index.array,c.index.array);for(const f in C.attributes)EC(C.attributes[f].array,c.attributes[f].array)}raycast(e,i){const o=this._instanceInfo,g=this._geometryInfo,C=this.matrixWorld,c=this.geometry;Og.material=this.material,Og.geometry.index=c.index,Og.geometry.attributes=c.attributes,Og.geometry.boundingBox===null&&(Og.geometry.boundingBox=new Xr),Og.geometry.boundingSphere===null&&(Og.geometry.boundingSphere=new Rr);for(let f=0,S=o.length;f<S;f++){if(!o[f].visible||!o[f].active)continue;const b=o[f].geometryIndex,$=g[b];Og.geometry.setDrawRange($.start,$.count),this.getMatrixAt(f,Og.matrixWorld).premultiply(C),this.getBoundingBoxAt(b,Og.geometry.boundingBox),this.getBoundingSphereAt(b,Og.geometry.boundingSphere),Og.raycast(e,iE);for(let oA=0,rA=iE.length;oA<rA;oA++){const IA=iE[oA];IA.object=this,IA.batchId=f,i.push(IA)}iE.length=0}Og.material=null,Og.geometry.index=null,Og.geometry.attributes={},Og.geometry.setDrawRange(0,1/0)}copy(e){return super.copy(e),this.geometry=e.geometry.clone(),this.perObjectFrustumCulled=e.perObjectFrustumCulled,this.sortObjects=e.sortObjects,this.boundingBox=e.boundingBox!==null?e.boundingBox.clone():null,this.boundingSphere=e.boundingSphere!==null?e.boundingSphere.clone():null,this._geometryInfo=e._geometryInfo.map(i=>({...i,boundingBox:i.boundingBox!==null?i.boundingBox.clone():null,boundingSphere:i.boundingSphere!==null?i.boundingSphere.clone():null})),this._instanceInfo=e._instanceInfo.map(i=>({...i})),this._maxInstanceCount=e._maxInstanceCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._geometryCount=e._geometryCount,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.slice(),this._matricesTexture=e._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),this._colorsTexture!==null&&(this._colorsTexture=e._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){return this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,this._colorsTexture!==null&&(this._colorsTexture.dispose(),this._colorsTexture=null),this}onBeforeRender(e,i,o,g,C){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;const c=g.getIndex(),f=c===null?1:c.array.BYTES_PER_ELEMENT,S=this._instanceInfo,b=this._multiDrawStarts,$=this._multiDrawCounts,oA=this._geometryInfo,rA=this.perObjectFrustumCulled,IA=this._indirectTexture,cA=IA.image.data;rA&&(ha.multiplyMatrices(o.projectionMatrix,o.matrixWorldInverse).multiply(this.matrixWorld),KE.setFromProjectionMatrix(ha,e.coordinateSystem));let JA=0;if(this.sortObjects){ha.copy(this.matrixWorld).invert(),iB.setFromMatrixPosition(o.matrixWorld).applyMatrix4(ha),jQ.set(0,0,-1).transformDirection(o.matrixWorld).transformDirection(ha);for(let Me=0,Re=S.length;Me<Re;Me++)if(S[Me].visible&&S[Me].active){const Ne=S[Me].geometryIndex;this.getMatrixAt(Me,ha),this.getBoundingSphereAt(Ne,BC).applyMatrix4(ha);let wt=!1;if(rA&&(wt=!KE.intersectsSphere(BC)),!wt){const St=oA[Ne],Yt=tl.subVectors(BC.center,iB).dot(jQ);JE.push(St.start,St.count,Yt,Me)}}const te=JE.list,Ce=this.customSort;Ce===null?te.sort(C.transparent?$h:zh):Ce.call(this,te,o);for(let Me=0,Re=te.length;Me<Re;Me++){const Ne=te[Me];b[JA]=Ne.start*f,$[JA]=Ne.count,cA[JA]=Ne.index,JA++}JE.reset()}else for(let te=0,Ce=S.length;te<Ce;te++)if(S[te].visible&&S[te].active){const Me=S[te].geometryIndex;let Re=!1;if(rA&&(this.getMatrixAt(te,ha),this.getBoundingSphereAt(Me,BC).applyMatrix4(ha),Re=!KE.intersectsSphere(BC)),!Re){const Ne=oA[Me];b[JA]=Ne.start*f,$[JA]=Ne.count,cA[JA]=te,JA++}}IA.needsUpdate=!0,this._multiDrawCount=JA,this._visibilityChanged=!1}onBeforeShadow(e,i,o,g,C,c){this.onBeforeRender(e,null,g,C,c)}}class ia extends Jt{constructor(e){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new ht(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.linewidth=e.linewidth,this.linecap=e.linecap,this.linejoin=e.linejoin,this.fog=e.fog,this}}const nE=new Qe,oE=new Qe,zQ=new Eo,nB=new eg,rE=new Rr,YE=new Qe,$Q=new Qe;class zI extends be{constructor(e=new Rn,i=new ia){super(),this.isLine=!0,this.type="Line",this.geometry=e,this.material=i,this.updateMorphTargets()}copy(e,i){return super.copy(e,i),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}computeLineDistances(){const e=this.geometry;if(e.index===null){const i=e.attributes.position,o=[0];for(let g=1,C=i.count;g<C;g++)nE.fromBufferAttribute(i,g-1),oE.fromBufferAttribute(i,g),o[g]=o[g-1],o[g]+=nE.distanceTo(oE);e.setAttribute("lineDistance",new he(o,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(e,i){const o=this.geometry,g=this.matrixWorld,C=e.params.Line.threshold,c=o.drawRange;if(o.boundingSphere===null&&o.computeBoundingSphere(),rE.copy(o.boundingSphere),rE.applyMatrix4(g),rE.radius+=C,e.ray.intersectsSphere(rE)===!1)return;zQ.copy(g).invert(),nB.copy(e.ray).applyMatrix4(zQ);const f=C/((this.scale.x+this.scale.y+this.scale.z)/3),S=f*f,b=this.isLineSegments?2:1,$=o.index,rA=o.attributes.position;if($!==null){const IA=Math.max(0,c.start),cA=Math.min($.count,c.start+c.count);for(let JA=IA,te=cA-1;JA<te;JA+=b){const Ce=$.getX(JA),Me=$.getX(JA+1),Re=sE(this,e,nB,S,Ce,Me,JA);Re&&i.push(Re)}if(this.isLineLoop){const JA=$.getX(cA-1),te=$.getX(IA),Ce=sE(this,e,nB,S,JA,te,cA-1);Ce&&i.push(Ce)}}else{const IA=Math.max(0,c.start),cA=Math.min(rA.count,c.start+c.count);for(let JA=IA,te=cA-1;JA<te;JA+=b){const Ce=sE(this,e,nB,S,JA,JA+1,JA);Ce&&i.push(Ce)}if(this.isLineLoop){const JA=sE(this,e,nB,S,cA-1,IA,cA-1);JA&&i.push(JA)}}}updateMorphTargets(){const i=this.geometry.morphAttributes,o=Object.keys(i);if(o.length>0){const g=i[o[0]];if(g!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let C=0,c=g.length;C<c;C++){const f=g[C].name||String(C);this.morphTargetInfluences.push(0),this.morphTargetDictionary[f]=C}}}}}function sE(P,e,i,o,g,C,c){const f=P.geometry.attributes.position;if(nE.fromBufferAttribute(f,g),oE.fromBufferAttribute(f,C),i.distanceSqToSegment(nE,oE,YE,$Q)>o)return;YE.applyMatrix4(P.matrixWorld);const b=e.ray.origin.distanceTo(YE);if(!(b<e.near||b>e.far))return{distance:b,point:$Q.clone().applyMatrix4(P.matrixWorld),index:c,face:null,faceIndex:null,barycoord:null,object:P}}const Ac=new Qe,ec=new Qe;class cI extends zI{constructor(e,i){super(e,i),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const e=this.geometry;if(e.index===null){const i=e.attributes.position,o=[];for(let g=0,C=i.count;g<C;g+=2)Ac.fromBufferAttribute(i,g),ec.fromBufferAttribute(i,g+1),o[g]=g===0?0:o[g-1],o[g+1]=o[g]+Ac.distanceTo(ec);e.setAttribute("lineDistance",new he(o,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}class tc extends zI{constructor(e,i){super(e,i),this.isLineLoop=!0,this.type="LineLoop"}}class HE extends Jt{constructor(e){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new ht(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.alphaMap=e.alphaMap,this.size=e.size,this.sizeAttenuation=e.sizeAttenuation,this.fog=e.fog,this}}const ic=new Eo,PE=new eg,gE=new Rr,aE=new Qe;class nc extends be{constructor(e=new Rn,i=new HE){super(),this.isPoints=!0,this.type="Points",this.geometry=e,this.material=i,this.updateMorphTargets()}copy(e,i){return super.copy(e,i),this.material=Array.isArray(e.material)?e.material.slice():e.material,this.geometry=e.geometry,this}raycast(e,i){const o=this.geometry,g=this.matrixWorld,C=e.params.Points.threshold,c=o.drawRange;if(o.boundingSphere===null&&o.computeBoundingSphere(),gE.copy(o.boundingSphere),gE.applyMatrix4(g),gE.radius+=C,e.ray.intersectsSphere(gE)===!1)return;ic.copy(g).invert(),PE.copy(e.ray).applyMatrix4(ic);const f=C/((this.scale.x+this.scale.y+this.scale.z)/3),S=f*f,b=o.index,oA=o.attributes.position;if(b!==null){const rA=Math.max(0,c.start),IA=Math.min(b.count,c.start+c.count);for(let cA=rA,JA=IA;cA<JA;cA++){const te=b.getX(cA);aE.fromBufferAttribute(oA,te),oc(aE,te,S,g,e,i,this)}}else{const rA=Math.max(0,c.start),IA=Math.min(oA.count,c.start+c.count);for(let cA=rA,JA=IA;cA<JA;cA++)aE.fromBufferAttribute(oA,cA),oc(aE,cA,S,g,e,i,this)}}updateMorphTargets(){const i=this.geometry.morphAttributes,o=Object.keys(i);if(o.length>0){const g=i[o[0]];if(g!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let C=0,c=g.length;C<c;C++){const f=g[C].name||String(C);this.morphTargetInfluences.push(0),this.morphTargetDictionary[f]=C}}}}}function oc(P,e,i,o,g,C,c){const f=PE.distanceSqToPoint(P);if(f<i){const S=new Qe;PE.closestPointToPoint(P,S),S.applyMatrix4(o);const b=g.ray.origin.distanceTo(S);if(b<g.near||b>g.far)return;C.push({distance:b,distanceToRay:Math.sqrt(f),point:S,index:e,face:null,faceIndex:null,barycoord:null,object:c})}}class rc extends To{constructor(e,i,o,g,C,c,f,S,b){super(e,i,o,g,C,c,f,S,b),this.isVideoTexture=!0,this.minFilter=c!==void 0?c:kn,this.magFilter=C!==void 0?C:kn,this.generateMipmaps=!1;const $=this;function oA(){$.needsUpdate=!0,e.requestVideoFrameCallback(oA)}"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback(oA)}clone(){return new this.constructor(this.image).copy(this)}update(){const e=this.image;"requestVideoFrameCallback"in e===!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}class nl extends rc{constructor(e,i,o,g,C,c,f,S){super({},e,i,o,g,C,c,f,S),this.isVideoFrameTexture=!0}update(){}clone(){return new this.constructor().copy(this)}setFrame(e){this.image=e,this.needsUpdate=!0}}class ol extends To{constructor(e,i){super({width:e,height:i}),this.isFramebufferTexture=!0,this.magFilter=Mi,this.minFilter=Mi,this.generateMipmaps=!1,this.needsUpdate=!0}}class IE extends To{constructor(e,i,o,g,C,c,f,S,b,$,oA,rA){super(null,c,f,S,b,$,g,C,oA,rA),this.isCompressedTexture=!0,this.image={width:i,height:o},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class rl extends IE{constructor(e,i,o,g,C,c){super(e,i,o,C,c),this.isCompressedArrayTexture=!0,this.image.depth=g,this.wrapR=De,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class sl extends IE{constructor(e,i,o){super(void 0,e[0].width,e[0].height,i,o,aA),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}}class gl extends To{constructor(e,i,o,g,C,c,f,S,b){super(e,i,o,g,C,c,f,S,b),this.isCanvasTexture=!0,this.needsUpdate=!0}}class al extends To{constructor(e,i,o,g,C,c,f,S,b,$=gt){if($!==gt&&$!==Gt)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");o===void 0&&$===gt&&(o=Da),o===void 0&&$===Gt&&(o=oa),super(null,g,C,c,f,S,$,o,b),this.isDepthTexture=!0,this.image={width:e,height:i},this.magFilter=f!==void 0?f:Mi,this.minFilter=S!==void 0?S:Mi,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.compareFunction=e.compareFunction,this}toJSON(e){const i=super.toJSON(e);return this.compareFunction!==null&&(i.compareFunction=this.compareFunction),i}}class eI{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,i){const o=this.getUtoTmapping(e);return this.getPoint(o,i)}getPoints(e=5){const i=[];for(let o=0;o<=e;o++)i.push(this.getPoint(o/e));return i}getSpacedPoints(e=5){const i=[];for(let o=0;o<=e;o++)i.push(this.getPointAt(o/e));return i}getLength(){const e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const i=[];let o,g=this.getPoint(0),C=0;i.push(0);for(let c=1;c<=e;c++)o=this.getPoint(c/e),C+=o.distanceTo(g),i.push(C),g=o;return this.cacheArcLengths=i,i}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,i){const o=this.getLengths();let g=0;const C=o.length;let c;i?c=i:c=e*o[C-1];let f=0,S=C-1,b;for(;f<=S;)if(g=Math.floor(f+(S-f)/2),b=o[g]-c,b<0)f=g+1;else if(b>0)S=g-1;else{S=g;break}if(g=S,o[g]===c)return g/(C-1);const $=o[g],rA=o[g+1]-$,IA=(c-$)/rA;return(g+IA)/(C-1)}getTangent(e,i){let g=e-1e-4,C=e+1e-4;g<0&&(g=0),C>1&&(C=1);const c=this.getPoint(g),f=this.getPoint(C),S=i||(c.isVector2?new ni:new Qe);return S.copy(f).sub(c).normalize(),S}getTangentAt(e,i){const o=this.getUtoTmapping(e);return this.getTangent(o,i)}computeFrenetFrames(e,i){const o=new Qe,g=[],C=[],c=[],f=new Qe,S=new Eo;for(let IA=0;IA<=e;IA++){const cA=IA/e;g[IA]=this.getTangentAt(cA,new Qe)}C[0]=new Qe,c[0]=new Qe;let b=Number.MAX_VALUE;const $=Math.abs(g[0].x),oA=Math.abs(g[0].y),rA=Math.abs(g[0].z);$<=b&&(b=$,o.set(1,0,0)),oA<=b&&(b=oA,o.set(0,1,0)),rA<=b&&o.set(0,0,1),f.crossVectors(g[0],o).normalize(),C[0].crossVectors(g[0],f),c[0].crossVectors(g[0],C[0]);for(let IA=1;IA<=e;IA++){if(C[IA]=C[IA-1].clone(),c[IA]=c[IA-1].clone(),f.crossVectors(g[IA-1],g[IA]),f.length()>Number.EPSILON){f.normalize();const cA=Math.acos(no(g[IA-1].dot(g[IA]),-1,1));C[IA].applyMatrix4(S.makeRotationAxis(f,cA))}c[IA].crossVectors(g[IA],C[IA])}if(i===!0){let IA=Math.acos(no(C[0].dot(C[e]),-1,1));IA/=e,g[0].dot(f.crossVectors(C[0],C[e]))>0&&(IA=-IA);for(let cA=1;cA<=e;cA++)C[cA].applyMatrix4(S.makeRotationAxis(g[cA],IA*cA)),c[cA].crossVectors(g[cA],C[cA])}return{tangents:g,normals:C,binormals:c}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){const e={metadata:{version:4.6,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class OE extends eI{constructor(e=0,i=0,o=1,g=1,C=0,c=Math.PI*2,f=!1,S=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=i,this.xRadius=o,this.yRadius=g,this.aStartAngle=C,this.aEndAngle=c,this.aClockwise=f,this.aRotation=S}getPoint(e,i=new ni){const o=i,g=Math.PI*2;let C=this.aEndAngle-this.aStartAngle;const c=Math.abs(C)<Number.EPSILON;for(;C<0;)C+=g;for(;C>g;)C-=g;C<Number.EPSILON&&(c?C=0:C=g),this.aClockwise===!0&&!c&&(C===g?C=-g:C=C-g);const f=this.aStartAngle+e*C;let S=this.aX+this.xRadius*Math.cos(f),b=this.aY+this.yRadius*Math.sin(f);if(this.aRotation!==0){const $=Math.cos(this.aRotation),oA=Math.sin(this.aRotation),rA=S-this.aX,IA=b-this.aY;S=rA*$-IA*oA+this.aX,b=rA*oA+IA*$+this.aY}return o.set(S,b)}copy(e){return super.copy(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}toJSON(){const e=super.toJSON();return e.aX=this.aX,e.aY=this.aY,e.xRadius=this.xRadius,e.yRadius=this.yRadius,e.aStartAngle=this.aStartAngle,e.aEndAngle=this.aEndAngle,e.aClockwise=this.aClockwise,e.aRotation=this.aRotation,e}fromJSON(e){return super.fromJSON(e),this.aX=e.aX,this.aY=e.aY,this.xRadius=e.xRadius,this.yRadius=e.yRadius,this.aStartAngle=e.aStartAngle,this.aEndAngle=e.aEndAngle,this.aClockwise=e.aClockwise,this.aRotation=e.aRotation,this}}class Il extends OE{constructor(e,i,o,g,C,c){super(e,i,o,o,g,C,c),this.isArcCurve=!0,this.type="ArcCurve"}}function sc(){let P=0,e=0,i=0,o=0;function g(C,c,f,S){P=C,e=f,i=-3*C+3*c-2*f-S,o=2*C-2*c+f+S}return{initCatmullRom:function(C,c,f,S,b){g(c,f,b*(f-C),b*(S-c))},initNonuniformCatmullRom:function(C,c,f,S,b,$,oA){let rA=(c-C)/b-(f-C)/(b+$)+(f-c)/$,IA=(f-c)/$-(S-c)/($+oA)+(S-f)/oA;rA*=$,IA*=$,g(c,f,rA,IA)},calc:function(C){const c=C*C,f=c*C;return P+e*C+i*c+o*f}}}const qE=new Qe,gc=new sc,ac=new sc,Ic=new sc;class Cl extends eI{constructor(e=[],i=!1,o="centripetal",g=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=e,this.closed=i,this.curveType=o,this.tension=g}getPoint(e,i=new Qe){const o=i,g=this.points,C=g.length,c=(C-(this.closed?0:1))*e;let f=Math.floor(c),S=c-f;this.closed?f+=f>0?0:(Math.floor(Math.abs(f)/C)+1)*C:S===0&&f===C-1&&(f=C-2,S=1);let b,$;this.closed||f>0?b=g[(f-1)%C]:(qE.subVectors(g[0],g[1]).add(g[0]),b=qE);const oA=g[f%C],rA=g[(f+1)%C];if(this.closed||f+2<C?$=g[(f+2)%C]:(qE.subVectors(g[C-1],g[C-2]).add(g[C-1]),$=qE),this.curveType==="centripetal"||this.curveType==="chordal"){const IA=this.curveType==="chordal"?.5:.25;let cA=Math.pow(b.distanceToSquared(oA),IA),JA=Math.pow(oA.distanceToSquared(rA),IA),te=Math.pow(rA.distanceToSquared($),IA);JA<1e-4&&(JA=1),cA<1e-4&&(cA=JA),te<1e-4&&(te=JA),gc.initNonuniformCatmullRom(b.x,oA.x,rA.x,$.x,cA,JA,te),ac.initNonuniformCatmullRom(b.y,oA.y,rA.y,$.y,cA,JA,te),Ic.initNonuniformCatmullRom(b.z,oA.z,rA.z,$.z,cA,JA,te)}else this.curveType==="catmullrom"&&(gc.initCatmullRom(b.x,oA.x,rA.x,$.x,this.tension),ac.initCatmullRom(b.y,oA.y,rA.y,$.y,this.tension),Ic.initCatmullRom(b.z,oA.z,rA.z,$.z,this.tension));return o.set(gc.calc(S),ac.calc(S),Ic.calc(S)),o}copy(e){super.copy(e),this.points=[];for(let i=0,o=e.points.length;i<o;i++){const g=e.points[i];this.points.push(g.clone())}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}toJSON(){const e=super.toJSON();e.points=[];for(let i=0,o=this.points.length;i<o;i++){const g=this.points[i];e.points.push(g.toArray())}return e.closed=this.closed,e.curveType=this.curveType,e.tension=this.tension,e}fromJSON(e){super.fromJSON(e),this.points=[];for(let i=0,o=e.points.length;i<o;i++){const g=e.points[i];this.points.push(new Qe().fromArray(g))}return this.closed=e.closed,this.curveType=e.curveType,this.tension=e.tension,this}}function Bl(P,e,i,o,g){const C=(o-e)*.5,c=(g-i)*.5,f=P*P,S=P*f;return(2*i-2*o+C+c)*S+(-3*i+3*o-2*C-c)*f+C*P+i}function dd(P,e){const i=1-P;return i*i*e}function ud(P,e){return 2*(1-P)*P*e}function fd(P,e){return P*P*e}function CE(P,e,i,o){return dd(P,e)+ud(P,i)+fd(P,o)}function pd(P,e){const i=1-P;return i*i*i*e}function md(P,e){const i=1-P;return 3*i*i*P*e}function Dd(P,e){return 3*(1-P)*P*P*e}function yd(P,e){return P*P*P*e}function BE(P,e,i,o,g){return pd(P,e)+md(P,i)+Dd(P,o)+yd(P,g)}class Cc extends eI{constructor(e=new ni,i=new ni,o=new ni,g=new ni){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=e,this.v1=i,this.v2=o,this.v3=g}getPoint(e,i=new ni){const o=i,g=this.v0,C=this.v1,c=this.v2,f=this.v3;return o.set(BE(e,g.x,C.x,c.x,f.x),BE(e,g.y,C.y,c.y,f.y)),o}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}}class El extends eI{constructor(e=new Qe,i=new Qe,o=new Qe,g=new Qe){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=e,this.v1=i,this.v2=o,this.v3=g}getPoint(e,i=new Qe){const o=i,g=this.v0,C=this.v1,c=this.v2,f=this.v3;return o.set(BE(e,g.x,C.x,c.x,f.x),BE(e,g.y,C.y,c.y,f.y),BE(e,g.z,C.z,c.z,f.z)),o}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this.v3.copy(e.v3),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e.v3=this.v3.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this.v3.fromArray(e.v3),this}}class Bc extends eI{constructor(e=new ni,i=new ni){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=e,this.v2=i}getPoint(e,i=new ni){const o=i;return e===1?o.copy(this.v2):(o.copy(this.v2).sub(this.v1),o.multiplyScalar(e).add(this.v1)),o}getPointAt(e,i){return this.getPoint(e,i)}getTangent(e,i=new ni){return i.subVectors(this.v2,this.v1).normalize()}getTangentAt(e,i){return this.getTangent(e,i)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class Ql extends eI{constructor(e=new Qe,i=new Qe){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=e,this.v2=i}getPoint(e,i=new Qe){const o=i;return e===1?o.copy(this.v2):(o.copy(this.v2).sub(this.v1),o.multiplyScalar(e).add(this.v1)),o}getPointAt(e,i){return this.getPoint(e,i)}getTangent(e,i=new Qe){return i.subVectors(this.v2,this.v1).normalize()}getTangentAt(e,i){return this.getTangent(e,i)}copy(e){return super.copy(e),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class Ec extends eI{constructor(e=new ni,i=new ni,o=new ni){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=e,this.v1=i,this.v2=o}getPoint(e,i=new ni){const o=i,g=this.v0,C=this.v1,c=this.v2;return o.set(CE(e,g.x,C.x,c.x),CE(e,g.y,C.y,c.y)),o}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class Qc extends eI{constructor(e=new Qe,i=new Qe,o=new Qe){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=e,this.v1=i,this.v2=o}getPoint(e,i=new Qe){const o=i,g=this.v0,C=this.v1,c=this.v2;return o.set(CE(e,g.x,C.x,c.x),CE(e,g.y,C.y,c.y),CE(e,g.z,C.z,c.z)),o}copy(e){return super.copy(e),this.v0.copy(e.v0),this.v1.copy(e.v1),this.v2.copy(e.v2),this}toJSON(){const e=super.toJSON();return e.v0=this.v0.toArray(),e.v1=this.v1.toArray(),e.v2=this.v2.toArray(),e}fromJSON(e){return super.fromJSON(e),this.v0.fromArray(e.v0),this.v1.fromArray(e.v1),this.v2.fromArray(e.v2),this}}class cc extends eI{constructor(e=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=e}getPoint(e,i=new ni){const o=i,g=this.points,C=(g.length-1)*e,c=Math.floor(C),f=C-c,S=g[c===0?c:c-1],b=g[c],$=g[c>g.length-2?g.length-1:c+1],oA=g[c>g.length-3?g.length-1:c+2];return o.set(Bl(f,S.x,b.x,$.x,oA.x),Bl(f,S.y,b.y,$.y,oA.y)),o}copy(e){super.copy(e),this.points=[];for(let i=0,o=e.points.length;i<o;i++){const g=e.points[i];this.points.push(g.clone())}return this}toJSON(){const e=super.toJSON();e.points=[];for(let i=0,o=this.points.length;i<o;i++){const g=this.points[i];e.points.push(g.toArray())}return e}fromJSON(e){super.fromJSON(e),this.points=[];for(let i=0,o=e.points.length;i<o;i++){const g=e.points[i];this.points.push(new ni().fromArray(g))}return this}}var WE=Object.freeze({__proto__:null,ArcCurve:Il,CatmullRomCurve3:Cl,CubicBezierCurve:Cc,CubicBezierCurve3:El,EllipseCurve:OE,LineCurve:Bc,LineCurve3:Ql,QuadraticBezierCurve:Ec,QuadraticBezierCurve3:Qc,SplineCurve:cc});class cl extends eI{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(e){this.curves.push(e)}closePath(){const e=this.curves[0].getPoint(0),i=this.curves[this.curves.length-1].getPoint(1);if(!e.equals(i)){const o=e.isVector2===!0?"LineCurve":"LineCurve3";this.curves.push(new WE[o](i,e))}return this}getPoint(e,i){const o=e*this.getLength(),g=this.getCurveLengths();let C=0;for(;C<g.length;){if(g[C]>=o){const c=g[C]-o,f=this.curves[C],S=f.getLength(),b=S===0?0:1-c/S;return f.getPointAt(b,i)}C++}return null}getLength(){const e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const e=[];let i=0;for(let o=0,g=this.curves.length;o<g;o++)i+=this.curves[o].getLength(),e.push(i);return this.cacheLengths=e,e}getSpacedPoints(e=40){const i=[];for(let o=0;o<=e;o++)i.push(this.getPoint(o/e));return this.autoClose&&i.push(i[0]),i}getPoints(e=12){const i=[];let o;for(let g=0,C=this.curves;g<C.length;g++){const c=C[g],f=c.isEllipseCurve?e*2:c.isLineCurve||c.isLineCurve3?1:c.isSplineCurve?e*c.points.length:e,S=c.getPoints(f);for(let b=0;b<S.length;b++){const $=S[b];o&&o.equals($)||(i.push($),o=$)}}return this.autoClose&&i.length>1&&!i[i.length-1].equals(i[0])&&i.push(i[0]),i}copy(e){super.copy(e),this.curves=[];for(let i=0,o=e.curves.length;i<o;i++){const g=e.curves[i];this.curves.push(g.clone())}return this.autoClose=e.autoClose,this}toJSON(){const e=super.toJSON();e.autoClose=this.autoClose,e.curves=[];for(let i=0,o=this.curves.length;i<o;i++){const g=this.curves[i];e.curves.push(g.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.autoClose=e.autoClose,this.curves=[];for(let i=0,o=e.curves.length;i<o;i++){const g=e.curves[i];this.curves.push(new WE[g.type]().fromJSON(g))}return this}}class EE extends cl{constructor(e){super(),this.type="Path",this.currentPoint=new ni,e&&this.setFromPoints(e)}setFromPoints(e){this.moveTo(e[0].x,e[0].y);for(let i=1,o=e.length;i<o;i++)this.lineTo(e[i].x,e[i].y);return this}moveTo(e,i){return this.currentPoint.set(e,i),this}lineTo(e,i){const o=new Bc(this.currentPoint.clone(),new ni(e,i));return this.curves.push(o),this.currentPoint.set(e,i),this}quadraticCurveTo(e,i,o,g){const C=new Ec(this.currentPoint.clone(),new ni(e,i),new ni(o,g));return this.curves.push(C),this.currentPoint.set(o,g),this}bezierCurveTo(e,i,o,g,C,c){const f=new Cc(this.currentPoint.clone(),new ni(e,i),new ni(o,g),new ni(C,c));return this.curves.push(f),this.currentPoint.set(C,c),this}splineThru(e){const i=[this.currentPoint.clone()].concat(e),o=new cc(i);return this.curves.push(o),this.currentPoint.copy(e[e.length-1]),this}arc(e,i,o,g,C,c){const f=this.currentPoint.x,S=this.currentPoint.y;return this.absarc(e+f,i+S,o,g,C,c),this}absarc(e,i,o,g,C,c){return this.absellipse(e,i,o,o,g,C,c),this}ellipse(e,i,o,g,C,c,f,S){const b=this.currentPoint.x,$=this.currentPoint.y;return this.absellipse(e+b,i+$,o,g,C,c,f,S),this}absellipse(e,i,o,g,C,c,f,S){const b=new OE(e,i,o,g,C,c,f,S);if(this.curves.length>0){const oA=b.getPoint(0);oA.equals(this.currentPoint)||this.lineTo(oA.x,oA.y)}this.curves.push(b);const $=b.getPoint(1);return this.currentPoint.copy($),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){const e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class QE extends Rn{constructor(e=[new ni(0,-.5),new ni(.5,0),new ni(0,.5)],i=12,o=0,g=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:e,segments:i,phiStart:o,phiLength:g},i=Math.floor(i),g=no(g,0,Math.PI*2);const C=[],c=[],f=[],S=[],b=[],$=1/i,oA=new Qe,rA=new ni,IA=new Qe,cA=new Qe,JA=new Qe;let te=0,Ce=0;for(let Me=0;Me<=e.length-1;Me++)switch(Me){case 0:te=e[Me+1].x-e[Me].x,Ce=e[Me+1].y-e[Me].y,IA.x=Ce*1,IA.y=-te,IA.z=Ce*0,JA.copy(IA),IA.normalize(),S.push(IA.x,IA.y,IA.z);break;case e.length-1:S.push(JA.x,JA.y,JA.z);break;default:te=e[Me+1].x-e[Me].x,Ce=e[Me+1].y-e[Me].y,IA.x=Ce*1,IA.y=-te,IA.z=Ce*0,cA.copy(IA),IA.x+=JA.x,IA.y+=JA.y,IA.z+=JA.z,IA.normalize(),S.push(IA.x,IA.y,IA.z),JA.copy(cA)}for(let Me=0;Me<=i;Me++){const Re=o+Me*$*g,Ne=Math.sin(Re),wt=Math.cos(Re);for(let St=0;St<=e.length-1;St++){oA.x=e[St].x*Ne,oA.y=e[St].y,oA.z=e[St].x*wt,c.push(oA.x,oA.y,oA.z),rA.x=Me/i,rA.y=St/(e.length-1),f.push(rA.x,rA.y);const Yt=S[3*St+0]*Ne,xt=S[3*St+1],Li=S[3*St+0]*wt;b.push(Yt,xt,Li)}}for(let Me=0;Me<i;Me++)for(let Re=0;Re<e.length-1;Re++){const Ne=Re+Me*e.length,wt=Ne,St=Ne+e.length,Yt=Ne+e.length+1,xt=Ne+1;C.push(wt,St,xt),C.push(Yt,xt,St)}this.setIndex(C),this.setAttribute("position",new he(c,3)),this.setAttribute("uv",new he(f,2)),this.setAttribute("normal",new he(b,3))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new QE(e.points,e.segments,e.phiStart,e.phiLength)}}class VE extends QE{constructor(e=1,i=1,o=4,g=8){const C=new EE;C.absarc(0,-i/2,e,Math.PI*1.5,0),C.absarc(0,i/2,e,0,Math.PI*.5),super(C.getPoints(o),g),this.type="CapsuleGeometry",this.parameters={radius:e,length:i,capSegments:o,radialSegments:g}}static fromJSON(e){return new VE(e.radius,e.length,e.capSegments,e.radialSegments)}}class ZE extends Rn{constructor(e=1,i=32,o=0,g=Math.PI*2){super(),this.type="CircleGeometry",this.parameters={radius:e,segments:i,thetaStart:o,thetaLength:g},i=Math.max(3,i);const C=[],c=[],f=[],S=[],b=new Qe,$=new ni;c.push(0,0,0),f.push(0,0,1),S.push(.5,.5);for(let oA=0,rA=3;oA<=i;oA++,rA+=3){const IA=o+oA/i*g;b.x=e*Math.cos(IA),b.y=e*Math.sin(IA),c.push(b.x,b.y,b.z),f.push(0,0,1),$.x=(c[rA]/e+1)/2,$.y=(c[rA+1]/e+1)/2,S.push($.x,$.y)}for(let oA=1;oA<=i;oA++)C.push(oA,oA+1,0);this.setIndex(C),this.setAttribute("position",new he(c,3)),this.setAttribute("normal",new he(f,3)),this.setAttribute("uv",new he(S,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new ZE(e.radius,e.segments,e.thetaStart,e.thetaLength)}}class oB extends Rn{constructor(e=1,i=1,o=1,g=32,C=1,c=!1,f=0,S=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:e,radiusBottom:i,height:o,radialSegments:g,heightSegments:C,openEnded:c,thetaStart:f,thetaLength:S};const b=this;g=Math.floor(g),C=Math.floor(C);const $=[],oA=[],rA=[],IA=[];let cA=0;const JA=[],te=o/2;let Ce=0;Me(),c===!1&&(e>0&&Re(!0),i>0&&Re(!1)),this.setIndex($),this.setAttribute("position",new he(oA,3)),this.setAttribute("normal",new he(rA,3)),this.setAttribute("uv",new he(IA,2));function Me(){const Ne=new Qe,wt=new Qe;let St=0;const Yt=(i-e)/o;for(let xt=0;xt<=C;xt++){const Li=[],Wi=xt/C,hn=Wi*(i-e)+e;for(let qo=0;qo<=g;qo++){const Qr=qo/g,ur=Qr*S+f,cs=Math.sin(ur),Ms=Math.cos(ur);wt.x=hn*cs,wt.y=-Wi*o+te,wt.z=hn*Ms,oA.push(wt.x,wt.y,wt.z),Ne.set(cs,Yt,Ms).normalize(),rA.push(Ne.x,Ne.y,Ne.z),IA.push(Qr,1-Wi),Li.push(cA++)}JA.push(Li)}for(let xt=0;xt<g;xt++)for(let Li=0;Li<C;Li++){const Wi=JA[Li][xt],hn=JA[Li+1][xt],qo=JA[Li+1][xt+1],Qr=JA[Li][xt+1];(e>0||Li!==0)&&($.push(Wi,hn,Qr),St+=3),(i>0||Li!==C-1)&&($.push(hn,qo,Qr),St+=3)}b.addGroup(Ce,St,0),Ce+=St}function Re(Ne){const wt=cA,St=new ni,Yt=new Qe;let xt=0;const Li=Ne===!0?e:i,Wi=Ne===!0?1:-1;for(let qo=1;qo<=g;qo++)oA.push(0,te*Wi,0),rA.push(0,Wi,0),IA.push(.5,.5),cA++;const hn=cA;for(let qo=0;qo<=g;qo++){const ur=qo/g*S+f,cs=Math.cos(ur),Ms=Math.sin(ur);Yt.x=Li*Ms,Yt.y=te*Wi,Yt.z=Li*cs,oA.push(Yt.x,Yt.y,Yt.z),rA.push(0,Wi,0),St.x=cs*.5+.5,St.y=Ms*.5*Wi+.5,IA.push(St.x,St.y),cA++}for(let qo=0;qo<g;qo++){const Qr=wt+qo,ur=hn+qo;Ne===!0?$.push(ur,ur+1,Qr):$.push(ur+1,ur,Qr),xt+=3}b.addGroup(Ce,xt,Ne===!0?1:2),Ce+=xt}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new oB(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class jE extends oB{constructor(e=1,i=1,o=32,g=1,C=!1,c=0,f=Math.PI*2){super(0,e,i,o,g,C,c,f),this.type="ConeGeometry",this.parameters={radius:e,height:i,radialSegments:o,heightSegments:g,openEnded:C,thetaStart:c,thetaLength:f}}static fromJSON(e){return new jE(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class QC extends Rn{constructor(e=[],i=[],o=1,g=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:i,radius:o,detail:g};const C=[],c=[];f(g),b(o),$(),this.setAttribute("position",new he(C,3)),this.setAttribute("normal",new he(C.slice(),3)),this.setAttribute("uv",new he(c,2)),g===0?this.computeVertexNormals():this.normalizeNormals();function f(Me){const Re=new Qe,Ne=new Qe,wt=new Qe;for(let St=0;St<i.length;St+=3)IA(i[St+0],Re),IA(i[St+1],Ne),IA(i[St+2],wt),S(Re,Ne,wt,Me)}function S(Me,Re,Ne,wt){const St=wt+1,Yt=[];for(let xt=0;xt<=St;xt++){Yt[xt]=[];const Li=Me.clone().lerp(Ne,xt/St),Wi=Re.clone().lerp(Ne,xt/St),hn=St-xt;for(let qo=0;qo<=hn;qo++)qo===0&&xt===St?Yt[xt][qo]=Li:Yt[xt][qo]=Li.clone().lerp(Wi,qo/hn)}for(let xt=0;xt<St;xt++)for(let Li=0;Li<2*(St-xt)-1;Li++){const Wi=Math.floor(Li/2);Li%2===0?(rA(Yt[xt][Wi+1]),rA(Yt[xt+1][Wi]),rA(Yt[xt][Wi])):(rA(Yt[xt][Wi+1]),rA(Yt[xt+1][Wi+1]),rA(Yt[xt+1][Wi]))}}function b(Me){const Re=new Qe;for(let Ne=0;Ne<C.length;Ne+=3)Re.x=C[Ne+0],Re.y=C[Ne+1],Re.z=C[Ne+2],Re.normalize().multiplyScalar(Me),C[Ne+0]=Re.x,C[Ne+1]=Re.y,C[Ne+2]=Re.z}function $(){const Me=new Qe;for(let Re=0;Re<C.length;Re+=3){Me.x=C[Re+0],Me.y=C[Re+1],Me.z=C[Re+2];const Ne=te(Me)/2/Math.PI+.5,wt=Ce(Me)/Math.PI+.5;c.push(Ne,1-wt)}cA(),oA()}function oA(){for(let Me=0;Me<c.length;Me+=6){const Re=c[Me+0],Ne=c[Me+2],wt=c[Me+4],St=Math.max(Re,Ne,wt),Yt=Math.min(Re,Ne,wt);St>.9&&Yt<.1&&(Re<.2&&(c[Me+0]+=1),Ne<.2&&(c[Me+2]+=1),wt<.2&&(c[Me+4]+=1))}}function rA(Me){C.push(Me.x,Me.y,Me.z)}function IA(Me,Re){const Ne=Me*3;Re.x=e[Ne+0],Re.y=e[Ne+1],Re.z=e[Ne+2]}function cA(){const Me=new Qe,Re=new Qe,Ne=new Qe,wt=new Qe,St=new ni,Yt=new ni,xt=new ni;for(let Li=0,Wi=0;Li<C.length;Li+=9,Wi+=6){Me.set(C[Li+0],C[Li+1],C[Li+2]),Re.set(C[Li+3],C[Li+4],C[Li+5]),Ne.set(C[Li+6],C[Li+7],C[Li+8]),St.set(c[Wi+0],c[Wi+1]),Yt.set(c[Wi+2],c[Wi+3]),xt.set(c[Wi+4],c[Wi+5]),wt.copy(Me).add(Re).add(Ne).divideScalar(3);const hn=te(wt);JA(St,Wi+0,Me,hn),JA(Yt,Wi+2,Re,hn),JA(xt,Wi+4,Ne,hn)}}function JA(Me,Re,Ne,wt){wt<0&&Me.x===1&&(c[Re]=Me.x-1),Ne.x===0&&Ne.z===0&&(c[Re]=wt/2/Math.PI+.5)}function te(Me){return Math.atan2(Me.z,-Me.x)}function Ce(Me){return Math.atan2(-Me.y,Math.sqrt(Me.x*Me.x+Me.z*Me.z))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new QC(e.vertices,e.indices,e.radius,e.details)}}class No extends QC{constructor(e=1,i=0){const o=(1+Math.sqrt(5))/2,g=1/o,C=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-g,-o,0,-g,o,0,g,-o,0,g,o,-g,-o,0,-g,o,0,g,-o,0,g,o,0,-o,0,-g,o,0,-g,-o,0,g,o,0,g],c=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9];super(C,c,e,i),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:i}}static fromJSON(e){return new No(e.radius,e.detail)}}const ki=new Qe,la=new Qe,TC=new Qe,hI=new Dt;class hc extends Rn{constructor(e=null,i=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:e,thresholdAngle:i},e!==null){const g=Math.pow(10,4),C=Math.cos($g*i),c=e.getIndex(),f=e.getAttribute("position"),S=c?c.count:f.count,b=[0,0,0],$=["a","b","c"],oA=new Array(3),rA={},IA=[];for(let cA=0;cA<S;cA+=3){c?(b[0]=c.getX(cA),b[1]=c.getX(cA+1),b[2]=c.getX(cA+2)):(b[0]=cA,b[1]=cA+1,b[2]=cA+2);const{a:JA,b:te,c:Ce}=hI;if(JA.fromBufferAttribute(f,b[0]),te.fromBufferAttribute(f,b[1]),Ce.fromBufferAttribute(f,b[2]),hI.getNormal(TC),oA[0]=`${Math.round(JA.x*g)},${Math.round(JA.y*g)},${Math.round(JA.z*g)}`,oA[1]=`${Math.round(te.x*g)},${Math.round(te.y*g)},${Math.round(te.z*g)}`,oA[2]=`${Math.round(Ce.x*g)},${Math.round(Ce.y*g)},${Math.round(Ce.z*g)}`,!(oA[0]===oA[1]||oA[1]===oA[2]||oA[2]===oA[0]))for(let Me=0;Me<3;Me++){const Re=(Me+1)%3,Ne=oA[Me],wt=oA[Re],St=hI[$[Me]],Yt=hI[$[Re]],xt=`${Ne}_${wt}`,Li=`${wt}_${Ne}`;Li in rA&&rA[Li]?(TC.dot(rA[Li].normal)<=C&&(IA.push(St.x,St.y,St.z),IA.push(Yt.x,Yt.y,Yt.z)),rA[Li]=null):xt in rA||(rA[xt]={index0:b[Me],index1:b[Re],normal:TC.clone()})}}for(const cA in rA)if(rA[cA]){const{index0:JA,index1:te}=rA[cA];ki.fromBufferAttribute(f,JA),la.fromBufferAttribute(f,te),IA.push(ki.x,ki.y,ki.z),IA.push(la.x,la.y,la.z)}this.setAttribute("position",new he(IA,3))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}}class cC extends EE{constructor(e){super(e),this.uuid=gg(),this.type="Shape",this.holes=[]}getPointsHoles(e){const i=[];for(let o=0,g=this.holes.length;o<g;o++)i[o]=this.holes[o].getPoints(e);return i}extractPoints(e){return{shape:this.getPoints(e),holes:this.getPointsHoles(e)}}copy(e){super.copy(e),this.holes=[];for(let i=0,o=e.holes.length;i<o;i++){const g=e.holes[i];this.holes.push(g.clone())}return this}toJSON(){const e=super.toJSON();e.uuid=this.uuid,e.holes=[];for(let i=0,o=this.holes.length;i<o;i++){const g=this.holes[i];e.holes.push(g.toJSON())}return e}fromJSON(e){super.fromJSON(e),this.uuid=e.uuid,this.holes=[];for(let i=0,o=e.holes.length;i<o;i++){const g=e.holes[i];this.holes.push(new EE().fromJSON(g))}return this}}const hl={triangulate:function(P,e,i=2){const o=e&&e.length,g=o?e[0]*i:P.length;let C=lc(P,0,g,i,!0);const c=[];if(!C||C.next===C.prev)return c;let f,S,b,$,oA,rA,IA;if(o&&(C=lC(P,e,C,i)),P.length>80*i){f=b=P[0],S=$=P[1];for(let cA=i;cA<g;cA+=i)oA=P[cA],rA=P[cA+1],oA<f&&(f=oA),rA<S&&(S=rA),oA>b&&(b=oA),rA>$&&($=rA);IA=Math.max(b-f,$-S),IA=IA!==0?32767/IA:0}return rB(C,c,i,f,S,IA,0),c}};function lc(P,e,i,o,g){let C,c;if(g===ul(P,e,i,o)>0)for(C=e;C<i;C+=o)c=mc(C,P[C],P[C+1],c);else for(C=i-o;C>=e;C-=o)c=mc(C,P[C],P[C+1],c);return c&&sB(c,c.next)&&(IB(c),c=c.next),c}function hC(P,e){if(!P)return P;e||(e=P);let i=P,o;do if(o=!1,!i.steiner&&(sB(i,i.next)||Ts(i.prev,i,i.next)===0)){if(IB(i),i=e=i.prev,i===i.next)break;o=!0}else i=i.next;while(o||i!==e);return e}function rB(P,e,i,o,g,C,c){if(!P)return;!c&&C&&AQ(P,o,g,C);let f=P,S,b;for(;P.prev!==P.next;){if(S=P.prev,b=P.next,C?cE(P,o,g,C):ll(P)){e.push(S.i/i|0),e.push(P.i/i|0),e.push(b.i/i|0),IB(P),P=b.next,f=b.next;continue}if(P=b,P===f){c?c===1?(P=KC(hC(P),e,i),rB(P,e,i,o,g,C,2)):c===2&&dc(P,e,i,o,g,C):rB(hC(P),e,i,o,g,C,1);break}}}function ll(P){const e=P.prev,i=P,o=P.next;if(Ts(e,i,o)>=0)return!1;const g=e.x,C=i.x,c=o.x,f=e.y,S=i.y,b=o.y,$=g<C?g<c?g:c:C<c?C:c,oA=f<S?f<b?f:b:S<b?S:b,rA=g>C?g>c?g:c:C>c?C:c,IA=f>S?f>b?f:b:S>b?S:b;let cA=o.next;for(;cA!==e;){if(cA.x>=$&&cA.x<=rA&&cA.y>=oA&&cA.y<=IA&&dC(g,f,C,S,c,b,cA.x,cA.y)&&Ts(cA.prev,cA,cA.next)>=0)return!1;cA=cA.next}return!0}function cE(P,e,i,o){const g=P.prev,C=P,c=P.next;if(Ts(g,C,c)>=0)return!1;const f=g.x,S=C.x,b=c.x,$=g.y,oA=C.y,rA=c.y,IA=f<S?f<b?f:b:S<b?S:b,cA=$<oA?$<rA?$:rA:oA<rA?oA:rA,JA=f>S?f>b?f:b:S>b?S:b,te=$>oA?$>rA?$:rA:oA>rA?oA:rA,Ce=LI(IA,cA,e,i,o),Me=LI(JA,te,e,i,o);let Re=P.prevZ,Ne=P.nextZ;for(;Re&&Re.z>=Ce&&Ne&&Ne.z<=Me;){if(Re.x>=IA&&Re.x<=JA&&Re.y>=cA&&Re.y<=te&&Re!==g&&Re!==c&&dC(f,$,S,oA,b,rA,Re.x,Re.y)&&Ts(Re.prev,Re,Re.next)>=0||(Re=Re.prevZ,Ne.x>=IA&&Ne.x<=JA&&Ne.y>=cA&&Ne.y<=te&&Ne!==g&&Ne!==c&&dC(f,$,S,oA,b,rA,Ne.x,Ne.y)&&Ts(Ne.prev,Ne,Ne.next)>=0))return!1;Ne=Ne.nextZ}for(;Re&&Re.z>=Ce;){if(Re.x>=IA&&Re.x<=JA&&Re.y>=cA&&Re.y<=te&&Re!==g&&Re!==c&&dC(f,$,S,oA,b,rA,Re.x,Re.y)&&Ts(Re.prev,Re,Re.next)>=0)return!1;Re=Re.prevZ}for(;Ne&&Ne.z<=Me;){if(Ne.x>=IA&&Ne.x<=JA&&Ne.y>=cA&&Ne.y<=te&&Ne!==g&&Ne!==c&&dC(f,$,S,oA,b,rA,Ne.x,Ne.y)&&Ts(Ne.prev,Ne,Ne.next)>=0)return!1;Ne=Ne.nextZ}return!0}function KC(P,e,i){let o=P;do{const g=o.prev,C=o.next.next;!sB(g,C)&&gB(g,o,o.next,C)&&uC(g,C)&&uC(C,g)&&(e.push(g.i/i|0),e.push(o.i/i|0),e.push(C.i/i|0),IB(o),IB(o.next),o=P=C),o=o.next}while(o!==P);return hC(o)}function dc(P,e,i,o,g,C){let c=P;do{let f=c.next.next;for(;f!==c.prev;){if(c.i!==f.i&&tQ(c,f)){let S=pc(c,f);c=hC(c,c.next),S=hC(S,S.next),rB(c,e,i,o,g,C,0),rB(S,e,i,o,g,C,0);return}f=f.next}c=c.next}while(c!==P)}function lC(P,e,i,o){const g=[];let C,c,f,S,b;for(C=0,c=e.length;C<c;C++)f=e[C]*o,S=C<c-1?e[C+1]*o:P.length,b=lc(P,f,S,o,!1),b===b.next&&(b.steiner=!0),g.push(JC(b));for(g.sort(XE),C=0;C<g.length;C++)i=uc(g[C],i);return i}function XE(P,e){return P.x-e.x}function uc(P,e){const i=zE(P,e);if(!i)return e;const o=pc(i,P);return hC(o,o.next),hC(i,i.next)}function zE(P,e){let i=e,o=-1/0,g;const C=P.x,c=P.y;do{if(c<=i.y&&c>=i.next.y&&i.next.y!==i.y){const rA=i.x+(c-i.y)*(i.next.x-i.x)/(i.next.y-i.y);if(rA<=C&&rA>o&&(o=rA,g=i.x<i.next.x?i:i.next,rA===C))return g}i=i.next}while(i!==e);if(!g)return null;const f=g,S=g.x,b=g.y;let $=1/0,oA;i=g;do C>=i.x&&i.x>=S&&C!==i.x&&dC(c<b?C:o,c,S,b,c<b?o:C,c,i.x,i.y)&&(oA=Math.abs(c-i.y)/(C-i.x),uC(i,P)&&(oA<$||oA===$&&(i.x>g.x||i.x===g.x&&$E(g,i)))&&(g=i,$=oA)),i=i.next;while(i!==f);return g}function $E(P,e){return Ts(P.prev,P,e.prev)<0&&Ts(e.next,P,P.next)<0}function AQ(P,e,i,o){let g=P;do g.z===0&&(g.z=LI(g.x,g.y,e,i,o)),g.prevZ=g.prev,g.nextZ=g.next,g=g.next;while(g!==P);g.prevZ.nextZ=null,g.prevZ=null,eQ(g)}function eQ(P){let e,i,o,g,C,c,f,S,b=1;do{for(i=P,P=null,C=null,c=0;i;){for(c++,o=i,f=0,e=0;e<b&&(f++,o=o.nextZ,!!o);e++);for(S=b;f>0||S>0&&o;)f!==0&&(S===0||!o||i.z<=o.z)?(g=i,i=i.nextZ,f--):(g=o,o=o.nextZ,S--),C?C.nextZ=g:P=g,g.prevZ=C,C=g;i=o}C.nextZ=null,b*=2}while(c>1);return P}function LI(P,e,i,o,g){return P=(P-i)*g|0,e=(e-o)*g|0,P=(P|P<<8)&16711935,P=(P|P<<4)&252645135,P=(P|P<<2)&858993459,P=(P|P<<1)&1431655765,e=(e|e<<8)&16711935,e=(e|e<<4)&252645135,e=(e|e<<2)&858993459,e=(e|e<<1)&1431655765,P|e<<1}function JC(P){let e=P,i=P;do(e.x<i.x||e.x===i.x&&e.y<i.y)&&(i=e),e=e.next;while(e!==P);return i}function dC(P,e,i,o,g,C,c,f){return(g-c)*(e-f)>=(P-c)*(C-f)&&(P-c)*(o-f)>=(i-c)*(e-f)&&(i-c)*(C-f)>=(g-c)*(o-f)}function tQ(P,e){return P.next.i!==e.i&&P.prev.i!==e.i&&!fc(P,e)&&(uC(P,e)&&uC(e,P)&&dl(P,e)&&(Ts(P.prev,P,e.prev)||Ts(P,e.prev,e))||sB(P,e)&&Ts(P.prev,P,P.next)>0&&Ts(e.prev,e,e.next)>0)}function Ts(P,e,i){return(e.y-P.y)*(i.x-e.x)-(e.x-P.x)*(i.y-e.y)}function sB(P,e){return P.x===e.x&&P.y===e.y}function gB(P,e,i,o){const g=aB(Ts(P,e,i)),C=aB(Ts(P,e,o)),c=aB(Ts(i,o,P)),f=aB(Ts(i,o,e));return!!(g!==C&&c!==f||g===0&&hE(P,i,e)||C===0&&hE(P,o,e)||c===0&&hE(i,P,o)||f===0&&hE(i,e,o))}function hE(P,e,i){return e.x<=Math.max(P.x,i.x)&&e.x>=Math.min(P.x,i.x)&&e.y<=Math.max(P.y,i.y)&&e.y>=Math.min(P.y,i.y)}function aB(P){return P>0?1:P<0?-1:0}function fc(P,e){let i=P;do{if(i.i!==P.i&&i.next.i!==P.i&&i.i!==e.i&&i.next.i!==e.i&&gB(i,i.next,P,e))return!0;i=i.next}while(i!==P);return!1}function uC(P,e){return Ts(P.prev,P,P.next)<0?Ts(P,e,P.next)>=0&&Ts(P,P.prev,e)>=0:Ts(P,e,P.prev)<0||Ts(P,P.next,e)<0}function dl(P,e){let i=P,o=!1;const g=(P.x+e.x)/2,C=(P.y+e.y)/2;do i.y>C!=i.next.y>C&&i.next.y!==i.y&&g<(i.next.x-i.x)*(C-i.y)/(i.next.y-i.y)+i.x&&(o=!o),i=i.next;while(i!==P);return o}function pc(P,e){const i=new iQ(P.i,P.x,P.y),o=new iQ(e.i,e.x,e.y),g=P.next,C=e.prev;return P.next=e,e.prev=P,i.next=g,g.prev=i,o.next=i,i.prev=o,C.next=o,o.prev=C,o}function mc(P,e,i,o){const g=new iQ(P,e,i);return o?(g.next=o.next,g.prev=o,o.next.prev=g,o.next=g):(g.prev=g,g.next=g),g}function IB(P){P.next.prev=P.prev,P.prev.next=P.next,P.prevZ&&(P.prevZ.nextZ=P.nextZ),P.nextZ&&(P.nextZ.prevZ=P.prevZ)}function iQ(P,e,i){this.i=P,this.x=e,this.y=i,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function ul(P,e,i,o){let g=0;for(let C=e,c=i-o;C<i;C+=o)g+=(P[c]-P[C])*(P[C+1]+P[c+1]),c=C;return g}class lI{static area(e){const i=e.length;let o=0;for(let g=i-1,C=0;C<i;g=C++)o+=e[g].x*e[C].y-e[C].x*e[g].y;return o*.5}static isClockWise(e){return lI.area(e)<0}static triangulateShape(e,i){const o=[],g=[],C=[];lE(e),nQ(o,e);let c=e.length;i.forEach(lE);for(let S=0;S<i.length;S++)g.push(c),c+=i[S].length,nQ(o,i[S]);const f=hl.triangulate(o,g);for(let S=0;S<f.length;S+=3)C.push(f.slice(S,S+3));return C}}function lE(P){const e=P.length;e>2&&P[e-1].equals(P[0])&&P.pop()}function nQ(P,e){for(let i=0;i<e.length;i++)P.push(e[i].x),P.push(e[i].y)}class CB extends Rn{constructor(e=new cC([new ni(.5,.5),new ni(-.5,.5),new ni(-.5,-.5),new ni(.5,-.5)]),i={}){super(),this.type="ExtrudeGeometry",this.parameters={shapes:e,options:i},e=Array.isArray(e)?e:[e];const o=this,g=[],C=[];for(let f=0,S=e.length;f<S;f++){const b=e[f];c(b)}this.setAttribute("position",new he(g,3)),this.setAttribute("uv",new he(C,2)),this.computeVertexNormals();function c(f){const S=[],b=i.curveSegments!==void 0?i.curveSegments:12,$=i.steps!==void 0?i.steps:1,oA=i.depth!==void 0?i.depth:1;let rA=i.bevelEnabled!==void 0?i.bevelEnabled:!0,IA=i.bevelThickness!==void 0?i.bevelThickness:.2,cA=i.bevelSize!==void 0?i.bevelSize:IA-.1,JA=i.bevelOffset!==void 0?i.bevelOffset:0,te=i.bevelSegments!==void 0?i.bevelSegments:3;const Ce=i.extrudePath,Me=i.UVGenerator!==void 0?i.UVGenerator:Dc;let Re,Ne=!1,wt,St,Yt,xt;Ce&&(Re=Ce.getSpacedPoints($),Ne=!0,rA=!1,wt=Ce.computeFrenetFrames($,!1),St=new Qe,Yt=new Qe,xt=new Qe),rA||(te=0,IA=0,cA=0,JA=0);const Li=f.extractPoints(b);let Wi=Li.shape;const hn=Li.holes;if(!lI.isClockWise(Wi)){Wi=Wi.reverse();for(let Vi=0,Cn=hn.length;Vi<Cn;Vi++){const Bn=hn[Vi];lI.isClockWise(Bn)&&(hn[Vi]=Bn.reverse())}}const Qr=lI.triangulateShape(Wi,hn),ur=Wi;for(let Vi=0,Cn=hn.length;Vi<Cn;Vi++){const Bn=hn[Vi];Wi=Wi.concat(Bn)}function cs(Vi,Cn,Bn){return Cn||console.error("THREE.ExtrudeGeometry: vec does not exist"),Vi.clone().addScaledVector(Cn,Bn)}const Ms=Wi.length,ua=Qr.length;function _a(Vi,Cn,Bn){let Do,_n,yr;const Wr=Vi.x-Cn.x,hs=Vi.y-Cn.y,Mg=Bn.x-Vi.x,Bg=Bn.y-Vi.y,eC=Wr*Wr+hs*hs,tC=Wr*Bg-hs*Mg;if(Math.abs(tC)>Number.EPSILON){const Pa=Math.sqrt(eC),HI=Math.sqrt(Mg*Mg+Bg*Bg),TB=Cn.x-hs/Pa,KB=Cn.y+Wr/Pa,LE=Bn.x-Bg/HI,NQ=Bn.y+Mg/HI,JB=((LE-TB)*Bg-(NQ-KB)*Mg)/(Wr*Bg-hs*Mg);Do=TB+Wr*JB-Vi.x,_n=KB+hs*JB-Vi.y;const UQ=Do*Do+_n*_n;if(UQ<=2)return new ni(Do,_n);yr=Math.sqrt(UQ/2)}else{let Pa=!1;Wr>Number.EPSILON?Mg>Number.EPSILON&&(Pa=!0):Wr<-Number.EPSILON?Mg<-Number.EPSILON&&(Pa=!0):Math.sign(hs)===Math.sign(Bg)&&(Pa=!0),Pa?(Do=-hs,_n=Wr,yr=Math.sqrt(eC)):(Do=Wr,_n=hs,yr=Math.sqrt(eC/2))}return new ni(Do/yr,_n/yr)}const Ks=[];for(let Vi=0,Cn=ur.length,Bn=Cn-1,Do=Vi+1;Vi<Cn;Vi++,Bn++,Do++)Bn===Cn&&(Bn=0),Do===Cn&&(Do=0),Ks[Vi]=_a(ur[Vi],ur[Bn],ur[Do]);const tg=[];let Vs,nI=Ks.concat();for(let Vi=0,Cn=hn.length;Vi<Cn;Vi++){const Bn=hn[Vi];Vs=[];for(let Do=0,_n=Bn.length,yr=_n-1,Wr=Do+1;Do<_n;Do++,yr++,Wr++)yr===_n&&(yr=0),Wr===_n&&(Wr=0),Vs[Do]=_a(Bn[Do],Bn[yr],Bn[Wr]);tg.push(Vs),nI=nI.concat(Vs)}for(let Vi=0;Vi<te;Vi++){const Cn=Vi/te,Bn=IA*Math.cos(Cn*Math.PI/2),Do=cA*Math.sin(Cn*Math.PI/2)+JA;for(let _n=0,yr=ur.length;_n<yr;_n++){const Wr=cs(ur[_n],Ks[_n],Do);YI(Wr.x,Wr.y,-Bn)}for(let _n=0,yr=hn.length;_n<yr;_n++){const Wr=hn[_n];Vs=tg[_n];for(let hs=0,Mg=Wr.length;hs<Mg;hs++){const Bg=cs(Wr[hs],Vs[hs],Do);YI(Bg.x,Bg.y,-Bn)}}}const vC=cA+JA;for(let Vi=0;Vi<Ms;Vi++){const Cn=rA?cs(Wi[Vi],nI[Vi],vC):Wi[Vi];Ne?(Yt.copy(wt.normals[0]).multiplyScalar(Cn.x),St.copy(wt.binormals[0]).multiplyScalar(Cn.y),xt.copy(Re[0]).add(Yt).add(St),YI(xt.x,xt.y,xt.z)):YI(Cn.x,Cn.y,0)}for(let Vi=1;Vi<=$;Vi++)for(let Cn=0;Cn<Ms;Cn++){const Bn=rA?cs(Wi[Cn],nI[Cn],vC):Wi[Cn];Ne?(Yt.copy(wt.normals[Vi]).multiplyScalar(Bn.x),St.copy(wt.binormals[Vi]).multiplyScalar(Bn.y),xt.copy(Re[Vi]).add(Yt).add(St),YI(xt.x,xt.y,xt.z)):YI(Bn.x,Bn.y,oA/$*Vi)}for(let Vi=te-1;Vi>=0;Vi--){const Cn=Vi/te,Bn=IA*Math.cos(Cn*Math.PI/2),Do=cA*Math.sin(Cn*Math.PI/2)+JA;for(let _n=0,yr=ur.length;_n<yr;_n++){const Wr=cs(ur[_n],Ks[_n],Do);YI(Wr.x,Wr.y,oA+Bn)}for(let _n=0,yr=hn.length;_n<yr;_n++){const Wr=hn[_n];Vs=tg[_n];for(let hs=0,Mg=Wr.length;hs<Mg;hs++){const Bg=cs(Wr[hs],Vs[hs],Do);Ne?YI(Bg.x,Bg.y+Re[$-1].y,Re[$-1].x+Bn):YI(Bg.x,Bg.y,oA+Bn)}}}NC(),NE();function NC(){const Vi=g.length/3;if(rA){let Cn=0,Bn=Ms*Cn;for(let Do=0;Do<ua;Do++){const _n=Qr[Do];UE(_n[2]+Bn,_n[1]+Bn,_n[0]+Bn)}Cn=$+te*2,Bn=Ms*Cn;for(let Do=0;Do<ua;Do++){const _n=Qr[Do];UE(_n[0]+Bn,_n[1]+Bn,_n[2]+Bn)}}else{for(let Cn=0;Cn<ua;Cn++){const Bn=Qr[Cn];UE(Bn[2],Bn[1],Bn[0])}for(let Cn=0;Cn<ua;Cn++){const Bn=Qr[Cn];UE(Bn[0]+Ms*$,Bn[1]+Ms*$,Bn[2]+Ms*$)}}o.addGroup(Vi,g.length/3-Vi,0)}function NE(){const Vi=g.length/3;let Cn=0;yh(ur,Cn),Cn+=ur.length;for(let Bn=0,Do=hn.length;Bn<Do;Bn++){const _n=hn[Bn];yh(_n,Cn),Cn+=_n.length}o.addGroup(Vi,g.length/3-Vi,1)}function yh(Vi,Cn){let Bn=Vi.length;for(;--Bn>=0;){const Do=Bn;let _n=Bn-1;_n<0&&(_n=Vi.length-1);for(let yr=0,Wr=$+te*2;yr<Wr;yr++){const hs=Ms*yr,Mg=Ms*(yr+1),Bg=Cn+Do+hs,eC=Cn+_n+hs,tC=Cn+_n+Mg,Pa=Cn+Do+Mg;_B(Bg,eC,tC,Pa)}}}function YI(Vi,Cn,Bn){S.push(Vi),S.push(Cn),S.push(Bn)}function UE(Vi,Cn,Bn){oI(Vi),oI(Cn),oI(Bn);const Do=g.length/3,_n=Me.generateTopUV(o,g,Do-3,Do-2,Do-1);uI(_n[0]),uI(_n[1]),uI(_n[2])}function _B(Vi,Cn,Bn,Do){oI(Vi),oI(Cn),oI(Do),oI(Cn),oI(Bn),oI(Do);const _n=g.length/3,yr=Me.generateSideWallUV(o,g,_n-6,_n-3,_n-2,_n-1);uI(yr[0]),uI(yr[1]),uI(yr[3]),uI(yr[1]),uI(yr[2]),uI(yr[3])}function oI(Vi){g.push(S[Vi*3+0]),g.push(S[Vi*3+1]),g.push(S[Vi*3+2])}function uI(Vi){C.push(Vi.x),C.push(Vi.y)}}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){const e=super.toJSON(),i=this.parameters.shapes,o=this.parameters.options;return yc(i,o,e)}static fromJSON(e,i){const o=[];for(let C=0,c=e.shapes.length;C<c;C++){const f=i[e.shapes[C]];o.push(f)}const g=e.options.extrudePath;return g!==void 0&&(e.options.extrudePath=new WE[g.type]().fromJSON(g)),new CB(o,e.options)}}const Dc={generateTopUV:function(P,e,i,o,g){const C=e[i*3],c=e[i*3+1],f=e[o*3],S=e[o*3+1],b=e[g*3],$=e[g*3+1];return[new ni(C,c),new ni(f,S),new ni(b,$)]},generateSideWallUV:function(P,e,i,o,g,C){const c=e[i*3],f=e[i*3+1],S=e[i*3+2],b=e[o*3],$=e[o*3+1],oA=e[o*3+2],rA=e[g*3],IA=e[g*3+1],cA=e[g*3+2],JA=e[C*3],te=e[C*3+1],Ce=e[C*3+2];return Math.abs(f-$)<Math.abs(c-b)?[new ni(c,1-S),new ni(b,1-oA),new ni(rA,1-cA),new ni(JA,1-Ce)]:[new ni(f,1-S),new ni($,1-oA),new ni(IA,1-cA),new ni(te,1-Ce)]}};function yc(P,e,i){if(i.shapes=[],Array.isArray(P))for(let o=0,g=P.length;o<g;o++){const C=P[o];i.shapes.push(C.uuid)}else i.shapes.push(P.uuid);return i.options=Object.assign({},e),e.extrudePath!==void 0&&(i.options.extrudePath=e.extrudePath.toJSON()),i}class BB extends QC{constructor(e=1,i=0){const o=(1+Math.sqrt(5))/2,g=[-1,o,0,1,o,0,-1,-o,0,1,-o,0,0,-1,o,0,1,o,0,-1,-o,0,1,-o,o,0,-1,o,0,1,-o,0,-1,-o,0,1],C=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1];super(g,C,e,i),this.type="IcosahedronGeometry",this.parameters={radius:e,detail:i}}static fromJSON(e){return new BB(e.radius,e.detail)}}class YC extends QC{constructor(e=1,i=0){const o=[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],g=[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2];super(o,g,e,i),this.type="OctahedronGeometry",this.parameters={radius:e,detail:i}}static fromJSON(e){return new YC(e.radius,e.detail)}}class EB extends Rn{constructor(e=1,i=1,o=1,g=1){super(),this.type="PlaneGeometry",this.parameters={width:e,height:i,widthSegments:o,heightSegments:g};const C=e/2,c=i/2,f=Math.floor(o),S=Math.floor(g),b=f+1,$=S+1,oA=e/f,rA=i/S,IA=[],cA=[],JA=[],te=[];for(let Ce=0;Ce<$;Ce++){const Me=Ce*rA-c;for(let Re=0;Re<b;Re++){const Ne=Re*oA-C;cA.push(Ne,-Me,0),JA.push(0,0,1),te.push(Re/f),te.push(1-Ce/S)}}for(let Ce=0;Ce<S;Ce++)for(let Me=0;Me<f;Me++){const Re=Me+b*Ce,Ne=Me+b*(Ce+1),wt=Me+1+b*(Ce+1),St=Me+1+b*Ce;IA.push(Re,Ne,St),IA.push(Ne,wt,St)}this.setIndex(IA),this.setAttribute("position",new he(cA,3)),this.setAttribute("normal",new he(JA,3)),this.setAttribute("uv",new he(te,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new EB(e.width,e.height,e.widthSegments,e.heightSegments)}}class QB extends Rn{constructor(e=.5,i=1,o=32,g=1,C=0,c=Math.PI*2){super(),this.type="RingGeometry",this.parameters={innerRadius:e,outerRadius:i,thetaSegments:o,phiSegments:g,thetaStart:C,thetaLength:c},o=Math.max(3,o),g=Math.max(1,g);const f=[],S=[],b=[],$=[];let oA=e;const rA=(i-e)/g,IA=new Qe,cA=new ni;for(let JA=0;JA<=g;JA++){for(let te=0;te<=o;te++){const Ce=C+te/o*c;IA.x=oA*Math.cos(Ce),IA.y=oA*Math.sin(Ce),S.push(IA.x,IA.y,IA.z),b.push(0,0,1),cA.x=(IA.x/i+1)/2,cA.y=(IA.y/i+1)/2,$.push(cA.x,cA.y)}oA+=rA}for(let JA=0;JA<g;JA++){const te=JA*(o+1);for(let Ce=0;Ce<o;Ce++){const Me=Ce+te,Re=Me,Ne=Me+o+1,wt=Me+o+2,St=Me+1;f.push(Re,Ne,St),f.push(Ne,wt,St)}}this.setIndex(f),this.setAttribute("position",new he(S,3)),this.setAttribute("normal",new he(b,3)),this.setAttribute("uv",new he($,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new QB(e.innerRadius,e.outerRadius,e.thetaSegments,e.phiSegments,e.thetaStart,e.thetaLength)}}class cB extends Rn{constructor(e=new cC([new ni(0,.5),new ni(-.5,-.5),new ni(.5,-.5)]),i=12){super(),this.type="ShapeGeometry",this.parameters={shapes:e,curveSegments:i};const o=[],g=[],C=[],c=[];let f=0,S=0;if(Array.isArray(e)===!1)b(e);else for(let $=0;$<e.length;$++)b(e[$]),this.addGroup(f,S,$),f+=S,S=0;this.setIndex(o),this.setAttribute("position",new he(g,3)),this.setAttribute("normal",new he(C,3)),this.setAttribute("uv",new he(c,2));function b($){const oA=g.length/3,rA=$.extractPoints(i);let IA=rA.shape;const cA=rA.holes;lI.isClockWise(IA)===!1&&(IA=IA.reverse());for(let te=0,Ce=cA.length;te<Ce;te++){const Me=cA[te];lI.isClockWise(Me)===!0&&(cA[te]=Me.reverse())}const JA=lI.triangulateShape(IA,cA);for(let te=0,Ce=cA.length;te<Ce;te++){const Me=cA[te];IA=IA.concat(Me)}for(let te=0,Ce=IA.length;te<Ce;te++){const Me=IA[te];g.push(Me.x,Me.y,0),C.push(0,0,1),c.push(Me.x,Me.y)}for(let te=0,Ce=JA.length;te<Ce;te++){const Me=JA[te],Re=Me[0]+oA,Ne=Me[1]+oA,wt=Me[2]+oA;o.push(Re,Ne,wt),S+=3}}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){const e=super.toJSON(),i=this.parameters.shapes;return wc(i,e)}static fromJSON(e,i){const o=[];for(let g=0,C=e.shapes.length;g<C;g++){const c=i[e.shapes[g]];o.push(c)}return new cB(o,e.curveSegments)}}function wc(P,e){if(e.shapes=[],Array.isArray(P))for(let i=0,o=P.length;i<o;i++){const g=P[i];e.shapes.push(g.uuid)}else e.shapes.push(P.uuid);return e}class dI extends Rn{constructor(e=1,i=32,o=16,g=0,C=Math.PI*2,c=0,f=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:e,widthSegments:i,heightSegments:o,phiStart:g,phiLength:C,thetaStart:c,thetaLength:f},i=Math.max(3,Math.floor(i)),o=Math.max(2,Math.floor(o));const S=Math.min(c+f,Math.PI);let b=0;const $=[],oA=new Qe,rA=new Qe,IA=[],cA=[],JA=[],te=[];for(let Ce=0;Ce<=o;Ce++){const Me=[],Re=Ce/o;let Ne=0;Ce===0&&c===0?Ne=.5/i:Ce===o&&S===Math.PI&&(Ne=-.5/i);for(let wt=0;wt<=i;wt++){const St=wt/i;oA.x=-e*Math.cos(g+St*C)*Math.sin(c+Re*f),oA.y=e*Math.cos(c+Re*f),oA.z=e*Math.sin(g+St*C)*Math.sin(c+Re*f),cA.push(oA.x,oA.y,oA.z),rA.copy(oA).normalize(),JA.push(rA.x,rA.y,rA.z),te.push(St+Ne,1-Re),Me.push(b++)}$.push(Me)}for(let Ce=0;Ce<o;Ce++)for(let Me=0;Me<i;Me++){const Re=$[Ce][Me+1],Ne=$[Ce][Me],wt=$[Ce+1][Me],St=$[Ce+1][Me+1];(Ce!==0||c>0)&&IA.push(Re,Ne,St),(Ce!==o-1||S<Math.PI)&&IA.push(Ne,wt,St)}this.setIndex(IA),this.setAttribute("position",new he(cA,3)),this.setAttribute("normal",new he(JA,3)),this.setAttribute("uv",new he(te,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new dI(e.radius,e.widthSegments,e.heightSegments,e.phiStart,e.phiLength,e.thetaStart,e.thetaLength)}}class Os extends QC{constructor(e=1,i=0){const o=[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],g=[2,1,0,0,3,2,1,3,0,2,3,1];super(o,g,e,i),this.type="TetrahedronGeometry",this.parameters={radius:e,detail:i}}static fromJSON(e){return new Os(e.radius,e.detail)}}class qs extends Rn{constructor(e=1,i=.4,o=12,g=48,C=Math.PI*2){super(),this.type="TorusGeometry",this.parameters={radius:e,tube:i,radialSegments:o,tubularSegments:g,arc:C},o=Math.floor(o),g=Math.floor(g);const c=[],f=[],S=[],b=[],$=new Qe,oA=new Qe,rA=new Qe;for(let IA=0;IA<=o;IA++)for(let cA=0;cA<=g;cA++){const JA=cA/g*C,te=IA/o*Math.PI*2;oA.x=(e+i*Math.cos(te))*Math.cos(JA),oA.y=(e+i*Math.cos(te))*Math.sin(JA),oA.z=i*Math.sin(te),f.push(oA.x,oA.y,oA.z),$.x=e*Math.cos(JA),$.y=e*Math.sin(JA),rA.subVectors(oA,$).normalize(),S.push(rA.x,rA.y,rA.z),b.push(cA/g),b.push(IA/o)}for(let IA=1;IA<=o;IA++)for(let cA=1;cA<=g;cA++){const JA=(g+1)*IA+cA-1,te=(g+1)*(IA-1)+cA-1,Ce=(g+1)*(IA-1)+cA,Me=(g+1)*IA+cA;c.push(JA,te,Me),c.push(te,Ce,Me)}this.setIndex(c),this.setAttribute("position",new he(f,3)),this.setAttribute("normal",new he(S,3)),this.setAttribute("uv",new he(b,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new qs(e.radius,e.tube,e.radialSegments,e.tubularSegments,e.arc)}}class fC extends Rn{constructor(e=1,i=.4,o=64,g=8,C=2,c=3){super(),this.type="TorusKnotGeometry",this.parameters={radius:e,tube:i,tubularSegments:o,radialSegments:g,p:C,q:c},o=Math.floor(o),g=Math.floor(g);const f=[],S=[],b=[],$=[],oA=new Qe,rA=new Qe,IA=new Qe,cA=new Qe,JA=new Qe,te=new Qe,Ce=new Qe;for(let Re=0;Re<=o;++Re){const Ne=Re/o*C*Math.PI*2;Me(Ne,C,c,e,IA),Me(Ne+.01,C,c,e,cA),te.subVectors(cA,IA),Ce.addVectors(cA,IA),JA.crossVectors(te,Ce),Ce.crossVectors(JA,te),JA.normalize(),Ce.normalize();for(let wt=0;wt<=g;++wt){const St=wt/g*Math.PI*2,Yt=-i*Math.cos(St),xt=i*Math.sin(St);oA.x=IA.x+(Yt*Ce.x+xt*JA.x),oA.y=IA.y+(Yt*Ce.y+xt*JA.y),oA.z=IA.z+(Yt*Ce.z+xt*JA.z),S.push(oA.x,oA.y,oA.z),rA.subVectors(oA,IA).normalize(),b.push(rA.x,rA.y,rA.z),$.push(Re/o),$.push(wt/g)}}for(let Re=1;Re<=o;Re++)for(let Ne=1;Ne<=g;Ne++){const wt=(g+1)*(Re-1)+(Ne-1),St=(g+1)*Re+(Ne-1),Yt=(g+1)*Re+Ne,xt=(g+1)*(Re-1)+Ne;f.push(wt,St,xt),f.push(St,Yt,xt)}this.setIndex(f),this.setAttribute("position",new he(S,3)),this.setAttribute("normal",new he(b,3)),this.setAttribute("uv",new he($,2));function Me(Re,Ne,wt,St,Yt){const xt=Math.cos(Re),Li=Math.sin(Re),Wi=wt/Ne*Re,hn=Math.cos(Wi);Yt.x=St*(2+hn)*.5*xt,Yt.y=St*(2+hn)*Li*.5,Yt.z=St*Math.sin(Wi)*.5}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new fC(e.radius,e.tube,e.tubularSegments,e.radialSegments,e.p,e.q)}}class dE extends Rn{constructor(e=new Qc(new Qe(-1,-1,0),new Qe(-1,1,0),new Qe(1,1,0)),i=64,o=1,g=8,C=!1){super(),this.type="TubeGeometry",this.parameters={path:e,tubularSegments:i,radius:o,radialSegments:g,closed:C};const c=e.computeFrenetFrames(i,C);this.tangents=c.tangents,this.normals=c.normals,this.binormals=c.binormals;const f=new Qe,S=new Qe,b=new ni;let $=new Qe;const oA=[],rA=[],IA=[],cA=[];JA(),this.setIndex(cA),this.setAttribute("position",new he(oA,3)),this.setAttribute("normal",new he(rA,3)),this.setAttribute("uv",new he(IA,2));function JA(){for(let Re=0;Re<i;Re++)te(Re);te(C===!1?i:0),Me(),Ce()}function te(Re){$=e.getPointAt(Re/i,$);const Ne=c.normals[Re],wt=c.binormals[Re];for(let St=0;St<=g;St++){const Yt=St/g*Math.PI*2,xt=Math.sin(Yt),Li=-Math.cos(Yt);S.x=Li*Ne.x+xt*wt.x,S.y=Li*Ne.y+xt*wt.y,S.z=Li*Ne.z+xt*wt.z,S.normalize(),rA.push(S.x,S.y,S.z),f.x=$.x+o*S.x,f.y=$.y+o*S.y,f.z=$.z+o*S.z,oA.push(f.x,f.y,f.z)}}function Ce(){for(let Re=1;Re<=i;Re++)for(let Ne=1;Ne<=g;Ne++){const wt=(g+1)*(Re-1)+(Ne-1),St=(g+1)*Re+(Ne-1),Yt=(g+1)*Re+Ne,xt=(g+1)*(Re-1)+Ne;cA.push(wt,St,xt),cA.push(St,Yt,xt)}}function Me(){for(let Re=0;Re<=i;Re++)for(let Ne=0;Ne<=g;Ne++)b.x=Re/i,b.y=Ne/g,IA.push(b.x,b.y)}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}toJSON(){const e=super.toJSON();return e.path=this.parameters.path.toJSON(),e}static fromJSON(e){return new dE(new WE[e.path.type]().fromJSON(e.path),e.tubularSegments,e.radius,e.radialSegments,e.closed)}}class Mc extends Rn{constructor(e=null){if(super(),this.type="WireframeGeometry",this.parameters={geometry:e},e!==null){const i=[],o=new Set,g=new Qe,C=new Qe;if(e.index!==null){const c=e.attributes.position,f=e.index;let S=e.groups;S.length===0&&(S=[{start:0,count:f.count,materialIndex:0}]);for(let b=0,$=S.length;b<$;++b){const oA=S[b],rA=oA.start,IA=oA.count;for(let cA=rA,JA=rA+IA;cA<JA;cA+=3)for(let te=0;te<3;te++){const Ce=f.getX(cA+te),Me=f.getX(cA+(te+1)%3);g.fromBufferAttribute(c,Ce),C.fromBufferAttribute(c,Me),Sc(g,C,o)===!0&&(i.push(g.x,g.y,g.z),i.push(C.x,C.y,C.z))}}}else{const c=e.attributes.position;for(let f=0,S=c.count/3;f<S;f++)for(let b=0;b<3;b++){const $=3*f+b,oA=3*f+(b+1)%3;g.fromBufferAttribute(c,$),C.fromBufferAttribute(c,oA),Sc(g,C,o)===!0&&(i.push(g.x,g.y,g.z),i.push(C.x,C.y,C.z))}}this.setAttribute("position",new he(i,3))}}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}}function Sc(P,e,i){const o=`${P.x},${P.y},${P.z}-${e.x},${e.y},${e.z}`,g=`${e.x},${e.y},${e.z}-${P.x},${P.y},${P.z}`;return i.has(o)===!0||i.has(g)===!0?!1:(i.add(o),i.add(g),!0)}var Rc=Object.freeze({__proto__:null,BoxGeometry:ro,CapsuleGeometry:VE,CircleGeometry:ZE,ConeGeometry:jE,CylinderGeometry:oB,DodecahedronGeometry:No,EdgesGeometry:hc,ExtrudeGeometry:CB,IcosahedronGeometry:BB,LatheGeometry:QE,OctahedronGeometry:YC,PlaneGeometry:EB,PolyhedronGeometry:QC,RingGeometry:QB,ShapeGeometry:cB,SphereGeometry:dI,TetrahedronGeometry:Os,TorusGeometry:qs,TorusKnotGeometry:fC,TubeGeometry:dE,WireframeGeometry:Mc});class Gc extends Jt{constructor(e){super(),this.isShadowMaterial=!0,this.type="ShadowMaterial",this.color=new ht(0),this.transparent=!0,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.fog=e.fog,this}}class Fc extends Ni{constructor(e){super(e),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}}class oQ extends Jt{constructor(e){super(),this.isMeshStandardMaterial=!0,this.type="MeshStandardMaterial",this.defines={STANDARD:""},this.color=new ht(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ke,this.normalScale=new ni(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new w,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={STANDARD:""},this.color.copy(e.color),this.roughness=e.roughness,this.metalness=e.metalness,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.roughnessMap=e.roughnessMap,this.metalnessMap=e.metalnessMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.envMapIntensity=e.envMapIntensity,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class vc extends oQ{constructor(e){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new ni(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return no(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(i){this.ior=(1+.4*i)/(1-.4*i)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new ht(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new ht(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new ht(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(e)}get anisotropy(){return this._anisotropy}set anisotropy(e){this._anisotropy>0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class Nc extends Jt{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new ht(16777215),this.specular=new ht(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ke,this.normalScale=new ni(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new w,this.combine=sn,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class Uc extends Jt{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new ht(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ke,this.normalScale=new ni(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class Lc extends Jt{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ke,this.normalScale=new ni(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class xc extends Jt{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new ht(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ht(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ke,this.normalScale=new ni(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new w,this.combine=sn,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class bc extends Jt{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=LA,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class kc extends Jt{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}class _c extends Jt{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new ht(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Ke,this.normalScale=new ni(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this.fog=e.fog,this}}class Tc extends ia{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function pC(P,e,i){return!P||!i&&P.constructor===e?P:typeof e.BYTES_PER_ELEMENT=="number"?new e(P):Array.prototype.slice.call(P)}function Kc(P){return ArrayBuffer.isView(P)&&!(P instanceof DataView)}function Jc(P){function e(g,C){return P[g]-P[C]}const i=P.length,o=new Array(i);for(let g=0;g!==i;++g)o[g]=g;return o.sort(e),o}function rQ(P,e,i){const o=P.length,g=new P.constructor(o);for(let C=0,c=0;c!==o;++C){const f=i[C]*e;for(let S=0;S!==e;++S)g[c++]=P[f+S]}return g}function sQ(P,e,i,o){let g=1,C=P[0];for(;C!==void 0&&C[o]===void 0;)C=P[g++];if(C===void 0)return;let c=C[o];if(c!==void 0)if(Array.isArray(c))do c=C[o],c!==void 0&&(e.push(C.time),i.push.apply(i,c)),C=P[g++];while(C!==void 0);else if(c.toArray!==void 0)do c=C[o],c!==void 0&&(e.push(C.time),c.toArray(i,i.length)),C=P[g++];while(C!==void 0);else do c=C[o],c!==void 0&&(e.push(C.time),i.push(c)),C=P[g++];while(C!==void 0)}function fl(P,e,i,o,g=30){const C=P.clone();C.name=e;const c=[];for(let S=0;S<C.tracks.length;++S){const b=C.tracks[S],$=b.getValueSize(),oA=[],rA=[];for(let IA=0;IA<b.times.length;++IA){const cA=b.times[IA]*g;if(!(cA<i||cA>=o)){oA.push(b.times[IA]);for(let JA=0;JA<$;++JA)rA.push(b.values[IA*$+JA])}}oA.length!==0&&(b.times=pC(oA,b.times.constructor),b.values=pC(rA,b.values.constructor),c.push(b))}C.tracks=c;let f=1/0;for(let S=0;S<C.tracks.length;++S)f>C.tracks[S].times[0]&&(f=C.tracks[S].times[0]);for(let S=0;S<C.tracks.length;++S)C.tracks[S].shift(-1*f);return C.resetDuration(),C}function pl(P,e=0,i=P,o=30){o<=0&&(o=30);const g=i.tracks.length,C=e/o;for(let c=0;c<g;++c){const f=i.tracks[c],S=f.ValueTypeName;if(S==="bool"||S==="string")continue;const b=P.tracks.find(function(Ce){return Ce.name===f.name&&Ce.ValueTypeName===S});if(b===void 0)continue;let $=0;const oA=f.getValueSize();f.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&($=oA/3);let rA=0;const IA=b.getValueSize();b.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(rA=IA/3);const cA=f.times.length-1;let JA;if(C<=f.times[0]){const Ce=$,Me=oA-$;JA=f.values.slice(Ce,Me)}else if(C>=f.times[cA]){const Ce=cA*oA+$,Me=Ce+oA-$;JA=f.values.slice(Ce,Me)}else{const Ce=f.createInterpolant(),Me=$,Re=oA-$;Ce.evaluate(C),JA=Ce.resultBuffer.slice(Me,Re)}S==="quaternion"&&new $o().fromArray(JA).normalize().conjugate().toArray(JA);const te=b.times.length;for(let Ce=0;Ce<te;++Ce){const Me=Ce*IA+rA;if(S==="quaternion")$o.multiplyQuaternionsFlat(b.values,Me,JA,0,b.values,Me);else{const Re=IA-rA*2;for(let Ne=0;Ne<Re;++Ne)b.values[Me+Ne]-=JA[Ne]}}}return P.blendMode=Jg,P}const ml={convertArray:pC,isTypedArray:Kc,getKeyframeOrder:Jc,sortedArray:rQ,flattenJSON:sQ,subclip:fl,makeClipAdditive:pl};class hB{constructor(e,i,o,g){this.parameterPositions=e,this._cachedIndex=0,this.resultBuffer=g!==void 0?g:new i.constructor(o),this.sampleValues=i,this.valueSize=o,this.settings=null,this.DefaultSettings_={}}evaluate(e){const i=this.parameterPositions;let o=this._cachedIndex,g=i[o],C=i[o-1];A:{e:{let c;t:{i:if(!(e<g)){for(let f=o+2;;){if(g===void 0){if(e<C)break i;return o=i.length,this._cachedIndex=o,this.copySampleValue_(o-1)}if(o===f)break;if(C=g,g=i[++o],e<g)break e}c=i.length;break t}if(!(e>=C)){const f=i[1];e<f&&(o=2,C=f);for(let S=o-2;;){if(C===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(o===S)break;if(g=C,C=i[--o-1],e>=C)break e}c=o,o=0;break t}break A}for(;o<c;){const f=o+c>>>1;e<i[f]?c=f:o=f+1}if(g=i[o],C=i[o-1],C===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(g===void 0)return o=i.length,this._cachedIndex=o,this.copySampleValue_(o-1)}this._cachedIndex=o,this.intervalChanged_(o,C,g)}return this.interpolate_(o,C,e,g)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(e){const i=this.resultBuffer,o=this.sampleValues,g=this.valueSize,C=e*g;for(let c=0;c!==g;++c)i[c]=o[C+c];return i}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}}class Yc extends hB{constructor(e,i,o,g){super(e,i,o,g),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:Sa,endingEnd:Sa}}intervalChanged_(e,i,o){const g=this.parameterPositions;let C=e-2,c=e+1,f=g[C],S=g[c];if(f===void 0)switch(this.getSettings_().endingStart){case In:C=e,f=2*i-o;break;case ii:C=g.length-2,f=i+g[C]-g[C+1];break;default:C=e,f=o}if(S===void 0)switch(this.getSettings_().endingEnd){case In:c=e,S=2*o-i;break;case ii:c=1,S=o+g[1]-g[0];break;default:c=e-1,S=i}const b=(o-i)*.5,$=this.valueSize;this._weightPrev=b/(i-f),this._weightNext=b/(S-o),this._offsetPrev=C*$,this._offsetNext=c*$}interpolate_(e,i,o,g){const C=this.resultBuffer,c=this.sampleValues,f=this.valueSize,S=e*f,b=S-f,$=this._offsetPrev,oA=this._offsetNext,rA=this._weightPrev,IA=this._weightNext,cA=(o-i)/(g-i),JA=cA*cA,te=JA*cA,Ce=-rA*te+2*rA*JA-rA*cA,Me=(1+rA)*te+(-1.5-2*rA)*JA+(-.5+rA)*cA+1,Re=(-1-IA)*te+(1.5+IA)*JA+.5*cA,Ne=IA*te-IA*JA;for(let wt=0;wt!==f;++wt)C[wt]=Ce*c[$+wt]+Me*c[b+wt]+Re*c[S+wt]+Ne*c[oA+wt];return C}}class gQ extends hB{constructor(e,i,o,g){super(e,i,o,g)}interpolate_(e,i,o,g){const C=this.resultBuffer,c=this.sampleValues,f=this.valueSize,S=e*f,b=S-f,$=(o-i)/(g-i),oA=1-$;for(let rA=0;rA!==f;++rA)C[rA]=c[b+rA]*oA+c[S+rA]*$;return C}}class Hc extends hB{constructor(e,i,o,g){super(e,i,o,g)}interpolate_(e){return this.copySampleValue_(e-1)}}class tI{constructor(e,i,o,g){if(e===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(i===void 0||i.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+e);this.name=e,this.times=pC(i,this.TimeBufferType),this.values=pC(o,this.ValueBufferType),this.setInterpolation(g||this.DefaultInterpolation)}static toJSON(e){const i=e.constructor;let o;if(i.toJSON!==this.toJSON)o=i.toJSON(e);else{o={name:e.name,times:pC(e.times,Array),values:pC(e.values,Array)};const g=e.getInterpolation();g!==e.DefaultInterpolation&&(o.interpolation=g)}return o.type=e.ValueTypeName,o}InterpolantFactoryMethodDiscrete(e){return new Hc(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodLinear(e){return new gQ(this.times,this.values,this.getValueSize(),e)}InterpolantFactoryMethodSmooth(e){return new Yc(this.times,this.values,this.getValueSize(),e)}setInterpolation(e){let i;switch(e){case Ma:i=this.InterpolantFactoryMethodDiscrete;break;case gI:i=this.InterpolantFactoryMethodLinear;break;case Cr:i=this.InterpolantFactoryMethodSmooth;break}if(i===void 0){const o="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(e!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(o);return console.warn("THREE.KeyframeTrack:",o),this}return this.createInterpolant=i,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return Ma;case this.InterpolantFactoryMethodLinear:return gI;case this.InterpolantFactoryMethodSmooth:return Cr}}getValueSize(){return this.values.length/this.times.length}shift(e){if(e!==0){const i=this.times;for(let o=0,g=i.length;o!==g;++o)i[o]+=e}return this}scale(e){if(e!==1){const i=this.times;for(let o=0,g=i.length;o!==g;++o)i[o]*=e}return this}trim(e,i){const o=this.times,g=o.length;let C=0,c=g-1;for(;C!==g&&o[C]<e;)++C;for(;c!==-1&&o[c]>i;)--c;if(++c,C!==0||c!==g){C>=c&&(c=Math.max(c,1),C=c-1);const f=this.getValueSize();this.times=o.slice(C,c),this.values=this.values.slice(C*f,c*f)}return this}validate(){let e=!0;const i=this.getValueSize();i-Math.floor(i)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);const o=this.times,g=this.values,C=o.length;C===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let c=null;for(let f=0;f!==C;f++){const S=o[f];if(typeof S=="number"&&isNaN(S)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,f,S),e=!1;break}if(c!==null&&c>S){console.error("THREE.KeyframeTrack: Out of order keys.",this,f,S,c),e=!1;break}c=S}if(g!==void 0&&Kc(g))for(let f=0,S=g.length;f!==S;++f){const b=g[f];if(isNaN(b)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,f,b),e=!1;break}}return e}optimize(){const e=this.times.slice(),i=this.values.slice(),o=this.getValueSize(),g=this.getInterpolation()===Cr,C=e.length-1;let c=1;for(let f=1;f<C;++f){let S=!1;const b=e[f],$=e[f+1];if(b!==$&&(f!==1||b!==e[0]))if(g)S=!0;else{const oA=f*o,rA=oA-o,IA=oA+o;for(let cA=0;cA!==o;++cA){const JA=i[oA+cA];if(JA!==i[rA+cA]||JA!==i[IA+cA]){S=!0;break}}}if(S){if(f!==c){e[c]=e[f];const oA=f*o,rA=c*o;for(let IA=0;IA!==o;++IA)i[rA+IA]=i[oA+IA]}++c}}if(C>0){e[c]=e[C];for(let f=C*o,S=c*o,b=0;b!==o;++b)i[S+b]=i[f+b];++c}return c!==e.length?(this.times=e.slice(0,c),this.values=i.slice(0,c*o)):(this.times=e,this.values=i),this}clone(){const e=this.times.slice(),i=this.values.slice(),o=this.constructor,g=new o(this.name,e,i);return g.createInterpolant=this.createInterpolant,g}}tI.prototype.TimeBufferType=Float32Array,tI.prototype.ValueBufferType=Float32Array,tI.prototype.DefaultInterpolation=gI;class mC extends tI{constructor(e,i,o){super(e,i,o)}}mC.prototype.ValueTypeName="bool",mC.prototype.ValueBufferType=Array,mC.prototype.DefaultInterpolation=Ma,mC.prototype.InterpolantFactoryMethodLinear=void 0,mC.prototype.InterpolantFactoryMethodSmooth=void 0;class aQ extends tI{}aQ.prototype.ValueTypeName="color";class lB extends tI{}lB.prototype.ValueTypeName="number";class Pc extends hB{constructor(e,i,o,g){super(e,i,o,g)}interpolate_(e,i,o,g){const C=this.resultBuffer,c=this.sampleValues,f=this.valueSize,S=(o-i)/(g-i);let b=e*f;for(let $=b+f;b!==$;b+=4)$o.slerpFlat(C,0,c,b-f,c,b,S);return C}}class dB extends tI{InterpolantFactoryMethodLinear(e){return new Pc(this.times,this.values,this.getValueSize(),e)}}dB.prototype.ValueTypeName="quaternion",dB.prototype.InterpolantFactoryMethodSmooth=void 0;class DC extends tI{constructor(e,i,o){super(e,i,o)}}DC.prototype.ValueTypeName="string",DC.prototype.ValueBufferType=Array,DC.prototype.DefaultInterpolation=Ma,DC.prototype.InterpolantFactoryMethodLinear=void 0,DC.prototype.InterpolantFactoryMethodSmooth=void 0;class uB extends tI{}uB.prototype.ValueTypeName="vector";class fB{constructor(e="",i=-1,o=[],g=jr){this.name=e,this.tracks=o,this.duration=i,this.blendMode=g,this.uuid=gg(),this.duration<0&&this.resetDuration()}static parse(e){const i=[],o=e.tracks,g=1/(e.fps||1);for(let c=0,f=o.length;c!==f;++c)i.push(yl(o[c]).scale(g));const C=new this(e.name,e.duration,i,e.blendMode);return C.uuid=e.uuid,C}static toJSON(e){const i=[],o=e.tracks,g={name:e.name,duration:e.duration,tracks:i,uuid:e.uuid,blendMode:e.blendMode};for(let C=0,c=o.length;C!==c;++C)i.push(tI.toJSON(o[C]));return g}static CreateFromMorphTargetSequence(e,i,o,g){const C=i.length,c=[];for(let f=0;f<C;f++){let S=[],b=[];S.push((f+C-1)%C,f,(f+1)%C),b.push(0,1,0);const $=Jc(S);S=rQ(S,1,$),b=rQ(b,1,$),!g&&S[0]===0&&(S.push(C),b.push(b[0])),c.push(new lB(".morphTargetInfluences["+i[f].name+"]",S,b).scale(1/o))}return new this(e,-1,c)}static findByName(e,i){let o=e;if(!Array.isArray(e)){const g=e;o=g.geometry&&g.geometry.animations||g.animations}for(let g=0;g<o.length;g++)if(o[g].name===i)return o[g];return null}static CreateClipsFromMorphTargetSequences(e,i,o){const g={},C=/^([\w-]*?)([\d]+)$/;for(let f=0,S=e.length;f<S;f++){const b=e[f],$=b.name.match(C);if($&&$.length>1){const oA=$[1];let rA=g[oA];rA||(g[oA]=rA=[]),rA.push(b)}}const c=[];for(const f in g)c.push(this.CreateFromMorphTargetSequence(f,g[f],i,o));return c}static parseAnimation(e,i){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const o=function(oA,rA,IA,cA,JA){if(IA.length!==0){const te=[],Ce=[];sQ(IA,te,Ce,cA),te.length!==0&&JA.push(new oA(rA,te,Ce))}},g=[],C=e.name||"default",c=e.fps||30,f=e.blendMode;let S=e.length||-1;const b=e.hierarchy||[];for(let oA=0;oA<b.length;oA++){const rA=b[oA].keys;if(!(!rA||rA.length===0))if(rA[0].morphTargets){const IA={};let cA;for(cA=0;cA<rA.length;cA++)if(rA[cA].morphTargets)for(let JA=0;JA<rA[cA].morphTargets.length;JA++)IA[rA[cA].morphTargets[JA]]=-1;for(const JA in IA){const te=[],Ce=[];for(let Me=0;Me!==rA[cA].morphTargets.length;++Me){const Re=rA[cA];te.push(Re.time),Ce.push(Re.morphTarget===JA?1:0)}g.push(new lB(".morphTargetInfluence["+JA+"]",te,Ce))}S=IA.length*c}else{const IA=".bones["+i[oA].name+"]";o(uB,IA+".position",rA,"pos",g),o(dB,IA+".quaternion",rA,"rot",g),o(uB,IA+".scale",rA,"scl",g)}}return g.length===0?null:new this(C,S,g,f)}resetDuration(){const e=this.tracks;let i=0;for(let o=0,g=e.length;o!==g;++o){const C=this.tracks[o];i=Math.max(i,C.times[C.times.length-1])}return this.duration=i,this}trim(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].trim(0,this.duration);return this}validate(){let e=!0;for(let i=0;i<this.tracks.length;i++)e=e&&this.tracks[i].validate();return e}optimize(){for(let e=0;e<this.tracks.length;e++)this.tracks[e].optimize();return this}clone(){const e=[];for(let i=0;i<this.tracks.length;i++)e.push(this.tracks[i].clone());return new this.constructor(this.name,this.duration,e,this.blendMode)}toJSON(){return this.constructor.toJSON(this)}}function Dl(P){switch(P.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return lB;case"vector":case"vector2":case"vector3":case"vector4":return uB;case"color":return aQ;case"quaternion":return dB;case"bool":case"boolean":return mC;case"string":return DC}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+P)}function yl(P){if(P.type===void 0)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");const e=Dl(P.type);if(P.times===void 0){const i=[],o=[];sQ(P.keys,i,o,"value"),P.times=i,P.values=o}return e.parse!==void 0?e.parse(P):new e(P.name,P.times,P.values,P.interpolation)}const xI={enabled:!1,files:{},add:function(P,e){this.enabled!==!1&&(this.files[P]=e)},get:function(P){if(this.enabled!==!1)return this.files[P]},remove:function(P){delete this.files[P]},clear:function(){this.files={}}};class IQ{constructor(e,i,o){const g=this;let C=!1,c=0,f=0,S;const b=[];this.onStart=void 0,this.onLoad=e,this.onProgress=i,this.onError=o,this.itemStart=function($){f++,C===!1&&g.onStart!==void 0&&g.onStart($,c,f),C=!0},this.itemEnd=function($){c++,g.onProgress!==void 0&&g.onProgress($,c,f),c===f&&(C=!1,g.onLoad!==void 0&&g.onLoad())},this.itemError=function($){g.onError!==void 0&&g.onError($)},this.resolveURL=function($){return S?S($):$},this.setURLModifier=function($){return S=$,this},this.addHandler=function($,oA){return b.push($,oA),this},this.removeHandler=function($){const oA=b.indexOf($);return oA!==-1&&b.splice(oA,2),this},this.getHandler=function($){for(let oA=0,rA=b.length;oA<rA;oA+=2){const IA=b[oA],cA=b[oA+1];if(IA.global&&(IA.lastIndex=0),IA.test($))return cA}return null}}}const Oc=new IQ;class da{constructor(e){this.manager=e!==void 0?e:Oc,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(e,i){const o=this;return new Promise(function(g,C){o.load(e,g,i,C)})}parse(){}setCrossOrigin(e){return this.crossOrigin=e,this}setWithCredentials(e){return this.withCredentials=e,this}setPath(e){return this.path=e,this}setResourcePath(e){return this.resourcePath=e,this}setRequestHeader(e){return this.requestHeader=e,this}}da.DEFAULT_MATERIAL_NAME="__DEFAULT";const iI={};class qc extends Error{constructor(e,i){super(e),this.response=i}}class bI extends da{constructor(e){super(e)}load(e,i,o,g){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const C=xI.get(e);if(C!==void 0)return this.manager.itemStart(e),setTimeout(()=>{i&&i(C),this.manager.itemEnd(e)},0),C;if(iI[e]!==void 0){iI[e].push({onLoad:i,onProgress:o,onError:g});return}iI[e]=[],iI[e].push({onLoad:i,onProgress:o,onError:g});const c=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),f=this.mimeType,S=this.responseType;fetch(c).then(b=>{if(b.status===200||b.status===0){if(b.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||b.body===void 0||b.body.getReader===void 0)return b;const $=iI[e],oA=b.body.getReader(),rA=b.headers.get("X-File-Size")||b.headers.get("Content-Length"),IA=rA?parseInt(rA):0,cA=IA!==0;let JA=0;const te=new ReadableStream({start(Ce){Me();function Me(){oA.read().then(({done:Re,value:Ne})=>{if(Re)Ce.close();else{JA+=Ne.byteLength;const wt=new ProgressEvent("progress",{lengthComputable:cA,loaded:JA,total:IA});for(let St=0,Yt=$.length;St<Yt;St++){const xt=$[St];xt.onProgress&&xt.onProgress(wt)}Ce.enqueue(Ne),Me()}},Re=>{Ce.error(Re)})}}});return new Response(te)}else throw new qc(`fetch for "${b.url}" responded with ${b.status}: ${b.statusText}`,b)}).then(b=>{switch(S){case"arraybuffer":return b.arrayBuffer();case"blob":return b.blob();case"document":return b.text().then($=>new DOMParser().parseFromString($,f));case"json":return b.json();default:if(f===void 0)return b.text();{const oA=/charset="?([^;"\s]*)"?/i.exec(f),rA=oA&&oA[1]?oA[1].toLowerCase():void 0,IA=new TextDecoder(rA);return b.arrayBuffer().then(cA=>IA.decode(cA))}}}).then(b=>{xI.add(e,b);const $=iI[e];delete iI[e];for(let oA=0,rA=$.length;oA<rA;oA++){const IA=$[oA];IA.onLoad&&IA.onLoad(b)}}).catch(b=>{const $=iI[e];if($===void 0)throw this.manager.itemError(e),b;delete iI[e];for(let oA=0,rA=$.length;oA<rA;oA++){const IA=$[oA];IA.onError&&IA.onError(b)}this.manager.itemError(e)}).finally(()=>{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class uE extends da{constructor(e){super(e)}load(e,i,o,g){const C=this,c=new bI(this.manager);c.setPath(this.path),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(e,function(f){try{i(C.parse(JSON.parse(f)))}catch(S){g?g(S):console.error(S),C.manager.itemError(e)}},o,g)}parse(e){const i=[];for(let o=0;o<e.length;o++){const g=fB.parse(e[o]);i.push(g)}return i}}class Wc extends da{constructor(e){super(e)}load(e,i,o,g){const C=this,c=[],f=new IE,S=new bI(this.manager);S.setPath(this.path),S.setResponseType("arraybuffer"),S.setRequestHeader(this.requestHeader),S.setWithCredentials(C.withCredentials);let b=0;function $(oA){S.load(e[oA],function(rA){const IA=C.parse(rA,!0);c[oA]={width:IA.width,height:IA.height,format:IA.format,mipmaps:IA.mipmaps},b+=1,b===6&&(IA.mipmapCount===1&&(f.minFilter=kn),f.image=c,f.format=IA.format,f.needsUpdate=!0,i&&i(f))},o,g)}if(Array.isArray(e))for(let oA=0,rA=e.length;oA<rA;++oA)$(oA);else S.load(e,function(oA){const rA=C.parse(oA,!0);if(rA.isCubemap){const IA=rA.mipmaps.length/rA.mipmapCount;for(let cA=0;cA<IA;cA++){c[cA]={mipmaps:[]};for(let JA=0;JA<rA.mipmapCount;JA++)c[cA].mipmaps.push(rA.mipmaps[cA*rA.mipmapCount+JA]),c[cA].format=rA.format,c[cA].width=rA.width,c[cA].height=rA.height}f.image=c}else f.image.width=rA.width,f.image.height=rA.height,f.mipmaps=rA.mipmaps;rA.mipmapCount===1&&(f.minFilter=kn),f.format=rA.format,f.needsUpdate=!0,i&&i(f)},o,g);return f}}class pB extends da{constructor(e){super(e)}load(e,i,o,g){this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const C=this,c=xI.get(e);if(c!==void 0)return C.manager.itemStart(e),setTimeout(function(){i&&i(c),C.manager.itemEnd(e)},0),c;const f=vo("img");function S(){$(),xI.add(e,this),i&&i(this),C.manager.itemEnd(e)}function b(oA){$(),g&&g(oA),C.manager.itemError(e),C.manager.itemEnd(e)}function $(){f.removeEventListener("load",S,!1),f.removeEventListener("error",b,!1)}return f.addEventListener("load",S,!1),f.addEventListener("error",b,!1),e.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(f.crossOrigin=this.crossOrigin),C.manager.itemStart(e),f.src=e,f}}class wl extends da{constructor(e){super(e)}load(e,i,o,g){const C=new Ya;C.colorSpace=Ie;const c=new pB(this.manager);c.setCrossOrigin(this.crossOrigin),c.setPath(this.path);let f=0;function S(b){c.load(e[b],function($){C.images[b]=$,f++,f===6&&(C.needsUpdate=!0,i&&i(C))},void 0,g)}for(let b=0;b<e.length;++b)S(b);return C}}class Ml extends da{constructor(e){super(e)}load(e,i,o,g){const C=this,c=new es,f=new bI(this.manager);return f.setResponseType("arraybuffer"),f.setRequestHeader(this.requestHeader),f.setPath(this.path),f.setWithCredentials(C.withCredentials),f.load(e,function(S){let b;try{b=C.parse(S)}catch($){if(g!==void 0)g($);else{console.error($);return}}b.image!==void 0?c.image=b.image:b.data!==void 0&&(c.image.width=b.width,c.image.height=b.height,c.image.data=b.data),c.wrapS=b.wrapS!==void 0?b.wrapS:De,c.wrapT=b.wrapT!==void 0?b.wrapT:De,c.magFilter=b.magFilter!==void 0?b.magFilter:kn,c.minFilter=b.minFilter!==void 0?b.minFilter:kn,c.anisotropy=b.anisotropy!==void 0?b.anisotropy:1,b.colorSpace!==void 0&&(c.colorSpace=b.colorSpace),b.flipY!==void 0&&(c.flipY=b.flipY),b.format!==void 0&&(c.format=b.format),b.type!==void 0&&(c.type=b.type),b.mipmaps!==void 0&&(c.mipmaps=b.mipmaps,c.minFilter=is),b.mipmapCount===1&&(c.minFilter=kn),b.generateMipmaps!==void 0&&(c.generateMipmaps=b.generateMipmaps),c.needsUpdate=!0,i&&i(c,b)},o,g),c}}class Sl extends da{constructor(e){super(e)}load(e,i,o,g){const C=new To,c=new pB(this.manager);return c.setCrossOrigin(this.crossOrigin),c.setPath(this.path),c.load(e,function(f){C.image=f,C.needsUpdate=!0,i!==void 0&&i(C)},o,g),C}}class kI extends be{constructor(e,i=1){super(),this.isLight=!0,this.type="Light",this.color=new ht(e),this.intensity=i}dispose(){}copy(e,i){return super.copy(e,i),this.color.copy(e.color),this.intensity=e.intensity,this}toJSON(e){const i=super.toJSON(e);return i.object.color=this.color.getHex(),i.object.intensity=this.intensity,this.groundColor!==void 0&&(i.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(i.object.distance=this.distance),this.angle!==void 0&&(i.object.angle=this.angle),this.decay!==void 0&&(i.object.decay=this.decay),this.penumbra!==void 0&&(i.object.penumbra=this.penumbra),this.shadow!==void 0&&(i.object.shadow=this.shadow.toJSON()),this.target!==void 0&&(i.object.target=this.target.uuid),i}}class Vc extends kI{constructor(e,i,o){super(e,o),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(be.DEFAULT_UP),this.updateMatrix(),this.groundColor=new ht(i)}copy(e,i){return super.copy(e,i),this.groundColor.copy(e.groundColor),this}}const CQ=new Eo,Zc=new Qe,jc=new Qe;class BQ{constructor(e){this.camera=e,this.intensity=1,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new ni(512,512),this.map=null,this.mapPass=null,this.matrix=new Eo,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new _E,this._frameExtents=new ni(1,1),this._viewportCount=1,this._viewports=[new ir(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(e){const i=this.camera,o=this.matrix;Zc.setFromMatrixPosition(e.matrixWorld),i.position.copy(Zc),jc.setFromMatrixPosition(e.target.matrixWorld),i.lookAt(jc),i.updateMatrixWorld(),CQ.multiplyMatrices(i.projectionMatrix,i.matrixWorldInverse),this._frustum.setFromProjectionMatrix(CQ),o.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),o.multiply(CQ)}getViewport(e){return this._viewports[e]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(e){return this.camera=e.camera.clone(),this.intensity=e.intensity,this.bias=e.bias,this.radius=e.radius,this.mapSize.copy(e.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){const e={};return this.intensity!==1&&(e.intensity=this.intensity),this.bias!==0&&(e.bias=this.bias),this.normalBias!==0&&(e.normalBias=this.normalBias),this.radius!==1&&(e.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(e.mapSize=this.mapSize.toArray()),e.camera=this.camera.toJSON(!1).object,delete e.camera.matrix,e}}class mB extends BQ{constructor(){super(new ks(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(e){const i=this.camera,o=Ga*2*e.angle*this.focus,g=this.mapSize.width/this.mapSize.height,C=e.distance||i.far;(o!==i.fov||g!==i.aspect||C!==i.far)&&(i.fov=o,i.aspect=g,i.far=C,i.updateProjectionMatrix()),super.updateMatrices(e)}copy(e){return super.copy(e),this.focus=e.focus,this}}class EQ extends kI{constructor(e,i,o=0,g=Math.PI/3,C=0,c=2){super(e,i),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(be.DEFAULT_UP),this.updateMatrix(),this.target=new be,this.distance=o,this.angle=g,this.penumbra=C,this.decay=c,this.map=null,this.shadow=new mB}get power(){return this.intensity*Math.PI}set power(e){this.intensity=e/Math.PI}dispose(){this.shadow.dispose()}copy(e,i){return super.copy(e,i),this.distance=e.distance,this.angle=e.angle,this.penumbra=e.penumbra,this.decay=e.decay,this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}const QQ=new Eo,DB=new Qe,yB=new Qe;class Rl extends BQ{constructor(){super(new ks(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new ni(4,2),this._viewportCount=6,this._viewports=[new ir(2,1,1,1),new ir(0,1,1,1),new ir(3,1,1,1),new ir(1,1,1,1),new ir(3,0,1,1),new ir(1,0,1,1)],this._cubeDirections=[new Qe(1,0,0),new Qe(-1,0,0),new Qe(0,0,1),new Qe(0,0,-1),new Qe(0,1,0),new Qe(0,-1,0)],this._cubeUps=[new Qe(0,1,0),new Qe(0,1,0),new Qe(0,1,0),new Qe(0,1,0),new Qe(0,0,1),new Qe(0,0,-1)]}updateMatrices(e,i=0){const o=this.camera,g=this.matrix,C=e.distance||o.far;C!==o.far&&(o.far=C,o.updateProjectionMatrix()),DB.setFromMatrixPosition(e.matrixWorld),o.position.copy(DB),yB.copy(o.position),yB.add(this._cubeDirections[i]),o.up.copy(this._cubeUps[i]),o.lookAt(yB),o.updateMatrixWorld(),g.makeTranslation(-DB.x,-DB.y,-DB.z),QQ.multiplyMatrices(o.projectionMatrix,o.matrixWorldInverse),this._frustum.setFromProjectionMatrix(QQ)}}class Xc extends kI{constructor(e,i,o=0,g=2){super(e,i),this.isPointLight=!0,this.type="PointLight",this.distance=o,this.decay=g,this.shadow=new Rl}get power(){return this.intensity*4*Math.PI}set power(e){this.intensity=e/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(e,i){return super.copy(e,i),this.distance=e.distance,this.decay=e.decay,this.shadow=e.shadow.clone(),this}}class cQ extends Ui{constructor(e=-1,i=1,o=1,g=-1,C=.1,c=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=i,this.top=o,this.bottom=g,this.near=C,this.far=c,this.updateProjectionMatrix()}copy(e,i){return super.copy(e,i),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=e.view===null?null:Object.assign({},e.view),this}setViewOffset(e,i,o,g,C,c){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=i,this.view.offsetX=o,this.view.offsetY=g,this.view.width=C,this.view.height=c,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const e=(this.right-this.left)/(2*this.zoom),i=(this.top-this.bottom)/(2*this.zoom),o=(this.right+this.left)/2,g=(this.top+this.bottom)/2;let C=o-e,c=o+e,f=g+i,S=g-i;if(this.view!==null&&this.view.enabled){const b=(this.right-this.left)/this.view.fullWidth/this.zoom,$=(this.top-this.bottom)/this.view.fullHeight/this.zoom;C+=b*this.view.offsetX,c=C+b*this.view.width,f-=$*this.view.offsetY,S=f-$*this.view.height}this.projectionMatrix.makeOrthographic(C,c,f,S,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){const i=super.toJSON(e);return i.object.zoom=this.zoom,i.object.left=this.left,i.object.right=this.right,i.object.top=this.top,i.object.bottom=this.bottom,i.object.near=this.near,i.object.far=this.far,this.view!==null&&(i.object.view=Object.assign({},this.view)),i}}class zc extends BQ{constructor(){super(new cQ(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class $c extends kI{constructor(e,i){super(e,i),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(be.DEFAULT_UP),this.updateMatrix(),this.target=new be,this.shadow=new zc}dispose(){this.shadow.dispose()}copy(e){return super.copy(e),this.target=e.target.clone(),this.shadow=e.shadow.clone(),this}}class hQ extends kI{constructor(e,i){super(e,i),this.isAmbientLight=!0,this.type="AmbientLight"}}class Ah extends kI{constructor(e,i,o=10,g=10){super(e,i),this.isRectAreaLight=!0,this.type="RectAreaLight",this.width=o,this.height=g}get power(){return this.intensity*this.width*this.height*Math.PI}set power(e){this.intensity=e/(this.width*this.height*Math.PI)}copy(e){return super.copy(e),this.width=e.width,this.height=e.height,this}toJSON(e){const i=super.toJSON(e);return i.object.width=this.width,i.object.height=this.height,i}}class eh{constructor(){this.isSphericalHarmonics3=!0,this.coefficients=[];for(let e=0;e<9;e++)this.coefficients.push(new Qe)}set(e){for(let i=0;i<9;i++)this.coefficients[i].copy(e[i]);return this}zero(){for(let e=0;e<9;e++)this.coefficients[e].set(0,0,0);return this}getAt(e,i){const o=e.x,g=e.y,C=e.z,c=this.coefficients;return i.copy(c[0]).multiplyScalar(.282095),i.addScaledVector(c[1],.488603*g),i.addScaledVector(c[2],.488603*C),i.addScaledVector(c[3],.488603*o),i.addScaledVector(c[4],1.092548*(o*g)),i.addScaledVector(c[5],1.092548*(g*C)),i.addScaledVector(c[6],.315392*(3*C*C-1)),i.addScaledVector(c[7],1.092548*(o*C)),i.addScaledVector(c[8],.546274*(o*o-g*g)),i}getIrradianceAt(e,i){const o=e.x,g=e.y,C=e.z,c=this.coefficients;return i.copy(c[0]).multiplyScalar(.886227),i.addScaledVector(c[1],1.023328*g),i.addScaledVector(c[2],1.023328*C),i.addScaledVector(c[3],1.023328*o),i.addScaledVector(c[4],.858086*o*g),i.addScaledVector(c[5],.858086*g*C),i.addScaledVector(c[6],.743125*C*C-.247708),i.addScaledVector(c[7],.858086*o*C),i.addScaledVector(c[8],.429043*(o*o-g*g)),i}add(e){for(let i=0;i<9;i++)this.coefficients[i].add(e.coefficients[i]);return this}addScaledSH(e,i){for(let o=0;o<9;o++)this.coefficients[o].addScaledVector(e.coefficients[o],i);return this}scale(e){for(let i=0;i<9;i++)this.coefficients[i].multiplyScalar(e);return this}lerp(e,i){for(let o=0;o<9;o++)this.coefficients[o].lerp(e.coefficients[o],i);return this}equals(e){for(let i=0;i<9;i++)if(!this.coefficients[i].equals(e.coefficients[i]))return!1;return!0}copy(e){return this.set(e.coefficients)}clone(){return new this.constructor().copy(this)}fromArray(e,i=0){const o=this.coefficients;for(let g=0;g<9;g++)o[g].fromArray(e,i+g*3);return this}toArray(e=[],i=0){const o=this.coefficients;for(let g=0;g<9;g++)o[g].toArray(e,i+g*3);return e}static getBasisAt(e,i){const o=e.x,g=e.y,C=e.z;i[0]=.282095,i[1]=.488603*g,i[2]=.488603*C,i[3]=.488603*o,i[4]=1.092548*o*g,i[5]=1.092548*g*C,i[6]=.315392*(3*C*C-1),i[7]=1.092548*o*C,i[8]=.546274*(o*o-g*g)}}class th extends kI{constructor(e=new eh,i=1){super(void 0,i),this.isLightProbe=!0,this.sh=e}copy(e){return super.copy(e),this.sh.copy(e.sh),this}fromJSON(e){return this.intensity=e.intensity,this.sh.fromArray(e.sh),this}toJSON(e){const i=super.toJSON(e);return i.object.sh=this.sh.toArray(),i}}class fE extends da{constructor(e){super(e),this.textures={}}load(e,i,o,g){const C=this,c=new bI(C.manager);c.setPath(C.path),c.setRequestHeader(C.requestHeader),c.setWithCredentials(C.withCredentials),c.load(e,function(f){try{i(C.parse(JSON.parse(f)))}catch(S){g?g(S):console.error(S),C.manager.itemError(e)}},o,g)}parse(e){const i=this.textures;function o(C){return i[C]===void 0&&console.warn("THREE.MaterialLoader: Undefined texture",C),i[C]}const g=this.createMaterialFromType(e.type);if(e.uuid!==void 0&&(g.uuid=e.uuid),e.name!==void 0&&(g.name=e.name),e.color!==void 0&&g.color!==void 0&&g.color.setHex(e.color),e.roughness!==void 0&&(g.roughness=e.roughness),e.metalness!==void 0&&(g.metalness=e.metalness),e.sheen!==void 0&&(g.sheen=e.sheen),e.sheenColor!==void 0&&(g.sheenColor=new ht().setHex(e.sheenColor)),e.sheenRoughness!==void 0&&(g.sheenRoughness=e.sheenRoughness),e.emissive!==void 0&&g.emissive!==void 0&&g.emissive.setHex(e.emissive),e.specular!==void 0&&g.specular!==void 0&&g.specular.setHex(e.specular),e.specularIntensity!==void 0&&(g.specularIntensity=e.specularIntensity),e.specularColor!==void 0&&g.specularColor!==void 0&&g.specularColor.setHex(e.specularColor),e.shininess!==void 0&&(g.shininess=e.shininess),e.clearcoat!==void 0&&(g.clearcoat=e.clearcoat),e.clearcoatRoughness!==void 0&&(g.clearcoatRoughness=e.clearcoatRoughness),e.dispersion!==void 0&&(g.dispersion=e.dispersion),e.iridescence!==void 0&&(g.iridescence=e.iridescence),e.iridescenceIOR!==void 0&&(g.iridescenceIOR=e.iridescenceIOR),e.iridescenceThicknessRange!==void 0&&(g.iridescenceThicknessRange=e.iridescenceThicknessRange),e.transmission!==void 0&&(g.transmission=e.transmission),e.thickness!==void 0&&(g.thickness=e.thickness),e.attenuationDistance!==void 0&&(g.attenuationDistance=e.attenuationDistance),e.attenuationColor!==void 0&&g.attenuationColor!==void 0&&g.attenuationColor.setHex(e.attenuationColor),e.anisotropy!==void 0&&(g.anisotropy=e.anisotropy),e.anisotropyRotation!==void 0&&(g.anisotropyRotation=e.anisotropyRotation),e.fog!==void 0&&(g.fog=e.fog),e.flatShading!==void 0&&(g.flatShading=e.flatShading),e.blending!==void 0&&(g.blending=e.blending),e.combine!==void 0&&(g.combine=e.combine),e.side!==void 0&&(g.side=e.side),e.shadowSide!==void 0&&(g.shadowSide=e.shadowSide),e.opacity!==void 0&&(g.opacity=e.opacity),e.transparent!==void 0&&(g.transparent=e.transparent),e.alphaTest!==void 0&&(g.alphaTest=e.alphaTest),e.alphaHash!==void 0&&(g.alphaHash=e.alphaHash),e.depthFunc!==void 0&&(g.depthFunc=e.depthFunc),e.depthTest!==void 0&&(g.depthTest=e.depthTest),e.depthWrite!==void 0&&(g.depthWrite=e.depthWrite),e.colorWrite!==void 0&&(g.colorWrite=e.colorWrite),e.blendSrc!==void 0&&(g.blendSrc=e.blendSrc),e.blendDst!==void 0&&(g.blendDst=e.blendDst),e.blendEquation!==void 0&&(g.blendEquation=e.blendEquation),e.blendSrcAlpha!==void 0&&(g.blendSrcAlpha=e.blendSrcAlpha),e.blendDstAlpha!==void 0&&(g.blendDstAlpha=e.blendDstAlpha),e.blendEquationAlpha!==void 0&&(g.blendEquationAlpha=e.blendEquationAlpha),e.blendColor!==void 0&&g.blendColor!==void 0&&g.blendColor.setHex(e.blendColor),e.blendAlpha!==void 0&&(g.blendAlpha=e.blendAlpha),e.stencilWriteMask!==void 0&&(g.stencilWriteMask=e.stencilWriteMask),e.stencilFunc!==void 0&&(g.stencilFunc=e.stencilFunc),e.stencilRef!==void 0&&(g.stencilRef=e.stencilRef),e.stencilFuncMask!==void 0&&(g.stencilFuncMask=e.stencilFuncMask),e.stencilFail!==void 0&&(g.stencilFail=e.stencilFail),e.stencilZFail!==void 0&&(g.stencilZFail=e.stencilZFail),e.stencilZPass!==void 0&&(g.stencilZPass=e.stencilZPass),e.stencilWrite!==void 0&&(g.stencilWrite=e.stencilWrite),e.wireframe!==void 0&&(g.wireframe=e.wireframe),e.wireframeLinewidth!==void 0&&(g.wireframeLinewidth=e.wireframeLinewidth),e.wireframeLinecap!==void 0&&(g.wireframeLinecap=e.wireframeLinecap),e.wireframeLinejoin!==void 0&&(g.wireframeLinejoin=e.wireframeLinejoin),e.rotation!==void 0&&(g.rotation=e.rotation),e.linewidth!==void 0&&(g.linewidth=e.linewidth),e.dashSize!==void 0&&(g.dashSize=e.dashSize),e.gapSize!==void 0&&(g.gapSize=e.gapSize),e.scale!==void 0&&(g.scale=e.scale),e.polygonOffset!==void 0&&(g.polygonOffset=e.polygonOffset),e.polygonOffsetFactor!==void 0&&(g.polygonOffsetFactor=e.polygonOffsetFactor),e.polygonOffsetUnits!==void 0&&(g.polygonOffsetUnits=e.polygonOffsetUnits),e.dithering!==void 0&&(g.dithering=e.dithering),e.alphaToCoverage!==void 0&&(g.alphaToCoverage=e.alphaToCoverage),e.premultipliedAlpha!==void 0&&(g.premultipliedAlpha=e.premultipliedAlpha),e.forceSinglePass!==void 0&&(g.forceSinglePass=e.forceSinglePass),e.visible!==void 0&&(g.visible=e.visible),e.toneMapped!==void 0&&(g.toneMapped=e.toneMapped),e.userData!==void 0&&(g.userData=e.userData),e.vertexColors!==void 0&&(typeof e.vertexColors=="number"?g.vertexColors=e.vertexColors>0:g.vertexColors=e.vertexColors),e.uniforms!==void 0)for(const C in e.uniforms){const c=e.uniforms[C];switch(g.uniforms[C]={},c.type){case"t":g.uniforms[C].value=o(c.value);break;case"c":g.uniforms[C].value=new ht().setHex(c.value);break;case"v2":g.uniforms[C].value=new ni().fromArray(c.value);break;case"v3":g.uniforms[C].value=new Qe().fromArray(c.value);break;case"v4":g.uniforms[C].value=new ir().fromArray(c.value);break;case"m3":g.uniforms[C].value=new ds().fromArray(c.value);break;case"m4":g.uniforms[C].value=new Eo().fromArray(c.value);break;default:g.uniforms[C].value=c.value}}if(e.defines!==void 0&&(g.defines=e.defines),e.vertexShader!==void 0&&(g.vertexShader=e.vertexShader),e.fragmentShader!==void 0&&(g.fragmentShader=e.fragmentShader),e.glslVersion!==void 0&&(g.glslVersion=e.glslVersion),e.extensions!==void 0)for(const C in e.extensions)g.extensions[C]=e.extensions[C];if(e.lights!==void 0&&(g.lights=e.lights),e.clipping!==void 0&&(g.clipping=e.clipping),e.size!==void 0&&(g.size=e.size),e.sizeAttenuation!==void 0&&(g.sizeAttenuation=e.sizeAttenuation),e.map!==void 0&&(g.map=o(e.map)),e.matcap!==void 0&&(g.matcap=o(e.matcap)),e.alphaMap!==void 0&&(g.alphaMap=o(e.alphaMap)),e.bumpMap!==void 0&&(g.bumpMap=o(e.bumpMap)),e.bumpScale!==void 0&&(g.bumpScale=e.bumpScale),e.normalMap!==void 0&&(g.normalMap=o(e.normalMap)),e.normalMapType!==void 0&&(g.normalMapType=e.normalMapType),e.normalScale!==void 0){let C=e.normalScale;Array.isArray(C)===!1&&(C=[C,C]),g.normalScale=new ni().fromArray(C)}return e.displacementMap!==void 0&&(g.displacementMap=o(e.displacementMap)),e.displacementScale!==void 0&&(g.displacementScale=e.displacementScale),e.displacementBias!==void 0&&(g.displacementBias=e.displacementBias),e.roughnessMap!==void 0&&(g.roughnessMap=o(e.roughnessMap)),e.metalnessMap!==void 0&&(g.metalnessMap=o(e.metalnessMap)),e.emissiveMap!==void 0&&(g.emissiveMap=o(e.emissiveMap)),e.emissiveIntensity!==void 0&&(g.emissiveIntensity=e.emissiveIntensity),e.specularMap!==void 0&&(g.specularMap=o(e.specularMap)),e.specularIntensityMap!==void 0&&(g.specularIntensityMap=o(e.specularIntensityMap)),e.specularColorMap!==void 0&&(g.specularColorMap=o(e.specularColorMap)),e.envMap!==void 0&&(g.envMap=o(e.envMap)),e.envMapRotation!==void 0&&g.envMapRotation.fromArray(e.envMapRotation),e.envMapIntensity!==void 0&&(g.envMapIntensity=e.envMapIntensity),e.reflectivity!==void 0&&(g.reflectivity=e.reflectivity),e.refractionRatio!==void 0&&(g.refractionRatio=e.refractionRatio),e.lightMap!==void 0&&(g.lightMap=o(e.lightMap)),e.lightMapIntensity!==void 0&&(g.lightMapIntensity=e.lightMapIntensity),e.aoMap!==void 0&&(g.aoMap=o(e.aoMap)),e.aoMapIntensity!==void 0&&(g.aoMapIntensity=e.aoMapIntensity),e.gradientMap!==void 0&&(g.gradientMap=o(e.gradientMap)),e.clearcoatMap!==void 0&&(g.clearcoatMap=o(e.clearcoatMap)),e.clearcoatRoughnessMap!==void 0&&(g.clearcoatRoughnessMap=o(e.clearcoatRoughnessMap)),e.clearcoatNormalMap!==void 0&&(g.clearcoatNormalMap=o(e.clearcoatNormalMap)),e.clearcoatNormalScale!==void 0&&(g.clearcoatNormalScale=new ni().fromArray(e.clearcoatNormalScale)),e.iridescenceMap!==void 0&&(g.iridescenceMap=o(e.iridescenceMap)),e.iridescenceThicknessMap!==void 0&&(g.iridescenceThicknessMap=o(e.iridescenceThicknessMap)),e.transmissionMap!==void 0&&(g.transmissionMap=o(e.transmissionMap)),e.thicknessMap!==void 0&&(g.thicknessMap=o(e.thicknessMap)),e.anisotropyMap!==void 0&&(g.anisotropyMap=o(e.anisotropyMap)),e.sheenColorMap!==void 0&&(g.sheenColorMap=o(e.sheenColorMap)),e.sheenRoughnessMap!==void 0&&(g.sheenRoughnessMap=o(e.sheenRoughnessMap)),g}setTextures(e){return this.textures=e,this}createMaterialFromType(e){return fE.createMaterialFromType(e)}static createMaterialFromType(e){const i={ShadowMaterial:Gc,SpriteMaterial:AB,RawShaderMaterial:Fc,ShaderMaterial:Ni,PointsMaterial:HE,MeshPhysicalMaterial:vc,MeshStandardMaterial:oQ,MeshPhongMaterial:Nc,MeshToonMaterial:Uc,MeshNormalMaterial:Lc,MeshLambertMaterial:xc,MeshDepthMaterial:bc,MeshDistanceMaterial:kc,MeshBasicMaterial:Bi,MeshMatcapMaterial:_c,LineDashedMaterial:Tc,LineBasicMaterial:ia,Material:Jt};return new i[e]}}class lQ{static decodeText(e){if(console.warn("THREE.LoaderUtils: decodeText() has been deprecated with r165 and will be removed with r175. Use TextDecoder instead."),typeof TextDecoder<"u")return new TextDecoder().decode(e);let i="";for(let o=0,g=e.length;o<g;o++)i+=String.fromCharCode(e[o]);try{return decodeURIComponent(escape(i))}catch{return i}}static extractUrlBase(e){const i=e.lastIndexOf("/");return i===-1?"./":e.slice(0,i+1)}static resolveURL(e,i){return typeof e!="string"||e===""?"":(/^https?:\/\//i.test(i)&&/^\//.test(e)&&(i=i.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(e)||/^data:.*,.*$/i.test(e)||/^blob:.*$/i.test(e)?e:i+e)}}class ih extends Rn{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(e){return super.copy(e),this.instanceCount=e.instanceCount,this}toJSON(){const e=super.toJSON();return e.instanceCount=this.instanceCount,e.isInstancedBufferGeometry=!0,e}}class nh extends da{constructor(e){super(e)}load(e,i,o,g){const C=this,c=new bI(C.manager);c.setPath(C.path),c.setRequestHeader(C.requestHeader),c.setWithCredentials(C.withCredentials),c.load(e,function(f){try{i(C.parse(JSON.parse(f)))}catch(S){g?g(S):console.error(S),C.manager.itemError(e)}},o,g)}parse(e){const i={},o={};function g(IA,cA){if(i[cA]!==void 0)return i[cA];const te=IA.interleavedBuffers[cA],Ce=C(IA,te.buffer),Me=Hs(te.type,Ce),Re=new gC(Me,te.stride);return Re.uuid=te.uuid,i[cA]=Re,Re}function C(IA,cA){if(o[cA]!==void 0)return o[cA];const te=IA.arrayBuffers[cA],Ce=new Uint32Array(te).buffer;return o[cA]=Ce,Ce}const c=e.isInstancedBufferGeometry?new ih:new Rn,f=e.data.index;if(f!==void 0){const IA=Hs(f.type,f.array);c.setIndex(new an(IA,1))}const S=e.data.attributes;for(const IA in S){const cA=S[IA];let JA;if(cA.isInterleavedBufferAttribute){const te=g(e.data,cA.data);JA=new vI(te,cA.itemSize,cA.offset,cA.normalized)}else{const te=Hs(cA.type,cA.array),Ce=cA.isInstancedBufferAttribute?ka:an;JA=new Ce(te,cA.itemSize,cA.normalized)}cA.name!==void 0&&(JA.name=cA.name),cA.usage!==void 0&&JA.setUsage(cA.usage),c.setAttribute(IA,JA)}const b=e.data.morphAttributes;if(b)for(const IA in b){const cA=b[IA],JA=[];for(let te=0,Ce=cA.length;te<Ce;te++){const Me=cA[te];let Re;if(Me.isInterleavedBufferAttribute){const Ne=g(e.data,Me.data);Re=new vI(Ne,Me.itemSize,Me.offset,Me.normalized)}else{const Ne=Hs(Me.type,Me.array);Re=new an(Ne,Me.itemSize,Me.normalized)}Me.name!==void 0&&(Re.name=Me.name),JA.push(Re)}c.morphAttributes[IA]=JA}e.data.morphTargetsRelative&&(c.morphTargetsRelative=!0);const oA=e.data.groups||e.data.drawcalls||e.data.offsets;if(oA!==void 0)for(let IA=0,cA=oA.length;IA!==cA;++IA){const JA=oA[IA];c.addGroup(JA.start,JA.count,JA.materialIndex)}const rA=e.data.boundingSphere;if(rA!==void 0){const IA=new Qe;rA.center!==void 0&&IA.fromArray(rA.center),c.boundingSphere=new Rr(IA,rA.radius)}return e.name&&(c.name=e.name),e.userData&&(c.userData=e.userData),c}}class Gl extends da{constructor(e){super(e)}load(e,i,o,g){const C=this,c=this.path===""?lQ.extractUrlBase(e):this.path;this.resourcePath=this.resourcePath||c;const f=new bI(this.manager);f.setPath(this.path),f.setRequestHeader(this.requestHeader),f.setWithCredentials(this.withCredentials),f.load(e,function(S){let b=null;try{b=JSON.parse(S)}catch(oA){g!==void 0&&g(oA),console.error("THREE:ObjectLoader: Can't parse "+e+".",oA.message);return}const $=b.metadata;if($===void 0||$.type===void 0||$.type.toLowerCase()==="geometry"){g!==void 0&&g(new Error("THREE.ObjectLoader: Can't load "+e)),console.error("THREE.ObjectLoader: Can't load "+e);return}C.parse(b,i)},o,g)}async loadAsync(e,i){const o=this,g=this.path===""?lQ.extractUrlBase(e):this.path;this.resourcePath=this.resourcePath||g;const C=new bI(this.manager);C.setPath(this.path),C.setRequestHeader(this.requestHeader),C.setWithCredentials(this.withCredentials);const c=await C.loadAsync(e,i),f=JSON.parse(c),S=f.metadata;if(S===void 0||S.type===void 0||S.type.toLowerCase()==="geometry")throw new Error("THREE.ObjectLoader: Can't load "+e);return await o.parseAsync(f)}parse(e,i){const o=this.parseAnimations(e.animations),g=this.parseShapes(e.shapes),C=this.parseGeometries(e.geometries,g),c=this.parseImages(e.images,function(){i!==void 0&&i(b)}),f=this.parseTextures(e.textures,c),S=this.parseMaterials(e.materials,f),b=this.parseObject(e.object,C,S,f,o),$=this.parseSkeletons(e.skeletons,b);if(this.bindSkeletons(b,$),this.bindLightTargets(b),i!==void 0){let oA=!1;for(const rA in c)if(c[rA].data instanceof HTMLImageElement){oA=!0;break}oA===!1&&i(b)}return b}async parseAsync(e){const i=this.parseAnimations(e.animations),o=this.parseShapes(e.shapes),g=this.parseGeometries(e.geometries,o),C=await this.parseImagesAsync(e.images),c=this.parseTextures(e.textures,C),f=this.parseMaterials(e.materials,c),S=this.parseObject(e.object,g,f,c,i),b=this.parseSkeletons(e.skeletons,S);return this.bindSkeletons(S,b),this.bindLightTargets(S),S}parseShapes(e){const i={};if(e!==void 0)for(let o=0,g=e.length;o<g;o++){const C=new cC().fromJSON(e[o]);i[C.uuid]=C}return i}parseSkeletons(e,i){const o={},g={};if(i.traverse(function(C){C.isBone&&(g[C.uuid]=C)}),e!==void 0)for(let C=0,c=e.length;C<c;C++){const f=new AI().fromJSON(e[C],g);o[f.uuid]=f}return o}parseGeometries(e,i){const o={};if(e!==void 0){const C=new nh;for(let c=0,f=e.length;c<f;c++){let S;const b=e[c];switch(b.type){case"BufferGeometry":case"InstancedBufferGeometry":S=C.parse(b);break;case"Geometry":if("THREE"in window&&"LegacyJSONLoader"in THREE){var g=new THREE.LegacyJSONLoader;S=g.parse(b,this.resourcePath).geometry}else console.error('THREE.ObjectLoader: You have to import LegacyJSONLoader in order load geometry data of type "Geometry".');break;default:b.type in Rc?S=Rc[b.type].fromJSON(b,i):console.warn(`THREE.ObjectLoader: Unsupported geometry type "${b.type}"`)}S.uuid=b.uuid,b.name!==void 0&&(S.name=b.name),b.userData!==void 0&&(S.userData=b.userData),o[b.uuid]=S}}return o}parseMaterials(e,i){const o={},g={};if(e!==void 0){const C=new fE;C.setTextures(i);for(let c=0,f=e.length;c<f;c++){const S=e[c];o[S.uuid]===void 0&&(o[S.uuid]=C.parse(S)),g[S.uuid]=o[S.uuid]}}return g}parseAnimations(e){const i={};if(e!==void 0)for(let o=0;o<e.length;o++){const g=e[o],C=fB.parse(g);i[C.uuid]=C}return i}parseImages(e,i){const o=this,g={};let C;function c(S){return o.manager.itemStart(S),C.load(S,function(){o.manager.itemEnd(S)},void 0,function(){o.manager.itemError(S),o.manager.itemEnd(S)})}function f(S){if(typeof S=="string"){const b=S,$=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(b)?b:o.resourcePath+b;return c($)}else return S.data?{data:Hs(S.type,S.data),width:S.width,height:S.height}:null}if(e!==void 0&&e.length>0){const S=new IQ(i);C=new pB(S),C.setCrossOrigin(this.crossOrigin);for(let b=0,$=e.length;b<$;b++){const oA=e[b],rA=oA.url;if(Array.isArray(rA)){const IA=[];for(let cA=0,JA=rA.length;cA<JA;cA++){const te=rA[cA],Ce=f(te);Ce!==null&&(Ce instanceof HTMLImageElement?IA.push(Ce):IA.push(new es(Ce.data,Ce.width,Ce.height)))}g[oA.uuid]=new Ee(IA)}else{const IA=f(oA.url);g[oA.uuid]=new Ee(IA)}}}return g}async parseImagesAsync(e){const i=this,o={};let g;async function C(c){if(typeof c=="string"){const f=c,S=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(f)?f:i.resourcePath+f;return await g.loadAsync(S)}else return c.data?{data:Hs(c.type,c.data),width:c.width,height:c.height}:null}if(e!==void 0&&e.length>0){g=new pB(this.manager),g.setCrossOrigin(this.crossOrigin);for(let c=0,f=e.length;c<f;c++){const S=e[c],b=S.url;if(Array.isArray(b)){const $=[];for(let oA=0,rA=b.length;oA<rA;oA++){const IA=b[oA],cA=await C(IA);cA!==null&&(cA instanceof HTMLImageElement?$.push(cA):$.push(new es(cA.data,cA.width,cA.height)))}o[S.uuid]=new Ee($)}else{const $=await C(S.url);o[S.uuid]=new Ee($)}}}return o}parseTextures(e,i){function o(C,c){return typeof C=="number"?C:(console.warn("THREE.ObjectLoader.parseTexture: Constant should be in numeric form.",C),c[C])}const g={};if(e!==void 0)for(let C=0,c=e.length;C<c;C++){const f=e[C];f.image===void 0&&console.warn('THREE.ObjectLoader: No "image" specified for',f.uuid),i[f.image]===void 0&&console.warn("THREE.ObjectLoader: Undefined image",f.image);const S=i[f.image],b=S.data;let $;Array.isArray(b)?($=new Ya,b.length===6&&($.needsUpdate=!0)):(b&&b.data?$=new es:$=new To,b&&($.needsUpdate=!0)),$.source=S,$.uuid=f.uuid,f.name!==void 0&&($.name=f.name),f.mapping!==void 0&&($.mapping=o(f.mapping,Fl)),f.channel!==void 0&&($.channel=f.channel),f.offset!==void 0&&$.offset.fromArray(f.offset),f.repeat!==void 0&&$.repeat.fromArray(f.repeat),f.center!==void 0&&$.center.fromArray(f.center),f.rotation!==void 0&&($.rotation=f.rotation),f.wrap!==void 0&&($.wrapS=o(f.wrap[0],oh),$.wrapT=o(f.wrap[1],oh)),f.format!==void 0&&($.format=f.format),f.internalFormat!==void 0&&($.internalFormat=f.internalFormat),f.type!==void 0&&($.type=f.type),f.colorSpace!==void 0&&($.colorSpace=f.colorSpace),f.minFilter!==void 0&&($.minFilter=o(f.minFilter,rh)),f.magFilter!==void 0&&($.magFilter=o(f.magFilter,rh)),f.anisotropy!==void 0&&($.anisotropy=f.anisotropy),f.flipY!==void 0&&($.flipY=f.flipY),f.generateMipmaps!==void 0&&($.generateMipmaps=f.generateMipmaps),f.premultiplyAlpha!==void 0&&($.premultiplyAlpha=f.premultiplyAlpha),f.unpackAlignment!==void 0&&($.unpackAlignment=f.unpackAlignment),f.compareFunction!==void 0&&($.compareFunction=f.compareFunction),f.userData!==void 0&&($.userData=f.userData),g[f.uuid]=$}return g}parseObject(e,i,o,g,C){let c;function f(rA){return i[rA]===void 0&&console.warn("THREE.ObjectLoader: Undefined geometry",rA),i[rA]}function S(rA){if(rA!==void 0){if(Array.isArray(rA)){const IA=[];for(let cA=0,JA=rA.length;cA<JA;cA++){const te=rA[cA];o[te]===void 0&&console.warn("THREE.ObjectLoader: Undefined material",te),IA.push(o[te])}return IA}return o[rA]===void 0&&console.warn("THREE.ObjectLoader: Undefined material",rA),o[rA]}}function b(rA){return g[rA]===void 0&&console.warn("THREE.ObjectLoader: Undefined texture",rA),g[rA]}let $,oA;switch(e.type){case"Scene":c=new $C,e.background!==void 0&&(Number.isInteger(e.background)?c.background=new ht(e.background):c.background=b(e.background)),e.environment!==void 0&&(c.environment=b(e.environment)),e.fog!==void 0&&(e.fog.type==="Fog"?c.fog=new FI(e.fog.color,e.fog.near,e.fog.far):e.fog.type==="FogExp2"&&(c.fog=new sC(e.fog.color,e.fog.density)),e.fog.name!==""&&(c.fog.name=e.fog.name)),e.backgroundBlurriness!==void 0&&(c.backgroundBlurriness=e.backgroundBlurriness),e.backgroundIntensity!==void 0&&(c.backgroundIntensity=e.backgroundIntensity),e.backgroundRotation!==void 0&&c.backgroundRotation.fromArray(e.backgroundRotation),e.environmentIntensity!==void 0&&(c.environmentIntensity=e.environmentIntensity),e.environmentRotation!==void 0&&c.environmentRotation.fromArray(e.environmentRotation);break;case"PerspectiveCamera":c=new ks(e.fov,e.aspect,e.near,e.far),e.focus!==void 0&&(c.focus=e.focus),e.zoom!==void 0&&(c.zoom=e.zoom),e.filmGauge!==void 0&&(c.filmGauge=e.filmGauge),e.filmOffset!==void 0&&(c.filmOffset=e.filmOffset),e.view!==void 0&&(c.view=Object.assign({},e.view));break;case"OrthographicCamera":c=new cQ(e.left,e.right,e.top,e.bottom,e.near,e.far),e.zoom!==void 0&&(c.zoom=e.zoom),e.view!==void 0&&(c.view=Object.assign({},e.view));break;case"AmbientLight":c=new hQ(e.color,e.intensity);break;case"DirectionalLight":c=new $c(e.color,e.intensity),c.target=e.target||"";break;case"PointLight":c=new Xc(e.color,e.intensity,e.distance,e.decay);break;case"RectAreaLight":c=new Ah(e.color,e.intensity,e.width,e.height);break;case"SpotLight":c=new EQ(e.color,e.intensity,e.distance,e.angle,e.penumbra,e.decay),c.target=e.target||"";break;case"HemisphereLight":c=new Vc(e.color,e.groundColor,e.intensity);break;case"LightProbe":c=new th().fromJSON(e);break;case"SkinnedMesh":$=f(e.geometry),oA=S(e.material),c=new NI($,oA),e.bindMode!==void 0&&(c.bindMode=e.bindMode),e.bindMatrix!==void 0&&c.bindMatrix.fromArray(e.bindMatrix),e.skeleton!==void 0&&(c.skeleton=e.skeleton);break;case"Mesh":$=f(e.geometry),oA=S(e.material),c=new Jn($,oA);break;case"InstancedMesh":$=f(e.geometry),oA=S(e.material);const rA=e.count,IA=e.instanceMatrix,cA=e.instanceColor;c=new ZQ($,oA,rA),c.instanceMatrix=new ka(new Float32Array(IA.array),16),cA!==void 0&&(c.instanceColor=new ka(new Float32Array(cA.array),cA.itemSize));break;case"BatchedMesh":$=f(e.geometry),oA=S(e.material),c=new XQ(e.maxInstanceCount,e.maxVertexCount,e.maxIndexCount,oA),c.geometry=$,c.perObjectFrustumCulled=e.perObjectFrustumCulled,c.sortObjects=e.sortObjects,c._drawRanges=e.drawRanges,c._reservedRanges=e.reservedRanges,c._visibility=e.visibility,c._active=e.active,c._bounds=e.bounds.map(JA=>{const te=new Xr;te.min.fromArray(JA.boxMin),te.max.fromArray(JA.boxMax);const Ce=new Rr;return Ce.radius=JA.sphereRadius,Ce.center.fromArray(JA.sphereCenter),{boxInitialized:JA.boxInitialized,box:te,sphereInitialized:JA.sphereInitialized,sphere:Ce}}),c._maxInstanceCount=e.maxInstanceCount,c._maxVertexCount=e.maxVertexCount,c._maxIndexCount=e.maxIndexCount,c._geometryInitialized=e.geometryInitialized,c._geometryCount=e.geometryCount,c._matricesTexture=b(e.matricesTexture.uuid),e.colorsTexture!==void 0&&(c._colorsTexture=b(e.colorsTexture.uuid));break;case"LOD":c=new _s;break;case"Line":c=new zI(f(e.geometry),S(e.material));break;case"LineLoop":c=new tc(f(e.geometry),S(e.material));break;case"LineSegments":c=new cI(f(e.geometry),S(e.material));break;case"PointCloud":case"Points":c=new nc(f(e.geometry),S(e.material));break;case"Sprite":c=new uo(S(e.material));break;case"Group":c=new QI;break;case"Bone":c=new vr;break;default:c=new be}if(c.uuid=e.uuid,e.name!==void 0&&(c.name=e.name),e.matrix!==void 0?(c.matrix.fromArray(e.matrix),e.matrixAutoUpdate!==void 0&&(c.matrixAutoUpdate=e.matrixAutoUpdate),c.matrixAutoUpdate&&c.matrix.decompose(c.position,c.quaternion,c.scale)):(e.position!==void 0&&c.position.fromArray(e.position),e.rotation!==void 0&&c.rotation.fromArray(e.rotation),e.quaternion!==void 0&&c.quaternion.fromArray(e.quaternion),e.scale!==void 0&&c.scale.fromArray(e.scale)),e.up!==void 0&&c.up.fromArray(e.up),e.castShadow!==void 0&&(c.castShadow=e.castShadow),e.receiveShadow!==void 0&&(c.receiveShadow=e.receiveShadow),e.shadow&&(e.shadow.intensity!==void 0&&(c.shadow.intensity=e.shadow.intensity),e.shadow.bias!==void 0&&(c.shadow.bias=e.shadow.bias),e.shadow.normalBias!==void 0&&(c.shadow.normalBias=e.shadow.normalBias),e.shadow.radius!==void 0&&(c.shadow.radius=e.shadow.radius),e.shadow.mapSize!==void 0&&c.shadow.mapSize.fromArray(e.shadow.mapSize),e.shadow.camera!==void 0&&(c.shadow.camera=this.parseObject(e.shadow.camera))),e.visible!==void 0&&(c.visible=e.visible),e.frustumCulled!==void 0&&(c.frustumCulled=e.frustumCulled),e.renderOrder!==void 0&&(c.renderOrder=e.renderOrder),e.userData!==void 0&&(c.userData=e.userData),e.layers!==void 0&&(c.layers.mask=e.layers),e.children!==void 0){const rA=e.children;for(let IA=0;IA<rA.length;IA++)c.add(this.parseObject(rA[IA],i,o,g,C))}if(e.animations!==void 0){const rA=e.animations;for(let IA=0;IA<rA.length;IA++){const cA=rA[IA];c.animations.push(C[cA])}}if(e.type==="LOD"){e.autoUpdate!==void 0&&(c.autoUpdate=e.autoUpdate);const rA=e.levels;for(let IA=0;IA<rA.length;IA++){const cA=rA[IA],JA=c.getObjectByProperty("uuid",cA.object);JA!==void 0&&c.addLevel(JA,cA.distance,cA.hysteresis)}}return c}bindSkeletons(e,i){Object.keys(i).length!==0&&e.traverse(function(o){if(o.isSkinnedMesh===!0&&o.skeleton!==void 0){const g=i[o.skeleton];g===void 0?console.warn("THREE.ObjectLoader: No skeleton found with UUID:",o.skeleton):o.bind(g,o.bindMatrix)}})}bindLightTargets(e){e.traverse(function(i){if(i.isDirectionalLight||i.isSpotLight){const o=i.target,g=e.getObjectByProperty("uuid",o);g!==void 0?i.target=g:i.target=new be}})}}const Fl={UVMapping:Be,CubeReflectionMapping:aA,CubeRefractionMapping:H,EquirectangularReflectionMapping:k,EquirectangularRefractionMapping:DA,CubeUVReflectionMapping:YA},oh={RepeatWrapping:ue,ClampToEdgeWrapping:De,MirroredRepeatWrapping:si},rh={NearestFilter:Mi,NearestMipmapNearestFilter:Si,NearestMipmapLinearFilter:zi,LinearFilter:kn,LinearMipmapNearestFilter:hr,LinearMipmapLinearFilter:is};class vl extends da{constructor(e){super(e),this.isImageBitmapLoader=!0,typeof createImageBitmap>"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(e){return this.options=e,this}load(e,i,o,g){e===void 0&&(e=""),this.path!==void 0&&(e=this.path+e),e=this.manager.resolveURL(e);const C=this,c=xI.get(e);if(c!==void 0){if(C.manager.itemStart(e),c.then){c.then(b=>{i&&i(b),C.manager.itemEnd(e)}).catch(b=>{g&&g(b)});return}return setTimeout(function(){i&&i(c),C.manager.itemEnd(e)},0),c}const f={};f.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",f.headers=this.requestHeader;const S=fetch(e,f).then(function(b){return b.blob()}).then(function(b){return createImageBitmap(b,Object.assign(C.options,{colorSpaceConversion:"none"}))}).then(function(b){return xI.add(e,b),i&&i(b),C.manager.itemEnd(e),b}).catch(function(b){g&&g(b),xI.remove(e),C.manager.itemError(e),C.manager.itemEnd(e)});xI.add(e,S),C.manager.itemStart(e)}}let wB;class pE{static getContext(){return wB===void 0&&(wB=new(window.AudioContext||window.webkitAudioContext)),wB}static setContext(e){wB=e}}class Nl extends da{constructor(e){super(e)}load(e,i,o,g){const C=this,c=new bI(this.manager);c.setResponseType("arraybuffer"),c.setPath(this.path),c.setRequestHeader(this.requestHeader),c.setWithCredentials(this.withCredentials),c.load(e,function(S){try{const b=S.slice(0);pE.getContext().decodeAudioData(b,function(oA){i(oA)}).catch(f)}catch(b){f(b)}},o,g);function f(S){g?g(S):console.error(S),C.manager.itemError(e)}}}const sh=new Eo,gh=new Eo,yC=new Eo;class Ul{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new ks,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new ks,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){const i=this._cache;if(i.focus!==e.focus||i.fov!==e.fov||i.aspect!==e.aspect*this.aspect||i.near!==e.near||i.far!==e.far||i.zoom!==e.zoom||i.eyeSep!==this.eyeSep){i.focus=e.focus,i.fov=e.fov,i.aspect=e.aspect*this.aspect,i.near=e.near,i.far=e.far,i.zoom=e.zoom,i.eyeSep=this.eyeSep,yC.copy(e.projectionMatrix);const g=i.eyeSep/2,C=g*i.near/i.focus,c=i.near*Math.tan($g*i.fov*.5)/i.zoom;let f,S;gh.elements[12]=-g,sh.elements[12]=g,f=-c*i.aspect+C,S=c*i.aspect+C,yC.elements[0]=2*i.near/(S-f),yC.elements[8]=(S+f)/(S-f),this.cameraL.projectionMatrix.copy(yC),f=-c*i.aspect-C,S=c*i.aspect-C,yC.elements[0]=2*i.near/(S-f),yC.elements[8]=(S+f)/(S-f),this.cameraR.projectionMatrix.copy(yC)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(gh),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(sh)}}class Ll extends ks{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e,this.index=0}}class dQ{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=ah(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const i=ah();e=(i-this.oldTime)/1e3,this.oldTime=i,this.elapsedTime+=e}return e}}function ah(){return performance.now()}const _I=new Qe,mE=new $o,xl=new Qe,wC=new Qe;class bl extends be{constructor(){super(),this.type="AudioListener",this.context=pE.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new dQ}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);const i=this.context.listener,o=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(_I,mE,xl),wC.set(0,0,-1).applyQuaternion(mE),i.positionX){const g=this.context.currentTime+this.timeDelta;i.positionX.linearRampToValueAtTime(_I.x,g),i.positionY.linearRampToValueAtTime(_I.y,g),i.positionZ.linearRampToValueAtTime(_I.z,g),i.forwardX.linearRampToValueAtTime(wC.x,g),i.forwardY.linearRampToValueAtTime(wC.y,g),i.forwardZ.linearRampToValueAtTime(wC.z,g),i.upX.linearRampToValueAtTime(o.x,g),i.upY.linearRampToValueAtTime(o.y,g),i.upZ.linearRampToValueAtTime(o.z,g)}else i.setPosition(_I.x,_I.y,_I.z),i.setOrientation(wC.x,wC.y,wC.z,o.x,o.y,o.z)}}class Ih extends be{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(this.isPlaying===!0){console.warn("THREE.Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+e;const i=this.context.createBufferSource();return i.buffer=this.buffer,i.loop=this.loop,i.loopStart=this.loopStart,i.loopEnd=this.loopEnd,i.onended=this.onEnded.bind(this),i.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=i,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(e=0){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this._progress=0,this.source!==null&&(this.source.stop(this.context.currentTime+e),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,i=this.filters.length;e<i;e++)this.filters[e-1].connect(this.filters[e]);this.filters[this.filters.length-1].connect(this.getOutput())}else this.source.connect(this.getOutput());return this._connected=!0,this}disconnect(){if(this._connected!==!1){if(this.filters.length>0){this.source.disconnect(this.filters[0]);for(let e=1,i=this.filters.length;e<i;e++)this.filters[e-1].disconnect(this.filters[e]);this.filters[this.filters.length-1].disconnect(this.getOutput())}else this.source.disconnect(this.getOutput());return this._connected=!1,this}}getFilters(){return this.filters}setFilters(e){return e||(e=[]),this._connected===!0?(this.disconnect(),this.filters=e.slice(),this.connect()):this.filters=e.slice(),this}setDetune(e){return this.detune=e,this.isPlaying===!0&&this.source.detune!==void 0&&this.source.detune.setTargetAtTime(this.detune,this.context.currentTime,.01),this}getDetune(){return this.detune}getFilter(){return this.getFilters()[0]}setFilter(e){return this.setFilters(e?[e]:[])}setPlaybackRate(e){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.playbackRate=e,this.isPlaying===!0&&this.source.playbackRate.setTargetAtTime(this.playbackRate,this.context.currentTime,.01),this}getPlaybackRate(){return this.playbackRate}onEnded(){this.isPlaying=!1,this._progress=0}getLoop(){return this.hasPlaybackControl===!1?(console.warn("THREE.Audio: this Audio has no playback control."),!1):this.loop}setLoop(e){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.loop=e,this.isPlaying===!0&&(this.source.loop=this.loop),this}setLoopStart(e){return this.loopStart=e,this}setLoopEnd(e){return this.loopEnd=e,this}getVolume(){return this.gain.gain.value}setVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}copy(e,i){return super.copy(e,i),e.sourceType!=="buffer"?(console.warn("THREE.Audio: Audio source type cannot be copied."),this):(this.autoplay=e.autoplay,this.buffer=e.buffer,this.detune=e.detune,this.loop=e.loop,this.loopStart=e.loopStart,this.loopEnd=e.loopEnd,this.offset=e.offset,this.duration=e.duration,this.playbackRate=e.playbackRate,this.hasPlaybackControl=e.hasPlaybackControl,this.sourceType=e.sourceType,this.filters=e.filters.slice(),this)}clone(e){return new this.constructor(this.listener).copy(this,e)}}const MC=new Qe,uQ=new $o,Ch=new Qe,Ha=new Qe;class kl extends Ih{constructor(e){super(e),this.panner=this.context.createPanner(),this.panner.panningModel="HRTF",this.panner.connect(this.gain)}connect(){super.connect(),this.panner.connect(this.gain)}disconnect(){super.disconnect(),this.panner.disconnect(this.gain)}getOutput(){return this.panner}getRefDistance(){return this.panner.refDistance}setRefDistance(e){return this.panner.refDistance=e,this}getRolloffFactor(){return this.panner.rolloffFactor}setRolloffFactor(e){return this.panner.rolloffFactor=e,this}getDistanceModel(){return this.panner.distanceModel}setDistanceModel(e){return this.panner.distanceModel=e,this}getMaxDistance(){return this.panner.maxDistance}setMaxDistance(e){return this.panner.maxDistance=e,this}setDirectionalCone(e,i,o){return this.panner.coneInnerAngle=e,this.panner.coneOuterAngle=i,this.panner.coneOuterGain=o,this}updateMatrixWorld(e){if(super.updateMatrixWorld(e),this.hasPlaybackControl===!0&&this.isPlaying===!1)return;this.matrixWorld.decompose(MC,uQ,Ch),Ha.set(0,0,1).applyQuaternion(uQ);const i=this.panner;if(i.positionX){const o=this.context.currentTime+this.listener.timeDelta;i.positionX.linearRampToValueAtTime(MC.x,o),i.positionY.linearRampToValueAtTime(MC.y,o),i.positionZ.linearRampToValueAtTime(MC.z,o),i.orientationX.linearRampToValueAtTime(Ha.x,o),i.orientationY.linearRampToValueAtTime(Ha.y,o),i.orientationZ.linearRampToValueAtTime(Ha.z,o)}else i.setPosition(MC.x,MC.y,MC.z),i.setOrientation(Ha.x,Ha.y,Ha.z)}}class fQ{constructor(e,i=2048){this.analyser=e.context.createAnalyser(),this.analyser.fftSize=i,this.data=new Uint8Array(this.analyser.frequencyBinCount),e.getOutput().connect(this.analyser)}getFrequencyData(){return this.analyser.getByteFrequencyData(this.data),this.data}getAverageFrequency(){let e=0;const i=this.getFrequencyData();for(let o=0;o<i.length;o++)e+=i[o];return e/i.length}}class Bh{constructor(e,i,o){this.binding=e,this.valueSize=o;let g,C,c;switch(i){case"quaternion":g=this._slerp,C=this._slerpAdditive,c=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(o*6),this._workIndex=5;break;case"string":case"bool":g=this._select,C=this._select,c=this._setAdditiveIdentityOther,this.buffer=new Array(o*5);break;default:g=this._lerp,C=this._lerpAdditive,c=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(o*5)}this._mixBufferRegion=g,this._mixBufferRegionAdditive=C,this._setIdentity=c,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(e,i){const o=this.buffer,g=this.valueSize,C=e*g+g;let c=this.cumulativeWeight;if(c===0){for(let f=0;f!==g;++f)o[C+f]=o[f];c=i}else{c+=i;const f=i/c;this._mixBufferRegion(o,C,0,f,g)}this.cumulativeWeight=c}accumulateAdditive(e){const i=this.buffer,o=this.valueSize,g=o*this._addIndex;this.cumulativeWeightAdditive===0&&this._setIdentity(),this._mixBufferRegionAdditive(i,g,0,e,o),this.cumulativeWeightAdditive+=e}apply(e){const i=this.valueSize,o=this.buffer,g=e*i+i,C=this.cumulativeWeight,c=this.cumulativeWeightAdditive,f=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,C<1){const S=i*this._origIndex;this._mixBufferRegion(o,g,S,1-C,i)}c>0&&this._mixBufferRegionAdditive(o,g,this._addIndex*i,1,i);for(let S=i,b=i+i;S!==b;++S)if(o[S]!==o[S+i]){f.setValue(o,g);break}}saveOriginalState(){const e=this.binding,i=this.buffer,o=this.valueSize,g=o*this._origIndex;e.getValue(i,g);for(let C=o,c=g;C!==c;++C)i[C]=i[g+C%o];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const e=this.valueSize*3;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){const e=this._addIndex*this.valueSize,i=e+this.valueSize;for(let o=e;o<i;o++)this.buffer[o]=0}_setAdditiveIdentityQuaternion(){this._setAdditiveIdentityNumeric(),this.buffer[this._addIndex*this.valueSize+3]=1}_setAdditiveIdentityOther(){const e=this._origIndex*this.valueSize,i=this._addIndex*this.valueSize;for(let o=0;o<this.valueSize;o++)this.buffer[i+o]=this.buffer[e+o]}_select(e,i,o,g,C){if(g>=.5)for(let c=0;c!==C;++c)e[i+c]=e[o+c]}_slerp(e,i,o,g){$o.slerpFlat(e,i,e,i,e,o,g)}_slerpAdditive(e,i,o,g,C){const c=this._workIndex*C;$o.multiplyQuaternionsFlat(e,c,e,i,e,o),$o.slerpFlat(e,i,e,i,e,c,g)}_lerp(e,i,o,g,C){const c=1-g;for(let f=0;f!==C;++f){const S=i+f;e[S]=e[S]*c+e[o+f]*g}}_lerpAdditive(e,i,o,g,C){for(let c=0;c!==C;++c){const f=i+c;e[f]=e[f]+e[o+c]*g}}}const pQ="\\[\\]\\.:\\/",_l=new RegExp("["+pQ+"]","g"),mQ="[^"+pQ+"]",SC="[^"+pQ.replace("\\.","")+"]",Tl=/((?:WC+[\/:])*)/.source.replace("WC",mQ),Kl=/(WCOD+)?/.source.replace("WCOD",SC),Jl=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",mQ),Yl=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",mQ),DE=new RegExp("^"+Tl+Kl+Jl+Yl+"$"),yE=["material","materials","bones","map"];class Eh{constructor(e,i,o){const g=o||gr.parseTrackName(i);this._targetGroup=e,this._bindings=e.subscribe_(i,g)}getValue(e,i){this.bind();const o=this._targetGroup.nCachedObjects_,g=this._bindings[o];g!==void 0&&g.getValue(e,i)}setValue(e,i){const o=this._bindings;for(let g=this._targetGroup.nCachedObjects_,C=o.length;g!==C;++g)o[g].setValue(e,i)}bind(){const e=this._bindings;for(let i=this._targetGroup.nCachedObjects_,o=e.length;i!==o;++i)e[i].bind()}unbind(){const e=this._bindings;for(let i=this._targetGroup.nCachedObjects_,o=e.length;i!==o;++i)e[i].unbind()}}class gr{constructor(e,i,o){this.path=i,this.parsedPath=o||gr.parseTrackName(i),this.node=gr.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,i,o){return e&&e.isAnimationObjectGroup?new gr.Composite(e,i,o):new gr(e,i,o)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(_l,"")}static parseTrackName(e){const i=DE.exec(e);if(i===null)throw new Error("PropertyBinding: Cannot parse trackName: "+e);const o={nodeName:i[2],objectName:i[3],objectIndex:i[4],propertyName:i[5],propertyIndex:i[6]},g=o.nodeName&&o.nodeName.lastIndexOf(".");if(g!==void 0&&g!==-1){const C=o.nodeName.substring(g+1);yE.indexOf(C)!==-1&&(o.nodeName=o.nodeName.substring(0,g),o.objectName=C)}if(o.propertyName===null||o.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return o}static findNode(e,i){if(i===void 0||i===""||i==="."||i===-1||i===e.name||i===e.uuid)return e;if(e.skeleton){const o=e.skeleton.getBoneByName(i);if(o!==void 0)return o}if(e.children){const o=function(C){for(let c=0;c<C.length;c++){const f=C[c];if(f.name===i||f.uuid===i)return f;const S=o(f.children);if(S)return S}return null},g=o(e.children);if(g)return g}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(e,i){e[i]=this.targetObject[this.propertyName]}_getValue_array(e,i){const o=this.resolvedProperty;for(let g=0,C=o.length;g!==C;++g)e[i++]=o[g]}_getValue_arrayElement(e,i){e[i]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(e,i){this.resolvedProperty.toArray(e,i)}_setValue_direct(e,i){this.targetObject[this.propertyName]=e[i]}_setValue_direct_setNeedsUpdate(e,i){this.targetObject[this.propertyName]=e[i],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(e,i){this.targetObject[this.propertyName]=e[i],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(e,i){const o=this.resolvedProperty;for(let g=0,C=o.length;g!==C;++g)o[g]=e[i++]}_setValue_array_setNeedsUpdate(e,i){const o=this.resolvedProperty;for(let g=0,C=o.length;g!==C;++g)o[g]=e[i++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(e,i){const o=this.resolvedProperty;for(let g=0,C=o.length;g!==C;++g)o[g]=e[i++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(e,i){this.resolvedProperty[this.propertyIndex]=e[i]}_setValue_arrayElement_setNeedsUpdate(e,i){this.resolvedProperty[this.propertyIndex]=e[i],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(e,i){this.resolvedProperty[this.propertyIndex]=e[i],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(e,i){this.resolvedProperty.fromArray(e,i)}_setValue_fromArray_setNeedsUpdate(e,i){this.resolvedProperty.fromArray(e,i),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(e,i){this.resolvedProperty.fromArray(e,i),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(e,i){this.bind(),this.getValue(e,i)}_setValue_unbound(e,i){this.bind(),this.setValue(e,i)}bind(){let e=this.node;const i=this.parsedPath,o=i.objectName,g=i.propertyName;let C=i.propertyIndex;if(e||(e=gr.findNode(this.rootNode,i.nodeName),this.node=e),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!e){console.warn("THREE.PropertyBinding: No target node found for track: "+this.path+".");return}if(o){let b=i.objectIndex;switch(o){case"materials":if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}e=e.material.materials;break;case"bones":if(!e.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}e=e.skeleton.bones;for(let $=0;$<e.length;$++)if(e[$].name===b){b=$;break}break;case"map":if("map"in e){e=e.map;break}if(!e.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!e.material.map){console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);return}e=e.material.map;break;default:if(e[o]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}e=e[o]}if(b!==void 0){if(e[b]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,e);return}e=e[b]}}const c=e[g];if(c===void 0){const b=i.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+b+"."+g+" but it wasn't found.",e);return}let f=this.Versioning.None;this.targetObject=e,e.isMaterial===!0?f=this.Versioning.NeedsUpdate:e.isObject3D===!0&&(f=this.Versioning.MatrixWorldNeedsUpdate);let S=this.BindingType.Direct;if(C!==void 0){if(g==="morphTargetInfluences"){if(!e.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!e.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}e.morphTargetDictionary[C]!==void 0&&(C=e.morphTargetDictionary[C])}S=this.BindingType.ArrayElement,this.resolvedProperty=c,this.propertyIndex=C}else c.fromArray!==void 0&&c.toArray!==void 0?(S=this.BindingType.HasFromToArray,this.resolvedProperty=c):Array.isArray(c)?(S=this.BindingType.EntireArray,this.resolvedProperty=c):this.propertyName=g;this.getValue=this.GetterByBindingType[S],this.setValue=this.SetterByBindingTypeAndVersioning[S][f]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}gr.Composite=Eh,gr.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},gr.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},gr.prototype.GetterByBindingType=[gr.prototype._getValue_direct,gr.prototype._getValue_array,gr.prototype._getValue_arrayElement,gr.prototype._getValue_toArray],gr.prototype.SetterByBindingTypeAndVersioning=[[gr.prototype._setValue_direct,gr.prototype._setValue_direct_setNeedsUpdate,gr.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[gr.prototype._setValue_array,gr.prototype._setValue_array_setNeedsUpdate,gr.prototype._setValue_array_setMatrixWorldNeedsUpdate],[gr.prototype._setValue_arrayElement,gr.prototype._setValue_arrayElement_setNeedsUpdate,gr.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[gr.prototype._setValue_fromArray,gr.prototype._setValue_fromArray_setNeedsUpdate,gr.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];class na{constructor(){this.isAnimationObjectGroup=!0,this.uuid=gg(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;const e={};this._indicesByUUID=e;for(let o=0,g=arguments.length;o!==g;++o)e[arguments[o].uuid]=o;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};const i=this;this.stats={objects:{get total(){return i._objects.length},get inUse(){return this.total-i.nCachedObjects_}},get bindingsPerObject(){return i._bindings.length}}}add(){const e=this._objects,i=this._indicesByUUID,o=this._paths,g=this._parsedPaths,C=this._bindings,c=C.length;let f,S=e.length,b=this.nCachedObjects_;for(let $=0,oA=arguments.length;$!==oA;++$){const rA=arguments[$],IA=rA.uuid;let cA=i[IA];if(cA===void 0){cA=S++,i[IA]=cA,e.push(rA);for(let JA=0,te=c;JA!==te;++JA)C[JA].push(new gr(rA,o[JA],g[JA]))}else if(cA<b){f=e[cA];const JA=--b,te=e[JA];i[te.uuid]=cA,e[cA]=te,i[IA]=JA,e[JA]=rA;for(let Ce=0,Me=c;Ce!==Me;++Ce){const Re=C[Ce],Ne=Re[JA];let wt=Re[cA];Re[cA]=Ne,wt===void 0&&(wt=new gr(rA,o[Ce],g[Ce])),Re[JA]=wt}}else e[cA]!==f&&console.error("THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.")}this.nCachedObjects_=b}remove(){const e=this._objects,i=this._indicesByUUID,o=this._bindings,g=o.length;let C=this.nCachedObjects_;for(let c=0,f=arguments.length;c!==f;++c){const S=arguments[c],b=S.uuid,$=i[b];if($!==void 0&&$>=C){const oA=C++,rA=e[oA];i[rA.uuid]=$,e[$]=rA,i[b]=oA,e[oA]=S;for(let IA=0,cA=g;IA!==cA;++IA){const JA=o[IA],te=JA[oA],Ce=JA[$];JA[$]=te,JA[oA]=Ce}}}this.nCachedObjects_=C}uncache(){const e=this._objects,i=this._indicesByUUID,o=this._bindings,g=o.length;let C=this.nCachedObjects_,c=e.length;for(let f=0,S=arguments.length;f!==S;++f){const b=arguments[f],$=b.uuid,oA=i[$];if(oA!==void 0)if(delete i[$],oA<C){const rA=--C,IA=e[rA],cA=--c,JA=e[cA];i[IA.uuid]=oA,e[oA]=IA,i[JA.uuid]=rA,e[rA]=JA,e.pop();for(let te=0,Ce=g;te!==Ce;++te){const Me=o[te],Re=Me[rA],Ne=Me[cA];Me[oA]=Re,Me[rA]=Ne,Me.pop()}}else{const rA=--c,IA=e[rA];rA>0&&(i[IA.uuid]=oA),e[oA]=IA,e.pop();for(let cA=0,JA=g;cA!==JA;++cA){const te=o[cA];te[oA]=te[rA],te.pop()}}}this.nCachedObjects_=C}subscribe_(e,i){const o=this._bindingsIndicesByPath;let g=o[e];const C=this._bindings;if(g!==void 0)return C[g];const c=this._paths,f=this._parsedPaths,S=this._objects,b=S.length,$=this.nCachedObjects_,oA=new Array(b);g=C.length,o[e]=g,c.push(e),f.push(i),C.push(oA);for(let rA=$,IA=S.length;rA!==IA;++rA){const cA=S[rA];oA[rA]=new gr(cA,e,i)}return oA}unsubscribe_(e){const i=this._bindingsIndicesByPath,o=i[e];if(o!==void 0){const g=this._paths,C=this._parsedPaths,c=this._bindings,f=c.length-1,S=c[f],b=e[f];i[b]=o,c[o]=S,c.pop(),C[o]=C[f],C.pop(),g[o]=g[f],g.pop()}}}class $I{constructor(e,i,o=null,g=i.blendMode){this._mixer=e,this._clip=i,this._localRoot=o,this.blendMode=g;const C=i.tracks,c=C.length,f=new Array(c),S={endingStart:Sa,endingEnd:Sa};for(let b=0;b!==c;++b){const $=C[b].createInterpolant(null);f[b]=$,$.settings=S}this._interpolantSettings=S,this._interpolants=f,this._propertyBindings=new Array(c),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=pI,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,i){return this.loop=e,this.repetitions=i,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,i,o){if(e.fadeOut(i),this.fadeIn(i),o){const g=this._clip.duration,C=e._clip.duration,c=C/g,f=g/C;e.warp(1,c,i),this.warp(f,1,i)}return this}crossFadeTo(e,i,o){return e.crossFadeFrom(this,i,o)}stopFading(){const e=this._weightInterpolant;return e!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,i,o){const g=this._mixer,C=g.time,c=this.timeScale;let f=this._timeScaleInterpolant;f===null&&(f=g._lendControlInterpolant(),this._timeScaleInterpolant=f);const S=f.parameterPositions,b=f.sampleValues;return S[0]=C,S[1]=C+o,b[0]=e/c,b[1]=i/c,this}stopWarping(){const e=this._timeScaleInterpolant;return e!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,i,o,g){if(!this.enabled){this._updateWeight(e);return}const C=this._startTime;if(C!==null){const S=(e-C)*o;S<0||o===0?i=0:(this._startTime=null,i=o*S)}i*=this._updateTimeScale(e);const c=this._updateTime(i),f=this._updateWeight(e);if(f>0){const S=this._interpolants,b=this._propertyBindings;switch(this.blendMode){case Jg:for(let $=0,oA=S.length;$!==oA;++$)S[$].evaluate(c),b[$].accumulateAdditive(f);break;case jr:default:for(let $=0,oA=S.length;$!==oA;++$)S[$].evaluate(c),b[$].accumulate(g,f)}}}_updateWeight(e){let i=0;if(this.enabled){i=this.weight;const o=this._weightInterpolant;if(o!==null){const g=o.evaluate(e)[0];i*=g,e>o.parameterPositions[1]&&(this.stopFading(),g===0&&(this.enabled=!1))}}return this._effectiveWeight=i,i}_updateTimeScale(e){let i=0;if(!this.paused){i=this.timeScale;const o=this._timeScaleInterpolant;if(o!==null){const g=o.evaluate(e)[0];i*=g,e>o.parameterPositions[1]&&(this.stopWarping(),i===0?this.paused=!0:this.timeScale=i)}}return this._effectiveTimeScale=i,i}_updateTime(e){const i=this._clip.duration,o=this.loop;let g=this.time+e,C=this._loopCount;const c=o===oC;if(e===0)return C===-1?g:c&&(C&1)===1?i-g:g;if(o===sI){C===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));A:{if(g>=i)g=i;else if(g<0)g=0;else{this.time=g;break A}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=g,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(C===-1&&(e>=0?(C=0,this._setEndings(!0,this.repetitions===0,c)):this._setEndings(this.repetitions===0,!0,c)),g>=i||g<0){const f=Math.floor(g/i);g-=i*f,C+=Math.abs(f);const S=this.repetitions-C;if(S<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,g=e>0?i:0,this.time=g,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(S===1){const b=e<0;this._setEndings(b,!b,c)}else this._setEndings(!1,!1,c);this._loopCount=C,this.time=g,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:f})}}else this.time=g;if(c&&(C&1)===1)return i-g}return g}_setEndings(e,i,o){const g=this._interpolantSettings;o?(g.endingStart=In,g.endingEnd=In):(e?g.endingStart=this.zeroSlopeAtStart?In:Sa:g.endingStart=ii,i?g.endingEnd=this.zeroSlopeAtEnd?In:Sa:g.endingEnd=ii)}_scheduleFading(e,i,o){const g=this._mixer,C=g.time;let c=this._weightInterpolant;c===null&&(c=g._lendControlInterpolant(),this._weightInterpolant=c);const f=c.parameterPositions,S=c.sampleValues;return f[0]=C,S[0]=i,f[1]=C+e,S[1]=o,this}}const DQ=new Float32Array(1);class HC extends qn{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,i){const o=e._localRoot||this._root,g=e._clip.tracks,C=g.length,c=e._propertyBindings,f=e._interpolants,S=o.uuid,b=this._bindingsByRootAndName;let $=b[S];$===void 0&&($={},b[S]=$);for(let oA=0;oA!==C;++oA){const rA=g[oA],IA=rA.name;let cA=$[IA];if(cA!==void 0)++cA.referenceCount,c[oA]=cA;else{if(cA=c[oA],cA!==void 0){cA._cacheIndex===null&&(++cA.referenceCount,this._addInactiveBinding(cA,S,IA));continue}const JA=i&&i._propertyBindings[oA].binding.parsedPath;cA=new Bh(gr.create(o,IA,JA),rA.ValueTypeName,rA.getValueSize()),++cA.referenceCount,this._addInactiveBinding(cA,S,IA),c[oA]=cA}f[oA].resultBuffer=cA.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(e._cacheIndex===null){const o=(e._localRoot||this._root).uuid,g=e._clip.uuid,C=this._actionsByClip[g];this._bindAction(e,C&&C.knownActions[0]),this._addInactiveAction(e,g,o)}const i=e._propertyBindings;for(let o=0,g=i.length;o!==g;++o){const C=i[o];C.useCount++===0&&(this._lendBinding(C),C.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){const i=e._propertyBindings;for(let o=0,g=i.length;o!==g;++o){const C=i[o];--C.useCount===0&&(C.restoreOriginalState(),this._takeBackBinding(C))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){const i=e._cacheIndex;return i!==null&&i<this._nActiveActions}_addInactiveAction(e,i,o){const g=this._actions,C=this._actionsByClip;let c=C[i];if(c===void 0)c={knownActions:[e],actionByRoot:{}},e._byClipCacheIndex=0,C[i]=c;else{const f=c.knownActions;e._byClipCacheIndex=f.length,f.push(e)}e._cacheIndex=g.length,g.push(e),c.actionByRoot[o]=e}_removeInactiveAction(e){const i=this._actions,o=i[i.length-1],g=e._cacheIndex;o._cacheIndex=g,i[g]=o,i.pop(),e._cacheIndex=null;const C=e._clip.uuid,c=this._actionsByClip,f=c[C],S=f.knownActions,b=S[S.length-1],$=e._byClipCacheIndex;b._byClipCacheIndex=$,S[$]=b,S.pop(),e._byClipCacheIndex=null;const oA=f.actionByRoot,rA=(e._localRoot||this._root).uuid;delete oA[rA],S.length===0&&delete c[C],this._removeInactiveBindingsForAction(e)}_removeInactiveBindingsForAction(e){const i=e._propertyBindings;for(let o=0,g=i.length;o!==g;++o){const C=i[o];--C.referenceCount===0&&this._removeInactiveBinding(C)}}_lendAction(e){const i=this._actions,o=e._cacheIndex,g=this._nActiveActions++,C=i[g];e._cacheIndex=g,i[g]=e,C._cacheIndex=o,i[o]=C}_takeBackAction(e){const i=this._actions,o=e._cacheIndex,g=--this._nActiveActions,C=i[g];e._cacheIndex=g,i[g]=e,C._cacheIndex=o,i[o]=C}_addInactiveBinding(e,i,o){const g=this._bindingsByRootAndName,C=this._bindings;let c=g[i];c===void 0&&(c={},g[i]=c),c[o]=e,e._cacheIndex=C.length,C.push(e)}_removeInactiveBinding(e){const i=this._bindings,o=e.binding,g=o.rootNode.uuid,C=o.path,c=this._bindingsByRootAndName,f=c[g],S=i[i.length-1],b=e._cacheIndex;S._cacheIndex=b,i[b]=S,i.pop(),delete f[C],Object.keys(f).length===0&&delete c[g]}_lendBinding(e){const i=this._bindings,o=e._cacheIndex,g=this._nActiveBindings++,C=i[g];e._cacheIndex=g,i[g]=e,C._cacheIndex=o,i[o]=C}_takeBackBinding(e){const i=this._bindings,o=e._cacheIndex,g=--this._nActiveBindings,C=i[g];e._cacheIndex=g,i[g]=e,C._cacheIndex=o,i[o]=C}_lendControlInterpolant(){const e=this._controlInterpolants,i=this._nActiveControlInterpolants++;let o=e[i];return o===void 0&&(o=new gQ(new Float32Array(2),new Float32Array(2),1,DQ),o.__cacheIndex=i,e[i]=o),o}_takeBackControlInterpolant(e){const i=this._controlInterpolants,o=e.__cacheIndex,g=--this._nActiveControlInterpolants,C=i[g];e.__cacheIndex=g,i[g]=e,C.__cacheIndex=o,i[o]=C}clipAction(e,i,o){const g=i||this._root,C=g.uuid;let c=typeof e=="string"?fB.findByName(g,e):e;const f=c!==null?c.uuid:e,S=this._actionsByClip[f];let b=null;if(o===void 0&&(c!==null?o=c.blendMode:o=jr),S!==void 0){const oA=S.actionByRoot[C];if(oA!==void 0&&oA.blendMode===o)return oA;b=S.knownActions[0],c===null&&(c=b._clip)}if(c===null)return null;const $=new $I(this,c,i,o);return this._bindAction($,b),this._addInactiveAction($,f,C),$}existingAction(e,i){const o=i||this._root,g=o.uuid,C=typeof e=="string"?fB.findByName(o,e):e,c=C?C.uuid:e,f=this._actionsByClip[c];return f!==void 0&&f.actionByRoot[g]||null}stopAllAction(){const e=this._actions,i=this._nActiveActions;for(let o=i-1;o>=0;--o)e[o].stop();return this}update(e){e*=this.timeScale;const i=this._actions,o=this._nActiveActions,g=this.time+=e,C=Math.sign(e),c=this._accuIndex^=1;for(let b=0;b!==o;++b)i[b]._update(g,e,C,c);const f=this._bindings,S=this._nActiveBindings;for(let b=0;b!==S;++b)f[b].apply(c);return this}setTime(e){this.time=0;for(let i=0;i<this._actions.length;i++)this._actions[i].time=0;return this.update(e)}getRoot(){return this._root}uncacheClip(e){const i=this._actions,o=e.uuid,g=this._actionsByClip,C=g[o];if(C!==void 0){const c=C.knownActions;for(let f=0,S=c.length;f!==S;++f){const b=c[f];this._deactivateAction(b);const $=b._cacheIndex,oA=i[i.length-1];b._cacheIndex=null,b._byClipCacheIndex=null,oA._cacheIndex=$,i[$]=oA,i.pop(),this._removeInactiveBindingsForAction(b)}delete g[o]}}uncacheRoot(e){const i=e.uuid,o=this._actionsByClip;for(const c in o){const f=o[c].actionByRoot,S=f[i];S!==void 0&&(this._deactivateAction(S),this._removeInactiveAction(S))}const g=this._bindingsByRootAndName,C=g[i];if(C!==void 0)for(const c in C){const f=C[c];f.restoreOriginalState(),this._removeInactiveBinding(f)}}uncacheAction(e,i){const o=this.existingAction(e,i);o!==null&&(this._deactivateAction(o),this._removeInactiveAction(o))}}class MB extends Ig{constructor(e=1,i=1,o=1,g={}){super(e,i,g),this.isRenderTarget3D=!0,this.depth=o,this.texture=new Po(null,e,i,o),this.texture.isRenderTargetTexture=!0}}class PC extends Ig{constructor(e=1,i=1,o=1,g={}){super(e,i,g),this.isRenderTargetArray=!0,this.depth=o,this.texture=new Sn(null,e,i,o),this.texture.isRenderTargetTexture=!0}}class AC{constructor(e){this.value=e}clone(){return new AC(this.value.clone===void 0?this.value:this.value.clone())}}let OC=0;class SB extends qn{constructor(){super(),this.isUniformsGroup=!0,Object.defineProperty(this,"id",{value:OC++}),this.name="",this.usage=Fs,this.uniforms=[]}add(e){return this.uniforms.push(e),this}remove(e){const i=this.uniforms.indexOf(e);return i!==-1&&this.uniforms.splice(i,1),this}setName(e){return this.name=e,this}setUsage(e){return this.usage=e,this}dispose(){return this.dispatchEvent({type:"dispose"}),this}copy(e){this.name=e.name,this.usage=e.usage;const i=e.uniforms;this.uniforms.length=0;for(let o=0,g=i.length;o<g;o++){const C=Array.isArray(i[o])?i[o]:[i[o]];for(let c=0;c<C.length;c++)this.uniforms.push(C[c].clone())}return this}clone(){return new this.constructor().copy(this)}}class Qh extends gC{constructor(e,i,o=1){super(e,i),this.isInstancedInterleavedBuffer=!0,this.meshPerAttribute=o}copy(e){return super.copy(e),this.meshPerAttribute=e.meshPerAttribute,this}clone(e){const i=super.clone(e);return i.meshPerAttribute=this.meshPerAttribute,i}toJSON(e){const i=super.toJSON(e);return i.isInstancedInterleavedBuffer=!0,i.meshPerAttribute=this.meshPerAttribute,i}}class wE{constructor(e,i,o,g,C){this.isGLBufferAttribute=!0,this.name="",this.buffer=e,this.type=i,this.itemSize=o,this.elementSize=g,this.count=C,this.version=0}set needsUpdate(e){e===!0&&this.version++}setBuffer(e){return this.buffer=e,this}setType(e,i){return this.type=e,this.elementSize=i,this}setItemSize(e){return this.itemSize=e,this}setCount(e){return this.count=e,this}}const qC=new Eo;class ME{constructor(e,i,o=0,g=1/0){this.ray=new eg(e,i),this.near=o,this.far=g,this.camera=null,this.layers=new L,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(e,i){this.ray.set(e,i)}setFromCamera(e,i){i.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(i.matrixWorld),this.ray.direction.set(e.x,e.y,.5).unproject(i).sub(this.ray.origin).normalize(),this.camera=i):i.isOrthographicCamera?(this.ray.origin.set(e.x,e.y,(i.near+i.far)/(i.near-i.far)).unproject(i),this.ray.direction.set(0,0,-1).transformDirection(i.matrixWorld),this.camera=i):console.error("THREE.Raycaster: Unsupported camera type: "+i.type)}setFromXRController(e){return qC.identity().extractRotation(e.matrixWorld),this.ray.origin.setFromMatrixPosition(e.matrixWorld),this.ray.direction.set(0,0,-1).applyMatrix4(qC),this}intersectObject(e,i=!0,o=[]){return RB(e,this,o,i),o.sort(yQ),o}intersectObjects(e,i=!0,o=[]){for(let g=0,C=e.length;g<C;g++)RB(e[g],this,o,i);return o.sort(yQ),o}}function yQ(P,e){return P.distance-e.distance}function RB(P,e,i,o){let g=!0;if(P.layers.test(e.layers)&&P.raycast(e,i)===!1&&(g=!1),g===!0&&o===!0){const C=P.children;for(let c=0,f=C.length;c<f;c++)RB(C[c],e,i,!0)}}class ch{constructor(e=1,i=0,o=0){return this.radius=e,this.phi=i,this.theta=o,this}set(e,i,o){return this.radius=e,this.phi=i,this.theta=o,this}copy(e){return this.radius=e.radius,this.phi=e.phi,this.theta=e.theta,this}makeSafe(){return this.phi=no(this.phi,1e-6,Math.PI-1e-6),this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,i,o){return this.radius=Math.sqrt(e*e+i*i+o*o),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(e,o),this.phi=Math.acos(no(i/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}}class hh{constructor(e=1,i=0,o=0){return this.radius=e,this.theta=i,this.y=o,this}set(e,i,o){return this.radius=e,this.theta=i,this.y=o,this}copy(e){return this.radius=e.radius,this.theta=e.theta,this.y=e.y,this}setFromVector3(e){return this.setFromCartesianCoords(e.x,e.y,e.z)}setFromCartesianCoords(e,i,o){return this.radius=Math.sqrt(e*e+o*o),this.theta=Math.atan2(e,o),this.y=i,this}clone(){return new this.constructor().copy(this)}}class WC{constructor(e,i,o,g){WC.prototype.isMatrix2=!0,this.elements=[1,0,0,1],e!==void 0&&this.set(e,i,o,g)}identity(){return this.set(1,0,0,1),this}fromArray(e,i=0){for(let o=0;o<4;o++)this.elements[o]=e[o+i];return this}set(e,i,o,g){const C=this.elements;return C[0]=e,C[2]=i,C[1]=o,C[3]=g,this}}const GB=new ni;class lh{constructor(e=new ni(1/0,1/0),i=new ni(-1/0,-1/0)){this.isBox2=!0,this.min=e,this.max=i}set(e,i){return this.min.copy(e),this.max.copy(i),this}setFromPoints(e){this.makeEmpty();for(let i=0,o=e.length;i<o;i++)this.expandByPoint(e[i]);return this}setFromCenterAndSize(e,i){const o=GB.copy(i).multiplyScalar(.5);return this.min.copy(e).sub(o),this.max.copy(e).add(o),this}clone(){return new this.constructor().copy(this)}copy(e){return this.min.copy(e.min),this.max.copy(e.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(e){return this.isEmpty()?e.set(0,0):e.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(e){return this.isEmpty()?e.set(0,0):e.subVectors(this.max,this.min)}expandByPoint(e){return this.min.min(e),this.max.max(e),this}expandByVector(e){return this.min.sub(e),this.max.add(e),this}expandByScalar(e){return this.min.addScalar(-e),this.max.addScalar(e),this}containsPoint(e){return e.x>=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,i){return i.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y}clampPoint(e,i){return i.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,GB).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}const wQ=new Qe,FB=new Qe;class dh{constructor(e=new Qe,i=new Qe){this.start=e,this.end=i}set(e,i){return this.start.copy(e),this.end.copy(i),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,i){return this.delta(i).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,i){wQ.subVectors(e,this.start),FB.subVectors(this.end,this.start);const o=FB.dot(FB);let C=FB.dot(wQ)/o;return i&&(C=no(C,0,1)),C}closestPointToPoint(e,i,o){const g=this.closestPointToPointParameter(e,i);return this.delta(o).multiplyScalar(g).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const MQ=new Qe;class Hl extends be{constructor(e,i){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=i,this.type="SpotLightHelper";const o=new Rn,g=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let c=0,f=1,S=32;c<S;c++,f++){const b=c/S*Math.PI*2,$=f/S*Math.PI*2;g.push(Math.cos(b),Math.sin(b),1,Math.cos($),Math.sin($),1)}o.setAttribute("position",new he(g,3));const C=new ia({fog:!1,toneMapped:!1});this.cone=new cI(o,C),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),this.parent?(this.parent.updateWorldMatrix(!0),this.matrix.copy(this.parent.matrixWorld).invert().multiply(this.light.matrixWorld)):this.matrix.copy(this.light.matrixWorld),this.matrixWorld.copy(this.light.matrixWorld);const e=this.light.distance?this.light.distance:1e3,i=e*Math.tan(this.light.angle);this.cone.scale.set(i,i,e),MQ.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(MQ),this.color!==void 0?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}}const TI=new Qe,RC=new Eo,vB=new Eo;class uh extends cI{constructor(e){const i=SE(e),o=new Rn,g=[],C=[],c=new ht(0,0,1),f=new ht(0,1,0);for(let b=0;b<i.length;b++){const $=i[b];$.parent&&$.parent.isBone&&(g.push(0,0,0),g.push(0,0,0),C.push(c.r,c.g,c.b),C.push(f.r,f.g,f.b))}o.setAttribute("position",new he(g,3)),o.setAttribute("color",new he(C,3));const S=new ia({vertexColors:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,transparent:!0});super(o,S),this.isSkeletonHelper=!0,this.type="SkeletonHelper",this.root=e,this.bones=i,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1}updateMatrixWorld(e){const i=this.bones,o=this.geometry,g=o.getAttribute("position");vB.copy(this.root.matrixWorld).invert();for(let C=0,c=0;C<i.length;C++){const f=i[C];f.parent&&f.parent.isBone&&(RC.multiplyMatrices(vB,f.matrixWorld),TI.setFromMatrixPosition(RC),g.setXYZ(c,TI.x,TI.y,TI.z),RC.multiplyMatrices(vB,f.parent.matrixWorld),TI.setFromMatrixPosition(RC),g.setXYZ(c+1,TI.x,TI.y,TI.z),c+=2)}o.getAttribute("position").needsUpdate=!0,super.updateMatrixWorld(e)}dispose(){this.geometry.dispose(),this.material.dispose()}}function SE(P){const e=[];P.isBone===!0&&e.push(P);for(let i=0;i<P.children.length;i++)e.push.apply(e,SE(P.children[i]));return e}class fh extends Jn{constructor(e,i,o){const g=new dI(i,4,2),C=new Bi({wireframe:!0,fog:!1,toneMapped:!1});super(g,C),this.light=e,this.color=o,this.type="PointLightHelper",this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1,this.update()}dispose(){this.geometry.dispose(),this.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.color!==void 0?this.material.color.set(this.color):this.material.color.copy(this.light.color)}}const SQ=new Qe,KI=new ht,RQ=new ht;class Pl extends be{constructor(e,i,o){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=o,this.type="HemisphereLightHelper";const g=new YC(i);g.rotateY(Math.PI*.5),this.material=new Bi({wireframe:!0,fog:!1,toneMapped:!1}),this.color===void 0&&(this.material.vertexColors=!0);const C=g.getAttribute("position"),c=new Float32Array(C.count*3);g.setAttribute("color",new an(c,3)),this.add(new Jn(g,this.material)),this.update()}dispose(){this.children[0].geometry.dispose(),this.children[0].material.dispose()}update(){const e=this.children[0];if(this.color!==void 0)this.material.color.set(this.color);else{const i=e.geometry.getAttribute("color");KI.copy(this.light.color),RQ.copy(this.light.groundColor);for(let o=0,g=i.count;o<g;o++){const C=o<g/2?KI:RQ;i.setXYZ(o,C.r,C.g,C.b)}i.needsUpdate=!0}this.light.updateWorldMatrix(!0,!1),e.lookAt(SQ.setFromMatrixPosition(this.light.matrixWorld).negate())}}class RE extends cI{constructor(e=10,i=10,o=4473924,g=8947848){o=new ht(o),g=new ht(g);const C=i/2,c=e/i,f=e/2,S=[],b=[];for(let rA=0,IA=0,cA=-f;rA<=i;rA++,cA+=c){S.push(-f,0,cA,f,0,cA),S.push(cA,0,-f,cA,0,f);const JA=rA===C?o:g;JA.toArray(b,IA),IA+=3,JA.toArray(b,IA),IA+=3,JA.toArray(b,IA),IA+=3,JA.toArray(b,IA),IA+=3}const $=new Rn;$.setAttribute("position",new he(S,3)),$.setAttribute("color",new he(b,3));const oA=new ia({vertexColors:!0,toneMapped:!1});super($,oA),this.type="GridHelper"}dispose(){this.geometry.dispose(),this.material.dispose()}}class VC extends cI{constructor(e=10,i=16,o=8,g=64,C=4473924,c=8947848){C=new ht(C),c=new ht(c);const f=[],S=[];if(i>1)for(let oA=0;oA<i;oA++){const rA=oA/i*(Math.PI*2),IA=Math.sin(rA)*e,cA=Math.cos(rA)*e;f.push(0,0,0),f.push(IA,0,cA);const JA=oA&1?C:c;S.push(JA.r,JA.g,JA.b),S.push(JA.r,JA.g,JA.b)}for(let oA=0;oA<o;oA++){const rA=oA&1?C:c,IA=e-e/o*oA;for(let cA=0;cA<g;cA++){let JA=cA/g*(Math.PI*2),te=Math.sin(JA)*IA,Ce=Math.cos(JA)*IA;f.push(te,0,Ce),S.push(rA.r,rA.g,rA.b),JA=(cA+1)/g*(Math.PI*2),te=Math.sin(JA)*IA,Ce=Math.cos(JA)*IA,f.push(te,0,Ce),S.push(rA.r,rA.g,rA.b)}}const b=new Rn;b.setAttribute("position",new he(f,3)),b.setAttribute("color",new he(S,3));const $=new ia({vertexColors:!0,toneMapped:!1});super(b,$),this.type="PolarGridHelper"}dispose(){this.geometry.dispose(),this.material.dispose()}}const GC=new Qe,NB=new Qe,UB=new Qe;class ph extends be{constructor(e,i,o){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=o,this.type="DirectionalLightHelper",i===void 0&&(i=1);let g=new Rn;g.setAttribute("position",new he([-i,i,0,i,i,0,i,-i,0,-i,-i,0,-i,i,0],3));const C=new ia({fog:!1,toneMapped:!1});this.lightPlane=new zI(g,C),this.add(this.lightPlane),g=new Rn,g.setAttribute("position",new he([0,0,0,0,0,1],3)),this.targetLine=new zI(g,C),this.add(this.targetLine),this.update()}dispose(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),GC.setFromMatrixPosition(this.light.matrixWorld),NB.setFromMatrixPosition(this.light.target.matrixWorld),UB.subVectors(NB,GC),this.lightPlane.lookAt(NB),this.color!==void 0?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(NB),this.targetLine.scale.z=UB.length()}}const GE=new Qe,Qs=new Ui;class LB extends cI{constructor(e){const i=new Rn,o=new ia({color:16777215,vertexColors:!0,toneMapped:!1}),g=[],C=[],c={};f("n1","n2"),f("n2","n4"),f("n4","n3"),f("n3","n1"),f("f1","f2"),f("f2","f4"),f("f4","f3"),f("f3","f1"),f("n1","f1"),f("n2","f2"),f("n3","f3"),f("n4","f4"),f("p","n1"),f("p","n2"),f("p","n3"),f("p","n4"),f("u1","u2"),f("u2","u3"),f("u3","u1"),f("c","t"),f("p","c"),f("cn1","cn2"),f("cn3","cn4"),f("cf1","cf2"),f("cf3","cf4");function f(cA,JA){S(cA),S(JA)}function S(cA){g.push(0,0,0),C.push(0,0,0),c[cA]===void 0&&(c[cA]=[]),c[cA].push(g.length/3-1)}i.setAttribute("position",new he(g,3)),i.setAttribute("color",new he(C,3)),super(i,o),this.type="CameraHelper",this.camera=e,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=c,this.update();const b=new ht(16755200),$=new ht(16711680),oA=new ht(43775),rA=new ht(16777215),IA=new ht(3355443);this.setColors(b,$,oA,rA,IA)}setColors(e,i,o,g,C){const f=this.geometry.getAttribute("color");f.setXYZ(0,e.r,e.g,e.b),f.setXYZ(1,e.r,e.g,e.b),f.setXYZ(2,e.r,e.g,e.b),f.setXYZ(3,e.r,e.g,e.b),f.setXYZ(4,e.r,e.g,e.b),f.setXYZ(5,e.r,e.g,e.b),f.setXYZ(6,e.r,e.g,e.b),f.setXYZ(7,e.r,e.g,e.b),f.setXYZ(8,e.r,e.g,e.b),f.setXYZ(9,e.r,e.g,e.b),f.setXYZ(10,e.r,e.g,e.b),f.setXYZ(11,e.r,e.g,e.b),f.setXYZ(12,e.r,e.g,e.b),f.setXYZ(13,e.r,e.g,e.b),f.setXYZ(14,e.r,e.g,e.b),f.setXYZ(15,e.r,e.g,e.b),f.setXYZ(16,e.r,e.g,e.b),f.setXYZ(17,e.r,e.g,e.b),f.setXYZ(18,e.r,e.g,e.b),f.setXYZ(19,e.r,e.g,e.b),f.setXYZ(20,e.r,e.g,e.b),f.setXYZ(21,e.r,e.g,e.b),f.setXYZ(22,e.r,e.g,e.b),f.setXYZ(23,e.r,e.g,e.b),f.setXYZ(24,i.r,i.g,i.b),f.setXYZ(25,i.r,i.g,i.b),f.setXYZ(26,i.r,i.g,i.b),f.setXYZ(27,i.r,i.g,i.b),f.setXYZ(28,i.r,i.g,i.b),f.setXYZ(29,i.r,i.g,i.b),f.setXYZ(30,i.r,i.g,i.b),f.setXYZ(31,i.r,i.g,i.b),f.setXYZ(32,o.r,o.g,o.b),f.setXYZ(33,o.r,o.g,o.b),f.setXYZ(34,o.r,o.g,o.b),f.setXYZ(35,o.r,o.g,o.b),f.setXYZ(36,o.r,o.g,o.b),f.setXYZ(37,o.r,o.g,o.b),f.setXYZ(38,g.r,g.g,g.b),f.setXYZ(39,g.r,g.g,g.b),f.setXYZ(40,C.r,C.g,C.b),f.setXYZ(41,C.r,C.g,C.b),f.setXYZ(42,C.r,C.g,C.b),f.setXYZ(43,C.r,C.g,C.b),f.setXYZ(44,C.r,C.g,C.b),f.setXYZ(45,C.r,C.g,C.b),f.setXYZ(46,C.r,C.g,C.b),f.setXYZ(47,C.r,C.g,C.b),f.setXYZ(48,C.r,C.g,C.b),f.setXYZ(49,C.r,C.g,C.b),f.needsUpdate=!0}update(){const e=this.geometry,i=this.pointMap,o=1,g=1;Qs.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse);const C=this.camera.coordinateSystem===ss?-1:0;Ws("c",i,e,Qs,0,0,C),Ws("t",i,e,Qs,0,0,1),Ws("n1",i,e,Qs,-1,-1,C),Ws("n2",i,e,Qs,o,-1,C),Ws("n3",i,e,Qs,-1,g,C),Ws("n4",i,e,Qs,o,g,C),Ws("f1",i,e,Qs,-1,-1,1),Ws("f2",i,e,Qs,o,-1,1),Ws("f3",i,e,Qs,-1,g,1),Ws("f4",i,e,Qs,o,g,1),Ws("u1",i,e,Qs,o*.7,g*1.1,C),Ws("u2",i,e,Qs,-.7,g*1.1,C),Ws("u3",i,e,Qs,0,g*2,C),Ws("cf1",i,e,Qs,-1,0,1),Ws("cf2",i,e,Qs,o,0,1),Ws("cf3",i,e,Qs,0,-1,1),Ws("cf4",i,e,Qs,0,g,1),Ws("cn1",i,e,Qs,-1,0,C),Ws("cn2",i,e,Qs,o,0,C),Ws("cn3",i,e,Qs,0,-1,C),Ws("cn4",i,e,Qs,0,g,C),e.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}function Ws(P,e,i,o,g,C,c){GE.set(g,C,c).unproject(o);const f=e[P];if(f!==void 0){const S=i.getAttribute("position");for(let b=0,$=f.length;b<$;b++)S.setXYZ(f[b],GE.x,GE.y,GE.z)}}const FE=new Xr;class Ol extends cI{constructor(e,i=16776960){const o=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),g=new Float32Array(8*3),C=new Rn;C.setIndex(new an(o,1)),C.setAttribute("position",new an(g,3)),super(C,new ia({color:i,toneMapped:!1})),this.object=e,this.type="BoxHelper",this.matrixAutoUpdate=!1,this.update()}update(e){if(e!==void 0&&console.warn("THREE.BoxHelper: .update() has no longer arguments."),this.object!==void 0&&FE.setFromObject(this.object),FE.isEmpty())return;const i=FE.min,o=FE.max,g=this.geometry.attributes.position,C=g.array;C[0]=o.x,C[1]=o.y,C[2]=o.z,C[3]=i.x,C[4]=o.y,C[5]=o.z,C[6]=i.x,C[7]=i.y,C[8]=o.z,C[9]=o.x,C[10]=i.y,C[11]=o.z,C[12]=o.x,C[13]=o.y,C[14]=i.z,C[15]=i.x,C[16]=o.y,C[17]=i.z,C[18]=i.x,C[19]=i.y,C[20]=i.z,C[21]=o.x,C[22]=i.y,C[23]=i.z,g.needsUpdate=!0,this.geometry.computeBoundingSphere()}setFromObject(e){return this.object=e,this.update(),this}copy(e,i){return super.copy(e,i),this.object=e.object,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class ql extends cI{constructor(e,i=16776960){const o=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),g=[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],C=new Rn;C.setIndex(new an(o,1)),C.setAttribute("position",new he(g,3)),super(C,new ia({color:i,toneMapped:!1})),this.box=e,this.type="Box3Helper",this.geometry.computeBoundingSphere()}updateMatrixWorld(e){const i=this.box;i.isEmpty()||(i.getCenter(this.position),i.getSize(this.scale),this.scale.multiplyScalar(.5),super.updateMatrixWorld(e))}dispose(){this.geometry.dispose(),this.material.dispose()}}class ZC extends zI{constructor(e,i=1,o=16776960){const g=o,C=[1,-1,0,-1,1,0,-1,-1,0,1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],c=new Rn;c.setAttribute("position",new he(C,3)),c.computeBoundingSphere(),super(c,new ia({color:g,toneMapped:!1})),this.type="PlaneHelper",this.plane=e,this.size=i;const f=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],S=new Rn;S.setAttribute("position",new he(f,3)),S.computeBoundingSphere(),this.add(new Jn(S,new Bi({color:g,opacity:.2,transparent:!0,depthWrite:!1,toneMapped:!1})))}updateMatrixWorld(e){this.position.set(0,0,0),this.scale.set(.5*this.size,.5*this.size,1),this.lookAt(this.plane.normal),this.translateZ(-this.plane.constant),super.updateMatrixWorld(e)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}}const JI=new Qe;let xB,GQ;class mh extends be{constructor(e=new Qe(0,0,1),i=new Qe(0,0,0),o=1,g=16776960,C=o*.2,c=C*.2){super(),this.type="ArrowHelper",xB===void 0&&(xB=new Rn,xB.setAttribute("position",new he([0,0,0,0,1,0],3)),GQ=new oB(0,.5,1,5,1),GQ.translate(0,-.5,0)),this.position.copy(i),this.line=new zI(xB,new ia({color:g,toneMapped:!1})),this.line.matrixAutoUpdate=!1,this.add(this.line),this.cone=new Jn(GQ,new Bi({color:g,toneMapped:!1})),this.cone.matrixAutoUpdate=!1,this.add(this.cone),this.setDirection(e),this.setLength(o,C,c)}setDirection(e){if(e.y>.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{JI.set(e.z,0,-e.x).normalize();const i=Math.acos(e.y);this.quaternion.setFromAxisAngle(JI,i)}}setLength(e,i=e*.2,o=i*.2){this.line.scale.set(1,Math.max(1e-4,e-i),1),this.line.updateMatrix(),this.cone.scale.set(o,i,o),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class FQ extends cI{constructor(e=1){const i=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],o=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],g=new Rn;g.setAttribute("position",new he(i,3)),g.setAttribute("color",new he(o,3));const C=new ia({vertexColors:!0,toneMapped:!1});super(g,C),this.type="AxesHelper"}setColors(e,i,o){const g=new ht,C=this.geometry.attributes.color.array;return g.set(e),g.toArray(C,0),g.toArray(C,3),g.set(i),g.toArray(C,6),g.toArray(C,9),g.set(o),g.toArray(C,12),g.toArray(C,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class vE{constructor(){this.type="ShapePath",this.color=new ht,this.subPaths=[],this.currentPath=null}moveTo(e,i){return this.currentPath=new EE,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,i),this}lineTo(e,i){return this.currentPath.lineTo(e,i),this}quadraticCurveTo(e,i,o,g){return this.currentPath.quadraticCurveTo(e,i,o,g),this}bezierCurveTo(e,i,o,g,C,c){return this.currentPath.bezierCurveTo(e,i,o,g,C,c),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function i(Ce){const Me=[];for(let Re=0,Ne=Ce.length;Re<Ne;Re++){const wt=Ce[Re],St=new cC;St.curves=wt.curves,Me.push(St)}return Me}function o(Ce,Me){const Re=Me.length;let Ne=!1;for(let wt=Re-1,St=0;St<Re;wt=St++){let Yt=Me[wt],xt=Me[St],Li=xt.x-Yt.x,Wi=xt.y-Yt.y;if(Math.abs(Wi)>Number.EPSILON){if(Wi<0&&(Yt=Me[St],Li=-Li,xt=Me[wt],Wi=-Wi),Ce.y<Yt.y||Ce.y>xt.y)continue;if(Ce.y===Yt.y){if(Ce.x===Yt.x)return!0}else{const hn=Wi*(Ce.x-Yt.x)-Li*(Ce.y-Yt.y);if(hn===0)return!0;if(hn<0)continue;Ne=!Ne}}else{if(Ce.y!==Yt.y)continue;if(xt.x<=Ce.x&&Ce.x<=Yt.x||Yt.x<=Ce.x&&Ce.x<=xt.x)return!0}}return Ne}const g=lI.isClockWise,C=this.subPaths;if(C.length===0)return[];let c,f,S;const b=[];if(C.length===1)return f=C[0],S=new cC,S.curves=f.curves,b.push(S),b;let $=!g(C[0].getPoints());$=e?!$:$;const oA=[],rA=[];let IA=[],cA=0,JA;rA[cA]=void 0,IA[cA]=[];for(let Ce=0,Me=C.length;Ce<Me;Ce++)f=C[Ce],JA=f.getPoints(),c=g(JA),c=e?!c:c,c?(!$&&rA[cA]&&cA++,rA[cA]={s:new cC,p:JA},rA[cA].s.curves=f.curves,$&&cA++,IA[cA]=[]):IA[cA].push({h:f,p:JA[0]});if(!rA[0])return i(C);if(rA.length>1){let Ce=!1,Me=0;for(let Re=0,Ne=rA.length;Re<Ne;Re++)oA[Re]=[];for(let Re=0,Ne=rA.length;Re<Ne;Re++){const wt=IA[Re];for(let St=0;St<wt.length;St++){const Yt=wt[St];let xt=!0;for(let Li=0;Li<rA.length;Li++)o(Yt.p,rA[Li].p)&&(Re!==Li&&Me++,xt?(xt=!1,oA[Li].push(Yt)):Ce=!0);xt&&oA[Re].push(Yt)}}Me>0&&Ce===!1&&(IA=oA)}let te;for(let Ce=0,Me=rA.length;Ce<Me;Ce++){S=rA[Ce].s,b.push(S),te=IA[Ce];for(let Re=0,Ne=te.length;Re<Ne;Re++)S.holes.push(te[Re].h)}return b}}class FC extends qn{constructor(e,i=null){super(),this.object=e,this.domElement=i,this.enabled=!0,this.state=-1,this.keys={},this.mouseButtons={LEFT:null,MIDDLE:null,RIGHT:null},this.touches={ONE:null,TWO:null}}connect(){}disconnect(){}dispose(){}update(){}}function bB(P,e){const i=P.image&&P.image.width?P.image.width/P.image.height:1;return i>e?(P.repeat.x=1,P.repeat.y=i/e,P.offset.x=0,P.offset.y=(1-P.repeat.y)/2):(P.repeat.x=e/i,P.repeat.y=1,P.offset.x=(1-P.repeat.x)/2,P.offset.y=0),P}function vQ(P,e){const i=P.image&&P.image.width?P.image.width/P.image.height:1;return i>e?(P.repeat.x=e/i,P.repeat.y=1,P.offset.x=(1-P.repeat.x)/2,P.offset.y=0):(P.repeat.x=1,P.repeat.y=i/e,P.offset.x=0,P.offset.y=(1-P.repeat.y)/2),P}function qg(P){return P.repeat.x=1,P.repeat.y=1,P.offset.x=0,P.offset.y=0,P}function kB(P,e,i,o){const g=Wl(o);switch(i){case Ka:return P*e;case We:return P*e;case ut:return P*e*2;case ai:return P*e/g.components*g.byteLength;case Pi:return P*e/g.components*g.byteLength;case xi:return P*e*2/g.components*g.byteLength;case Ut:return P*e*2/g.components*g.byteLength;case XA:return P*e*3/g.components*g.byteLength;case me:return P*e*4/g.components*g.byteLength;case mn:return P*e*4/g.components*g.byteLength;case Pn:case pr:return Math.floor((P+3)/4)*Math.floor((e+3)/4)*8;case Ro:case ao:return Math.floor((P+3)/4)*Math.floor((e+3)/4)*16;case Yr:case On:return Math.max(P,16)*Math.max(e,8)/4;case Uo:case $r:return Math.max(P,8)*Math.max(e,8)/2;case Go:case Ys:return Math.floor((P+3)/4)*Math.floor((e+3)/4)*8;case og:return Math.floor((P+3)/4)*Math.floor((e+3)/4)*16;case Ur:return Math.floor((P+3)/4)*Math.floor((e+3)/4)*16;case Ng:return Math.floor((P+4)/5)*Math.floor((e+3)/4)*16;case Ug:return Math.floor((P+4)/5)*Math.floor((e+4)/5)*16;case Gg:return Math.floor((P+5)/6)*Math.floor((e+4)/5)*16;case Hr:return Math.floor((P+5)/6)*Math.floor((e+5)/6)*16;case Vg:return Math.floor((P+7)/8)*Math.floor((e+4)/5)*16;case Fg:return Math.floor((P+7)/8)*Math.floor((e+5)/6)*16;case ra:return Math.floor((P+7)/8)*Math.floor((e+7)/8)*16;case sa:return Math.floor((P+9)/10)*Math.floor((e+4)/5)*16;case ga:return Math.floor((P+9)/10)*Math.floor((e+5)/6)*16;case qa:return Math.floor((P+9)/10)*Math.floor((e+7)/8)*16;case Zg:return Math.floor((P+9)/10)*Math.floor((e+9)/10)*16;case jg:return Math.floor((P+11)/12)*Math.floor((e+9)/10)*16;case hg:return Math.floor((P+11)/12)*Math.floor((e+11)/12)*16;case Xg:case aa:case lg:return Math.ceil(P/4)*Math.ceil(e/4)*16;case rg:case Lg:return Math.ceil(P/4)*Math.ceil(e/4)*8;case Rs:case Ia:return Math.ceil(P/4)*Math.ceil(e/4)*16}throw new Error(`Unable to determine texture byte length for ${i} format.`)}function Wl(P){switch(P){case ns:case Tg:return{byteLength:1,components:1};case Wg:case ps:case lr:return{byteLength:2,components:1};case Nr:case ya:return{byteLength:2,components:4};case Da:case os:case Kg:return{byteLength:4,components:1};case wa:return{byteLength:4,components:3}}throw new Error(`Unknown texture type ${P}.`)}const Dh={contain:bB,cover:vQ,fill:qg,getByteLength:kB};typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:s}})),typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=s)},"./node_modules/three/build/three.module.js":(_A,O,d)=>{d.r(O),d.d(O,{ACESFilmicToneMapping:()=>s.ACESFilmicToneMapping,AddEquation:()=>s.AddEquation,AddOperation:()=>s.AddOperation,AdditiveAnimationBlendMode:()=>s.AdditiveAnimationBlendMode,AdditiveBlending:()=>s.AdditiveBlending,AgXToneMapping:()=>s.AgXToneMapping,AlphaFormat:()=>s.AlphaFormat,AlwaysCompare:()=>s.AlwaysCompare,AlwaysDepth:()=>s.AlwaysDepth,AlwaysStencilFunc:()=>s.AlwaysStencilFunc,AmbientLight:()=>s.AmbientLight,AnimationAction:()=>s.AnimationAction,AnimationClip:()=>s.AnimationClip,AnimationLoader:()=>s.AnimationLoader,AnimationMixer:()=>s.AnimationMixer,AnimationObjectGroup:()=>s.AnimationObjectGroup,AnimationUtils:()=>s.AnimationUtils,ArcCurve:()=>s.ArcCurve,ArrayCamera:()=>s.ArrayCamera,ArrowHelper:()=>s.ArrowHelper,AttachedBindMode:()=>s.AttachedBindMode,Audio:()=>s.Audio,AudioAnalyser:()=>s.AudioAnalyser,AudioContext:()=>s.AudioContext,AudioListener:()=>s.AudioListener,AudioLoader:()=>s.AudioLoader,AxesHelper:()=>s.AxesHelper,BackSide:()=>s.BackSide,BasicDepthPacking:()=>s.BasicDepthPacking,BasicShadowMap:()=>s.BasicShadowMap,BatchedMesh:()=>s.BatchedMesh,Bone:()=>s.Bone,BooleanKeyframeTrack:()=>s.BooleanKeyframeTrack,Box2:()=>s.Box2,Box3:()=>s.Box3,Box3Helper:()=>s.Box3Helper,BoxGeometry:()=>s.BoxGeometry,BoxHelper:()=>s.BoxHelper,BufferAttribute:()=>s.BufferAttribute,BufferGeometry:()=>s.BufferGeometry,BufferGeometryLoader:()=>s.BufferGeometryLoader,ByteType:()=>s.ByteType,Cache:()=>s.Cache,Camera:()=>s.Camera,CameraHelper:()=>s.CameraHelper,CanvasTexture:()=>s.CanvasTexture,CapsuleGeometry:()=>s.CapsuleGeometry,CatmullRomCurve3:()=>s.CatmullRomCurve3,CineonToneMapping:()=>s.CineonToneMapping,CircleGeometry:()=>s.CircleGeometry,ClampToEdgeWrapping:()=>s.ClampToEdgeWrapping,Clock:()=>s.Clock,Color:()=>s.Color,ColorKeyframeTrack:()=>s.ColorKeyframeTrack,ColorManagement:()=>s.ColorManagement,CompressedArrayTexture:()=>s.CompressedArrayTexture,CompressedCubeTexture:()=>s.CompressedCubeTexture,CompressedTexture:()=>s.CompressedTexture,CompressedTextureLoader:()=>s.CompressedTextureLoader,ConeGeometry:()=>s.ConeGeometry,ConstantAlphaFactor:()=>s.ConstantAlphaFactor,ConstantColorFactor:()=>s.ConstantColorFactor,Controls:()=>s.Controls,CubeCamera:()=>s.CubeCamera,CubeReflectionMapping:()=>s.CubeReflectionMapping,CubeRefractionMapping:()=>s.CubeRefractionMapping,CubeTexture:()=>s.CubeTexture,CubeTextureLoader:()=>s.CubeTextureLoader,CubeUVReflectionMapping:()=>s.CubeUVReflectionMapping,CubicBezierCurve:()=>s.CubicBezierCurve,CubicBezierCurve3:()=>s.CubicBezierCurve3,CubicInterpolant:()=>s.CubicInterpolant,CullFaceBack:()=>s.CullFaceBack,CullFaceFront:()=>s.CullFaceFront,CullFaceFrontBack:()=>s.CullFaceFrontBack,CullFaceNone:()=>s.CullFaceNone,Curve:()=>s.Curve,CurvePath:()=>s.CurvePath,CustomBlending:()=>s.CustomBlending,CustomToneMapping:()=>s.CustomToneMapping,CylinderGeometry:()=>s.CylinderGeometry,Cylindrical:()=>s.Cylindrical,Data3DTexture:()=>s.Data3DTexture,DataArrayTexture:()=>s.DataArrayTexture,DataTexture:()=>s.DataTexture,DataTextureLoader:()=>s.DataTextureLoader,DataUtils:()=>s.DataUtils,DecrementStencilOp:()=>s.DecrementStencilOp,DecrementWrapStencilOp:()=>s.DecrementWrapStencilOp,DefaultLoadingManager:()=>s.DefaultLoadingManager,DepthFormat:()=>s.DepthFormat,DepthStencilFormat:()=>s.DepthStencilFormat,DepthTexture:()=>s.DepthTexture,DetachedBindMode:()=>s.DetachedBindMode,DirectionalLight:()=>s.DirectionalLight,DirectionalLightHelper:()=>s.DirectionalLightHelper,DiscreteInterpolant:()=>s.DiscreteInterpolant,DodecahedronGeometry:()=>s.DodecahedronGeometry,DoubleSide:()=>s.DoubleSide,DstAlphaFactor:()=>s.DstAlphaFactor,DstColorFactor:()=>s.DstColorFactor,DynamicCopyUsage:()=>s.DynamicCopyUsage,DynamicDrawUsage:()=>s.DynamicDrawUsage,DynamicReadUsage:()=>s.DynamicReadUsage,EdgesGeometry:()=>s.EdgesGeometry,EllipseCurve:()=>s.EllipseCurve,EqualCompare:()=>s.EqualCompare,EqualDepth:()=>s.EqualDepth,EqualStencilFunc:()=>s.EqualStencilFunc,EquirectangularReflectionMapping:()=>s.EquirectangularReflectionMapping,EquirectangularRefractionMapping:()=>s.EquirectangularRefractionMapping,Euler:()=>s.Euler,EventDispatcher:()=>s.EventDispatcher,ExtrudeGeometry:()=>s.ExtrudeGeometry,FileLoader:()=>s.FileLoader,Float16BufferAttribute:()=>s.Float16BufferAttribute,Float32BufferAttribute:()=>s.Float32BufferAttribute,FloatType:()=>s.FloatType,Fog:()=>s.Fog,FogExp2:()=>s.FogExp2,FramebufferTexture:()=>s.FramebufferTexture,FrontSide:()=>s.FrontSide,Frustum:()=>s.Frustum,GLBufferAttribute:()=>s.GLBufferAttribute,GLSL1:()=>s.GLSL1,GLSL3:()=>s.GLSL3,GreaterCompare:()=>s.GreaterCompare,GreaterDepth:()=>s.GreaterDepth,GreaterEqualCompare:()=>s.GreaterEqualCompare,GreaterEqualDepth:()=>s.GreaterEqualDepth,GreaterEqualStencilFunc:()=>s.GreaterEqualStencilFunc,GreaterStencilFunc:()=>s.GreaterStencilFunc,GridHelper:()=>s.GridHelper,Group:()=>s.Group,HalfFloatType:()=>s.HalfFloatType,HemisphereLight:()=>s.HemisphereLight,HemisphereLightHelper:()=>s.HemisphereLightHelper,IcosahedronGeometry:()=>s.IcosahedronGeometry,ImageBitmapLoader:()=>s.ImageBitmapLoader,ImageLoader:()=>s.ImageLoader,ImageUtils:()=>s.ImageUtils,IncrementStencilOp:()=>s.IncrementStencilOp,IncrementWrapStencilOp:()=>s.IncrementWrapStencilOp,InstancedBufferAttribute:()=>s.InstancedBufferAttribute,InstancedBufferGeometry:()=>s.InstancedBufferGeometry,InstancedInterleavedBuffer:()=>s.InstancedInterleavedBuffer,InstancedMesh:()=>s.InstancedMesh,Int16BufferAttribute:()=>s.Int16BufferAttribute,Int32BufferAttribute:()=>s.Int32BufferAttribute,Int8BufferAttribute:()=>s.Int8BufferAttribute,IntType:()=>s.IntType,InterleavedBuffer:()=>s.InterleavedBuffer,InterleavedBufferAttribute:()=>s.InterleavedBufferAttribute,Interpolant:()=>s.Interpolant,InterpolateDiscrete:()=>s.InterpolateDiscrete,InterpolateLinear:()=>s.InterpolateLinear,InterpolateSmooth:()=>s.InterpolateSmooth,InvertStencilOp:()=>s.InvertStencilOp,KeepStencilOp:()=>s.KeepStencilOp,KeyframeTrack:()=>s.KeyframeTrack,LOD:()=>s.LOD,LatheGeometry:()=>s.LatheGeometry,Layers:()=>s.Layers,LessCompare:()=>s.LessCompare,LessDepth:()=>s.LessDepth,LessEqualCompare:()=>s.LessEqualCompare,LessEqualDepth:()=>s.LessEqualDepth,LessEqualStencilFunc:()=>s.LessEqualStencilFunc,LessStencilFunc:()=>s.LessStencilFunc,Light:()=>s.Light,LightProbe:()=>s.LightProbe,Line:()=>s.Line,Line3:()=>s.Line3,LineBasicMaterial:()=>s.LineBasicMaterial,LineCurve:()=>s.LineCurve,LineCurve3:()=>s.LineCurve3,LineDashedMaterial:()=>s.LineDashedMaterial,LineLoop:()=>s.LineLoop,LineSegments:()=>s.LineSegments,LinearFilter:()=>s.LinearFilter,LinearInterpolant:()=>s.LinearInterpolant,LinearMipMapLinearFilter:()=>s.LinearMipMapLinearFilter,LinearMipMapNearestFilter:()=>s.LinearMipMapNearestFilter,LinearMipmapLinearFilter:()=>s.LinearMipmapLinearFilter,LinearMipmapNearestFilter:()=>s.LinearMipmapNearestFilter,LinearSRGBColorSpace:()=>s.LinearSRGBColorSpace,LinearToneMapping:()=>s.LinearToneMapping,LinearTransfer:()=>s.LinearTransfer,Loader:()=>s.Loader,LoaderUtils:()=>s.LoaderUtils,LoadingManager:()=>s.LoadingManager,LoopOnce:()=>s.LoopOnce,LoopPingPong:()=>s.LoopPingPong,LoopRepeat:()=>s.LoopRepeat,LuminanceAlphaFormat:()=>s.LuminanceAlphaFormat,LuminanceFormat:()=>s.LuminanceFormat,MOUSE:()=>s.MOUSE,Material:()=>s.Material,MaterialLoader:()=>s.MaterialLoader,MathUtils:()=>s.MathUtils,Matrix2:()=>s.Matrix2,Matrix3:()=>s.Matrix3,Matrix4:()=>s.Matrix4,MaxEquation:()=>s.MaxEquation,Mesh:()=>s.Mesh,MeshBasicMaterial:()=>s.MeshBasicMaterial,MeshDepthMaterial:()=>s.MeshDepthMaterial,MeshDistanceMaterial:()=>s.MeshDistanceMaterial,MeshLambertMaterial:()=>s.MeshLambertMaterial,MeshMatcapMaterial:()=>s.MeshMatcapMaterial,MeshNormalMaterial:()=>s.MeshNormalMaterial,MeshPhongMaterial:()=>s.MeshPhongMaterial,MeshPhysicalMaterial:()=>s.MeshPhysicalMaterial,MeshStandardMaterial:()=>s.MeshStandardMaterial,MeshToonMaterial:()=>s.MeshToonMaterial,MinEquation:()=>s.MinEquation,MirroredRepeatWrapping:()=>s.MirroredRepeatWrapping,MixOperation:()=>s.MixOperation,MultiplyBlending:()=>s.MultiplyBlending,MultiplyOperation:()=>s.MultiplyOperation,NearestFilter:()=>s.NearestFilter,NearestMipMapLinearFilter:()=>s.NearestMipMapLinearFilter,NearestMipMapNearestFilter:()=>s.NearestMipMapNearestFilter,NearestMipmapLinearFilter:()=>s.NearestMipmapLinearFilter,NearestMipmapNearestFilter:()=>s.NearestMipmapNearestFilter,NeutralToneMapping:()=>s.NeutralToneMapping,NeverCompare:()=>s.NeverCompare,NeverDepth:()=>s.NeverDepth,NeverStencilFunc:()=>s.NeverStencilFunc,NoBlending:()=>s.NoBlending,NoColorSpace:()=>s.NoColorSpace,NoToneMapping:()=>s.NoToneMapping,NormalAnimationBlendMode:()=>s.NormalAnimationBlendMode,NormalBlending:()=>s.NormalBlending,NotEqualCompare:()=>s.NotEqualCompare,NotEqualDepth:()=>s.NotEqualDepth,NotEqualStencilFunc:()=>s.NotEqualStencilFunc,NumberKeyframeTrack:()=>s.NumberKeyframeTrack,Object3D:()=>s.Object3D,ObjectLoader:()=>s.ObjectLoader,ObjectSpaceNormalMap:()=>s.ObjectSpaceNormalMap,OctahedronGeometry:()=>s.OctahedronGeometry,OneFactor:()=>s.OneFactor,OneMinusConstantAlphaFactor:()=>s.OneMinusConstantAlphaFactor,OneMinusConstantColorFactor:()=>s.OneMinusConstantColorFactor,OneMinusDstAlphaFactor:()=>s.OneMinusDstAlphaFactor,OneMinusDstColorFactor:()=>s.OneMinusDstColorFactor,OneMinusSrcAlphaFactor:()=>s.OneMinusSrcAlphaFactor,OneMinusSrcColorFactor:()=>s.OneMinusSrcColorFactor,OrthographicCamera:()=>s.OrthographicCamera,PCFShadowMap:()=>s.PCFShadowMap,PCFSoftShadowMap:()=>s.PCFSoftShadowMap,PMREMGenerator:()=>Io,Path:()=>s.Path,PerspectiveCamera:()=>s.PerspectiveCamera,Plane:()=>s.Plane,PlaneGeometry:()=>s.PlaneGeometry,PlaneHelper:()=>s.PlaneHelper,PointLight:()=>s.PointLight,PointLightHelper:()=>s.PointLightHelper,Points:()=>s.Points,PointsMaterial:()=>s.PointsMaterial,PolarGridHelper:()=>s.PolarGridHelper,PolyhedronGeometry:()=>s.PolyhedronGeometry,PositionalAudio:()=>s.PositionalAudio,PropertyBinding:()=>s.PropertyBinding,PropertyMixer:()=>s.PropertyMixer,QuadraticBezierCurve:()=>s.QuadraticBezierCurve,QuadraticBezierCurve3:()=>s.QuadraticBezierCurve3,Quaternion:()=>s.Quaternion,QuaternionKeyframeTrack:()=>s.QuaternionKeyframeTrack,QuaternionLinearInterpolant:()=>s.QuaternionLinearInterpolant,RED_GREEN_RGTC2_Format:()=>s.RED_GREEN_RGTC2_Format,RED_RGTC1_Format:()=>s.RED_RGTC1_Format,REVISION:()=>s.REVISION,RGBADepthPacking:()=>s.RGBADepthPacking,RGBAFormat:()=>s.RGBAFormat,RGBAIntegerFormat:()=>s.RGBAIntegerFormat,RGBA_ASTC_10x10_Format:()=>s.RGBA_ASTC_10x10_Format,RGBA_ASTC_10x5_Format:()=>s.RGBA_ASTC_10x5_Format,RGBA_ASTC_10x6_Format:()=>s.RGBA_ASTC_10x6_Format,RGBA_ASTC_10x8_Format:()=>s.RGBA_ASTC_10x8_Format,RGBA_ASTC_12x10_Format:()=>s.RGBA_ASTC_12x10_Format,RGBA_ASTC_12x12_Format:()=>s.RGBA_ASTC_12x12_Format,RGBA_ASTC_4x4_Format:()=>s.RGBA_ASTC_4x4_Format,RGBA_ASTC_5x4_Format:()=>s.RGBA_ASTC_5x4_Format,RGBA_ASTC_5x5_Format:()=>s.RGBA_ASTC_5x5_Format,RGBA_ASTC_6x5_Format:()=>s.RGBA_ASTC_6x5_Format,RGBA_ASTC_6x6_Format:()=>s.RGBA_ASTC_6x6_Format,RGBA_ASTC_8x5_Format:()=>s.RGBA_ASTC_8x5_Format,RGBA_ASTC_8x6_Format:()=>s.RGBA_ASTC_8x6_Format,RGBA_ASTC_8x8_Format:()=>s.RGBA_ASTC_8x8_Format,RGBA_BPTC_Format:()=>s.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:()=>s.RGBA_ETC2_EAC_Format,RGBA_PVRTC_2BPPV1_Format:()=>s.RGBA_PVRTC_2BPPV1_Format,RGBA_PVRTC_4BPPV1_Format:()=>s.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:()=>s.RGBA_S3TC_DXT1_Format,RGBA_S3TC_DXT3_Format:()=>s.RGBA_S3TC_DXT3_Format,RGBA_S3TC_DXT5_Format:()=>s.RGBA_S3TC_DXT5_Format,RGBDepthPacking:()=>s.RGBDepthPacking,RGBFormat:()=>s.RGBFormat,RGBIntegerFormat:()=>s.RGBIntegerFormat,RGB_BPTC_SIGNED_Format:()=>s.RGB_BPTC_SIGNED_Format,RGB_BPTC_UNSIGNED_Format:()=>s.RGB_BPTC_UNSIGNED_Format,RGB_ETC1_Format:()=>s.RGB_ETC1_Format,RGB_ETC2_Format:()=>s.RGB_ETC2_Format,RGB_PVRTC_2BPPV1_Format:()=>s.RGB_PVRTC_2BPPV1_Format,RGB_PVRTC_4BPPV1_Format:()=>s.RGB_PVRTC_4BPPV1_Format,RGB_S3TC_DXT1_Format:()=>s.RGB_S3TC_DXT1_Format,RGDepthPacking:()=>s.RGDepthPacking,RGFormat:()=>s.RGFormat,RGIntegerFormat:()=>s.RGIntegerFormat,RawShaderMaterial:()=>s.RawShaderMaterial,Ray:()=>s.Ray,Raycaster:()=>s.Raycaster,RectAreaLight:()=>s.RectAreaLight,RedFormat:()=>s.RedFormat,RedIntegerFormat:()=>s.RedIntegerFormat,ReinhardToneMapping:()=>s.ReinhardToneMapping,RenderTarget:()=>s.RenderTarget,RenderTarget3D:()=>s.RenderTarget3D,RenderTargetArray:()=>s.RenderTargetArray,RepeatWrapping:()=>s.RepeatWrapping,ReplaceStencilOp:()=>s.ReplaceStencilOp,ReverseSubtractEquation:()=>s.ReverseSubtractEquation,RingGeometry:()=>s.RingGeometry,SIGNED_RED_GREEN_RGTC2_Format:()=>s.SIGNED_RED_GREEN_RGTC2_Format,SIGNED_RED_RGTC1_Format:()=>s.SIGNED_RED_RGTC1_Format,SRGBColorSpace:()=>s.SRGBColorSpace,SRGBTransfer:()=>s.SRGBTransfer,Scene:()=>s.Scene,ShaderChunk:()=>In,ShaderLib:()=>jr,ShaderMaterial:()=>s.ShaderMaterial,ShadowMaterial:()=>s.ShadowMaterial,Shape:()=>s.Shape,ShapeGeometry:()=>s.ShapeGeometry,ShapePath:()=>s.ShapePath,ShapeUtils:()=>s.ShapeUtils,ShortType:()=>s.ShortType,Skeleton:()=>s.Skeleton,SkeletonHelper:()=>s.SkeletonHelper,SkinnedMesh:()=>s.SkinnedMesh,Source:()=>s.Source,Sphere:()=>s.Sphere,SphereGeometry:()=>s.SphereGeometry,Spherical:()=>s.Spherical,SphericalHarmonics3:()=>s.SphericalHarmonics3,SplineCurve:()=>s.SplineCurve,SpotLight:()=>s.SpotLight,SpotLightHelper:()=>s.SpotLightHelper,Sprite:()=>s.Sprite,SpriteMaterial:()=>s.SpriteMaterial,SrcAlphaFactor:()=>s.SrcAlphaFactor,SrcAlphaSaturateFactor:()=>s.SrcAlphaSaturateFactor,SrcColorFactor:()=>s.SrcColorFactor,StaticCopyUsage:()=>s.StaticCopyUsage,StaticDrawUsage:()=>s.StaticDrawUsage,StaticReadUsage:()=>s.StaticReadUsage,StereoCamera:()=>s.StereoCamera,StreamCopyUsage:()=>s.StreamCopyUsage,StreamDrawUsage:()=>s.StreamDrawUsage,StreamReadUsage:()=>s.StreamReadUsage,StringKeyframeTrack:()=>s.StringKeyframeTrack,SubtractEquation:()=>s.SubtractEquation,SubtractiveBlending:()=>s.SubtractiveBlending,TOUCH:()=>s.TOUCH,TangentSpaceNormalMap:()=>s.TangentSpaceNormalMap,TetrahedronGeometry:()=>s.TetrahedronGeometry,Texture:()=>s.Texture,TextureLoader:()=>s.TextureLoader,TextureUtils:()=>s.TextureUtils,TimestampQuery:()=>s.TimestampQuery,TorusGeometry:()=>s.TorusGeometry,TorusKnotGeometry:()=>s.TorusKnotGeometry,Triangle:()=>s.Triangle,TriangleFanDrawMode:()=>s.TriangleFanDrawMode,TriangleStripDrawMode:()=>s.TriangleStripDrawMode,TrianglesDrawMode:()=>s.TrianglesDrawMode,TubeGeometry:()=>s.TubeGeometry,UVMapping:()=>s.UVMapping,Uint16BufferAttribute:()=>s.Uint16BufferAttribute,Uint32BufferAttribute:()=>s.Uint32BufferAttribute,Uint8BufferAttribute:()=>s.Uint8BufferAttribute,Uint8ClampedBufferAttribute:()=>s.Uint8ClampedBufferAttribute,Uniform:()=>s.Uniform,UniformsGroup:()=>s.UniformsGroup,UniformsLib:()=>ii,UniformsUtils:()=>s.UniformsUtils,UnsignedByteType:()=>s.UnsignedByteType,UnsignedInt248Type:()=>s.UnsignedInt248Type,UnsignedInt5999Type:()=>s.UnsignedInt5999Type,UnsignedIntType:()=>s.UnsignedIntType,UnsignedShort4444Type:()=>s.UnsignedShort4444Type,UnsignedShort5551Type:()=>s.UnsignedShort5551Type,UnsignedShortType:()=>s.UnsignedShortType,VSMShadowMap:()=>s.VSMShadowMap,Vector2:()=>s.Vector2,Vector3:()=>s.Vector3,Vector4:()=>s.Vector4,VectorKeyframeTrack:()=>s.VectorKeyframeTrack,VideoFrameTexture:()=>s.VideoFrameTexture,VideoTexture:()=>s.VideoTexture,WebGL3DRenderTarget:()=>s.WebGL3DRenderTarget,WebGLArrayRenderTarget:()=>s.WebGLArrayRenderTarget,WebGLCoordinateSystem:()=>s.WebGLCoordinateSystem,WebGLCubeRenderTarget:()=>s.WebGLCubeRenderTarget,WebGLRenderTarget:()=>s.WebGLRenderTarget,WebGLRenderer:()=>de,WebGLUtils:()=>Pg,WebGPUCoordinateSystem:()=>s.WebGPUCoordinateSystem,WebXRController:()=>s.WebXRController,WireframeGeometry:()=>s.WireframeGeometry,WrapAroundEnding:()=>s.WrapAroundEnding,ZeroCurvatureEnding:()=>s.ZeroCurvatureEnding,ZeroFactor:()=>s.ZeroFactor,ZeroSlopeEnding:()=>s.ZeroSlopeEnding,ZeroStencilOp:()=>s.ZeroStencilOp,createCanvasElement:()=>s.createCanvasElement});var s=d("./node_modules/three/build/three.core.js");/**
* @license
* Copyright 2010-2025 Three.js Authors
* SPDX-License-Identifier: MIT
*/function z(){let E=null,J=!1,F=null,sA=null;function MA(dA,PA){F(dA,PA),sA=E.requestAnimationFrame(MA)}return{start:function(){J!==!0&&F!==null&&(sA=E.requestAnimationFrame(MA),J=!0)},stop:function(){E.cancelAnimationFrame(sA),J=!1},setAnimationLoop:function(dA){F=dA},setContext:function(dA){E=dA}}}function _(E){const J=new WeakMap;function F(OA,Xe){const Le=OA.array,be=OA.usage,se=Le.byteLength,Ge=E.createBuffer();E.bindBuffer(Xe,Ge),E.bufferData(Xe,Le,be),OA.onUploadCallback();let je;if(Le instanceof Float32Array)je=E.FLOAT;else if(Le instanceof Uint16Array)OA.isFloat16BufferAttribute?je=E.HALF_FLOAT:je=E.UNSIGNED_SHORT;else if(Le instanceof Int16Array)je=E.SHORT;else if(Le instanceof Uint32Array)je=E.UNSIGNED_INT;else if(Le instanceof Int32Array)je=E.INT;else if(Le instanceof Int8Array)je=E.BYTE;else if(Le instanceof Uint8Array)je=E.UNSIGNED_BYTE;else if(Le instanceof Uint8ClampedArray)je=E.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+Le);return{buffer:Ge,type:je,bytesPerElement:Le.BYTES_PER_ELEMENT,version:OA.version,size:se}}function sA(OA,Xe,Le){const be=Xe.array,se=Xe.updateRanges;if(E.bindBuffer(Le,OA),se.length===0)E.bufferSubData(Le,0,be);else{se.sort((je,ve)=>je.start-ve.start);let Ge=0;for(let je=1;je<se.length;je++){const ve=se[Ge],Ve=se[je];Ve.start<=ve.start+ve.count+1?ve.count=Math.max(ve.count,Ve.start+Ve.count-ve.start):(++Ge,se[Ge]=Ve)}se.length=Ge+1;for(let je=0,ve=se.length;je<ve;je++){const Ve=se[je];E.bufferSubData(Le,Ve.start*be.BYTES_PER_ELEMENT,be,Ve.start,Ve.count)}Xe.clearUpdateRanges()}Xe.onUploadCallback()}function MA(OA){return OA.isInterleavedBufferAttribute&&(OA=OA.data),J.get(OA)}function dA(OA){OA.isInterleavedBufferAttribute&&(OA=OA.data);const Xe=J.get(OA);Xe&&(E.deleteBuffer(Xe.buffer),J.delete(OA))}function PA(OA,Xe){if(OA.isInterleavedBufferAttribute&&(OA=OA.data),OA.isGLBufferAttribute){const be=J.get(OA);(!be||be.version<OA.version)&&J.set(OA,{buffer:OA.buffer,type:OA.type,bytesPerElement:OA.elementSize,version:OA.version});return}const Le=J.get(OA);if(Le===void 0)J.set(OA,F(OA,Xe));else if(Le.version<OA.version){if(Le.size!==OA.array.byteLength)throw new Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.");sA(Le.buffer,OA,Xe),Le.version=OA.version}}return{get:MA,remove:dA,update:PA}}var T=`#ifdef USE_ALPHAHASH
if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;
#endif`,v=`#ifdef USE_ALPHAHASH
const float ALPHA_HASH_SCALE = 0.05;
float hash2D( vec2 value ) {
return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );
}
float hash3D( vec3 value ) {
return hash2D( vec2( hash2D( value.xy ), value.z ) );
}
float getAlphaHashThreshold( vec3 position ) {
float maxDeriv = max(
length( dFdx( position.xyz ) ),
length( dFdy( position.xyz ) )
);
float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );
vec2 pixScales = vec2(
exp2( floor( log2( pixScale ) ) ),
exp2( ceil( log2( pixScale ) ) )
);
vec2 alpha = vec2(
hash3D( floor( pixScales.x * position.xyz ) ),
hash3D( floor( pixScales.y * position.xyz ) )
);
float lerpFactor = fract( log2( pixScale ) );
float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;
float a = min( lerpFactor, 1.0 - lerpFactor );
vec3 cases = vec3(
x * x / ( 2.0 * a * ( 1.0 - a ) ),
( x - 0.5 * a ) / ( 1.0 - a ),
1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )
);
float threshold = ( x < ( 1.0 - a ) )
? ( ( x < a ) ? cases.x : cases.y )
: cases.z;
return clamp( threshold , 1.0e-6, 1.0 );
}
#endif`,D=`#ifdef USE_ALPHAMAP
diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;
#endif`,h=`#ifdef USE_ALPHAMAP
uniform sampler2D alphaMap;
#endif`,p=`#ifdef USE_ALPHATEST
#ifdef ALPHA_TO_COVERAGE
diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );
if ( diffuseColor.a == 0.0 ) discard;
#else
if ( diffuseColor.a < alphaTest ) discard;
#endif
#endif`,m=`#ifdef USE_ALPHATEST
uniform float alphaTest;
#endif`,u=`#ifdef USE_AOMAP
float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;
reflectedLight.indirectDiffuse *= ambientOcclusion;
#if defined( USE_CLEARCOAT )
clearcoatSpecularIndirect *= ambientOcclusion;
#endif
#if defined( USE_SHEEN )
sheenSpecularIndirect *= ambientOcclusion;
#endif
#if defined( USE_ENVMAP ) && defined( STANDARD )
float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );
reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );
#endif
#endif`,l=`#ifdef USE_AOMAP
uniform sampler2D aoMap;
uniform float aoMapIntensity;
#endif`,R=`#ifdef USE_BATCHING
#if ! defined( GL_ANGLE_multi_draw )
#define gl_DrawID _gl_DrawID
uniform int _gl_DrawID;
#endif
uniform highp sampler2D batchingTexture;
uniform highp usampler2D batchingIdTexture;
mat4 getBatchingMatrix( const in float i ) {
int size = textureSize( batchingTexture, 0 ).x;
int j = int( i ) * 4;
int x = j % size;
int y = j / size;
vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );
vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );
vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );
vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );
return mat4( v1, v2, v3, v4 );
}
float getIndirectIndex( const in int i ) {
int size = textureSize( batchingIdTexture, 0 ).x;
int x = i % size;
int y = i / size;
return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r );
}
#endif
#ifdef USE_BATCHING_COLOR
uniform sampler2D batchingColorTexture;
vec3 getBatchingColor( const in float i ) {
int size = textureSize( batchingColorTexture, 0 ).x;
int j = int( i );
int x = j % size;
int y = j / size;
return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb;
}
#endif`,N=`#ifdef USE_BATCHING
mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );
#endif`,Y=`vec3 transformed = vec3( position );
#ifdef USE_ALPHAHASH
vPosition = vec3( position );
#endif`,G=`vec3 objectNormal = vec3( normal );
#ifdef USE_TANGENT
vec3 objectTangent = vec3( tangent.xyz );
#endif`,x=`float G_BlinnPhong_Implicit( ) {
return 0.25;
}
float D_BlinnPhong( const in float shininess, const in float dotNH ) {
return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );
}
vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {
vec3 halfDir = normalize( lightDir + viewDir );
float dotNH = saturate( dot( normal, halfDir ) );
float dotVH = saturate( dot( viewDir, halfDir ) );
vec3 F = F_Schlick( specularColor, 1.0, dotVH );
float G = G_BlinnPhong_Implicit( );
float D = D_BlinnPhong( shininess, dotNH );
return F * ( G * D );
} // validated`,U=`#ifdef USE_IRIDESCENCE
const mat3 XYZ_TO_REC709 = mat3(
3.2404542, -0.9692660, 0.0556434,
-1.5371385, 1.8760108, -0.2040259,
-0.4985314, 0.0415560, 1.0572252
);
vec3 Fresnel0ToIor( vec3 fresnel0 ) {
vec3 sqrtF0 = sqrt( fresnel0 );
return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );
}
vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {
return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );
}
float IorToFresnel0( float transmittedIor, float incidentIor ) {
return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));
}
vec3 evalSensitivity( float OPD, vec3 shift ) {
float phase = 2.0 * PI * OPD * 1.0e-9;
vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );
vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );
vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );
vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );
xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );
xyz /= 1.0685e-7;
vec3 rgb = XYZ_TO_REC709 * xyz;
return rgb;
}
vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {
vec3 I;
float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );
float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );
float cosTheta2Sq = 1.0 - sinTheta2Sq;
if ( cosTheta2Sq < 0.0 ) {
return vec3( 1.0 );
}
float cosTheta2 = sqrt( cosTheta2Sq );
float R0 = IorToFresnel0( iridescenceIOR, outsideIOR );
float R12 = F_Schlick( R0, 1.0, cosTheta1 );
float T121 = 1.0 - R12;
float phi12 = 0.0;
if ( iridescenceIOR < outsideIOR ) phi12 = PI;
float phi21 = PI - phi12;
vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );
vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );
vec3 phi23 = vec3( 0.0 );
if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;
if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;
if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;
float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;
vec3 phi = vec3( phi21 ) + phi23;
vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );
vec3 r123 = sqrt( R123 );
vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );
vec3 C0 = R12 + Rs;
I = C0;
vec3 Cm = Rs - T121;
for ( int m = 1; m <= 2; ++ m ) {
Cm *= r123;
vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );
I += Cm * Sm;
}
return max( I, vec3( 0.0 ) );
}
#endif`,j=`#ifdef USE_BUMPMAP
uniform sampler2D bumpMap;
uniform float bumpScale;
vec2 dHdxy_fwd() {
vec2 dSTdx = dFdx( vBumpMapUv );
vec2 dSTdy = dFdy( vBumpMapUv );
float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;
float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;
float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;
return vec2( dBx, dBy );
}
vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );
vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );
vec3 vN = surf_norm;
vec3 R1 = cross( vSigmaY, vN );
vec3 R2 = cross( vN, vSigmaX );
float fDet = dot( vSigmaX, R1 ) * faceDirection;
vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
return normalize( abs( fDet ) * surf_norm - vGrad );
}
#endif`,Z=`#if NUM_CLIPPING_PLANES > 0
vec4 plane;
#ifdef ALPHA_TO_COVERAGE
float distanceToPlane, distanceGradient;
float clipOpacity = 1.0;
#pragma unroll_loop_start
for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {
plane = clippingPlanes[ i ];
distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;
distanceGradient = fwidth( distanceToPlane ) / 2.0;
clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );
if ( clipOpacity == 0.0 ) discard;
}
#pragma unroll_loop_end
#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES
float unionClipOpacity = 1.0;
#pragma unroll_loop_start
for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {
plane = clippingPlanes[ i ];
distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;
distanceGradient = fwidth( distanceToPlane ) / 2.0;
unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );
}
#pragma unroll_loop_end
clipOpacity *= 1.0 - unionClipOpacity;
#endif
diffuseColor.a *= clipOpacity;
if ( diffuseColor.a == 0.0 ) discard;
#else
#pragma unroll_loop_start
for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {
plane = clippingPlanes[ i ];
if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;
}
#pragma unroll_loop_end
#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES
bool clipped = true;
#pragma unroll_loop_start
for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {
plane = clippingPlanes[ i ];
clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;
}
#pragma unroll_loop_end
if ( clipped ) discard;
#endif
#endif
#endif`,CA=`#if NUM_CLIPPING_PLANES > 0
varying vec3 vClipPosition;
uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];
#endif`,QA=`#if NUM_CLIPPING_PLANES > 0
varying vec3 vClipPosition;
#endif`,SA=`#if NUM_CLIPPING_PLANES > 0
vClipPosition = - mvPosition.xyz;
#endif`,UA=`#if defined( USE_COLOR_ALPHA )
diffuseColor *= vColor;
#elif defined( USE_COLOR )
diffuseColor.rgb *= vColor;
#endif`,TA=`#if defined( USE_COLOR_ALPHA )
varying vec4 vColor;
#elif defined( USE_COLOR )
varying vec3 vColor;
#endif`,pA=`#if defined( USE_COLOR_ALPHA )
varying vec4 vColor;
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )
varying vec3 vColor;
#endif`,hA=`#if defined( USE_COLOR_ALPHA )
vColor = vec4( 1.0 );
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )
vColor = vec3( 1.0 );
#endif
#ifdef USE_COLOR
vColor *= color;
#endif
#ifdef USE_INSTANCING_COLOR
vColor.xyz *= instanceColor.xyz;
#endif
#ifdef USE_BATCHING_COLOR
vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );
vColor.xyz *= batchingColor.xyz;
#endif`,uA=`#define PI 3.141592653589793
#define PI2 6.283185307179586
#define PI_HALF 1.5707963267948966
#define RECIPROCAL_PI 0.3183098861837907
#define RECIPROCAL_PI2 0.15915494309189535
#define EPSILON 1e-6
#ifndef saturate
#define saturate( a ) clamp( a, 0.0, 1.0 )
#endif
#define whiteComplement( a ) ( 1.0 - saturate( a ) )
float pow2( const in float x ) { return x*x; }
vec3 pow2( const in vec3 x ) { return x*x; }
float pow3( const in float x ) { return x*x*x; }
float pow4( const in float x ) { float x2 = x*x; return x2*x2; }
float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }
float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }
highp float rand( const in vec2 uv ) {
const highp float a = 12.9898, b = 78.233, c = 43758.5453;
highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );
return fract( sin( sn ) * c );
}
#ifdef HIGH_PRECISION
float precisionSafeLength( vec3 v ) { return length( v ); }
#else
float precisionSafeLength( vec3 v ) {
float maxComponent = max3( abs( v ) );
return length( v / maxComponent ) * maxComponent;
}
#endif
struct IncidentLight {
vec3 color;
vec3 direction;
bool visible;
};
struct ReflectedLight {
vec3 directDiffuse;
vec3 directSpecular;
vec3 indirectDiffuse;
vec3 indirectSpecular;
};
#ifdef USE_ALPHAHASH
varying vec3 vPosition;
#endif
vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
}
vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {
return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );
}
mat3 transposeMat3( const in mat3 m ) {
mat3 tmp;
tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );
tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );
tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );
return tmp;
}
bool isPerspectiveMatrix( mat4 m ) {
return m[ 2 ][ 3 ] == - 1.0;
}
vec2 equirectUv( in vec3 dir ) {
float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;
float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;
return vec2( u, v );
}
vec3 BRDF_Lambert( const in vec3 diffuseColor ) {
return RECIPROCAL_PI * diffuseColor;
}
vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {
float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
}
float F_Schlick( const in float f0, const in float f90, const in float dotVH ) {
float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
} // validated`,lA=`#ifdef ENVMAP_TYPE_CUBE_UV
#define cubeUV_minMipLevel 4.0
#define cubeUV_minTileSize 16.0
float getFace( vec3 direction ) {
vec3 absDirection = abs( direction );
float face = - 1.0;
if ( absDirection.x > absDirection.z ) {
if ( absDirection.x > absDirection.y )
face = direction.x > 0.0 ? 0.0 : 3.0;
else
face = direction.y > 0.0 ? 1.0 : 4.0;
} else {
if ( absDirection.z > absDirection.y )
face = direction.z > 0.0 ? 2.0 : 5.0;
else
face = direction.y > 0.0 ? 1.0 : 4.0;
}
return face;
}
vec2 getUV( vec3 direction, float face ) {
vec2 uv;
if ( face == 0.0 ) {
uv = vec2( direction.z, direction.y ) / abs( direction.x );
} else if ( face == 1.0 ) {
uv = vec2( - direction.x, - direction.z ) / abs( direction.y );
} else if ( face == 2.0 ) {
uv = vec2( - direction.x, direction.y ) / abs( direction.z );
} else if ( face == 3.0 ) {
uv = vec2( - direction.z, direction.y ) / abs( direction.x );
} else if ( face == 4.0 ) {
uv = vec2( - direction.x, direction.z ) / abs( direction.y );
} else {
uv = vec2( direction.x, direction.y ) / abs( direction.z );
}
return 0.5 * ( uv + 1.0 );
}
vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {
float face = getFace( direction );
float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );
mipInt = max( mipInt, cubeUV_minMipLevel );
float faceSize = exp2( mipInt );
highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;
if ( face > 2.0 ) {
uv.y += faceSize;
face -= 3.0;
}
uv.x += face * faceSize;
uv.x += filterInt * 3.0 * cubeUV_minTileSize;
uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );
uv.x *= CUBEUV_TEXEL_WIDTH;
uv.y *= CUBEUV_TEXEL_HEIGHT;
#ifdef texture2DGradEXT
return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;
#else
return texture2D( envMap, uv ).rgb;
#endif
}
#define cubeUV_r0 1.0
#define cubeUV_m0 - 2.0
#define cubeUV_r1 0.8
#define cubeUV_m1 - 1.0
#define cubeUV_r4 0.4
#define cubeUV_m4 2.0
#define cubeUV_r5 0.305
#define cubeUV_m5 3.0
#define cubeUV_r6 0.21
#define cubeUV_m6 4.0
float roughnessToMip( float roughness ) {
float mip = 0.0;
if ( roughness >= cubeUV_r1 ) {
mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;
} else if ( roughness >= cubeUV_r4 ) {
mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;
} else if ( roughness >= cubeUV_r5 ) {
mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;
} else if ( roughness >= cubeUV_r6 ) {
mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;
} else {
mip = - 2.0 * log2( 1.16 * roughness ); }
return mip;
}
vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {
float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );
float mipF = fract( mip );
float mipInt = floor( mip );
vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );
if ( mipF == 0.0 ) {
return vec4( color0, 1.0 );
} else {
vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );
return vec4( mix( color0, color1, mipF ), 1.0 );
}
}
#endif`,NA=`vec3 transformedNormal = objectNormal;
#ifdef USE_TANGENT
vec3 transformedTangent = objectTangent;
#endif
#ifdef USE_BATCHING
mat3 bm = mat3( batchingMatrix );
transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );
transformedNormal = bm * transformedNormal;
#ifdef USE_TANGENT
transformedTangent = bm * transformedTangent;
#endif
#endif
#ifdef USE_INSTANCING
mat3 im = mat3( instanceMatrix );
transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );
transformedNormal = im * transformedNormal;
#ifdef USE_TANGENT
transformedTangent = im * transformedTangent;
#endif
#endif
transformedNormal = normalMatrix * transformedNormal;
#ifdef FLIP_SIDED
transformedNormal = - transformedNormal;
#endif
#ifdef USE_TANGENT
transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;
#ifdef FLIP_SIDED
transformedTangent = - transformedTangent;
#endif
#endif`,HA=`#ifdef USE_DISPLACEMENTMAP
uniform sampler2D displacementMap;
uniform float displacementScale;
uniform float displacementBias;
#endif`,pe=`#ifdef USE_DISPLACEMENTMAP
transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );
#endif`,He=`#ifdef USE_EMISSIVEMAP
vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );
#ifdef DECODE_VIDEO_TEXTURE_EMISSIVE
emissiveColor = sRGBTransferEOTF( emissiveColor );
#endif
totalEmissiveRadiance *= emissiveColor.rgb;
#endif`,Oe=`#ifdef USE_EMISSIVEMAP
uniform sampler2D emissiveMap;
#endif`,ye="gl_FragColor = linearToOutputTexel( gl_FragColor );",Ye=`vec4 LinearTransferOETF( in vec4 value ) {
return value;
}
vec4 sRGBTransferEOTF( 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 );
}
vec4 sRGBTransferOETF( in vec4 value ) {
return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
}`,Et=`#ifdef USE_ENVMAP
#ifdef ENV_WORLDPOS
vec3 cameraToFrag;
if ( isOrthographic ) {
cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
} else {
cameraToFrag = normalize( vWorldPosition - cameraPosition );
}
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
#ifdef ENVMAP_MODE_REFLECTION
vec3 reflectVec = reflect( cameraToFrag, worldNormal );
#else
vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );
#endif
#else
vec3 reflectVec = vReflect;
#endif
#ifdef ENVMAP_TYPE_CUBE
vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );
#else
vec4 envColor = vec4( 0.0 );
#endif
#ifdef ENVMAP_BLENDING_MULTIPLY
outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );
#elif defined( ENVMAP_BLENDING_MIX )
outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );
#elif defined( ENVMAP_BLENDING_ADD )
outgoingLight += envColor.xyz * specularStrength * reflectivity;
#endif
#endif`,ct=`#ifdef USE_ENVMAP
uniform float envMapIntensity;
uniform float flipEnvMap;
uniform mat3 envMapRotation;
#ifdef ENVMAP_TYPE_CUBE
uniform samplerCube envMap;
#else
uniform sampler2D envMap;
#endif
#endif`,q=`#ifdef USE_ENVMAP
uniform float reflectivity;
#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )
#define ENV_WORLDPOS
#endif
#ifdef ENV_WORLDPOS
varying vec3 vWorldPosition;
uniform float refractionRatio;
#else
varying vec3 vReflect;
#endif
#endif`,gA=`#ifdef USE_ENVMAP
#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )
#define ENV_WORLDPOS
#endif
#ifdef ENV_WORLDPOS
varying vec3 vWorldPosition;
#else
varying vec3 vReflect;
uniform float refractionRatio;
#endif
#endif`,yA=`#ifdef USE_ENVMAP
#ifdef ENV_WORLDPOS
vWorldPosition = worldPosition.xyz;
#else
vec3 cameraToVertex;
if ( isOrthographic ) {
cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
} else {
cameraToVertex = normalize( worldPosition.xyz - cameraPosition );
}
vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
#ifdef ENVMAP_MODE_REFLECTION
vReflect = reflect( cameraToVertex, worldNormal );
#else
vReflect = refract( cameraToVertex, worldNormal, refractionRatio );
#endif
#endif
#endif`,ge=`#ifdef USE_FOG
vFogDepth = - mvPosition.z;
#endif`,le=`#ifdef USE_FOG
varying float vFogDepth;
#endif`,Qt=`#ifdef USE_FOG
#ifdef FOG_EXP2
float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );
#else
float fogFactor = smoothstep( fogNear, fogFar, vFogDepth );
#endif
gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );
#endif`,Ct=`#ifdef USE_FOG
uniform vec3 fogColor;
varying float vFogDepth;
#ifdef FOG_EXP2
uniform float fogDensity;
#else
uniform float fogNear;
uniform float fogFar;
#endif
#endif`,bt=`#ifdef USE_GRADIENTMAP
uniform sampler2D gradientMap;
#endif
vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {
float dotNL = dot( normal, lightDirection );
vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );
#ifdef USE_GRADIENTMAP
return vec3( texture2D( gradientMap, coord ).r );
#else
vec2 fw = fwidth( coord ) * 0.5;
return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );
#endif
}`,pi=`#ifdef USE_LIGHTMAP
uniform sampler2D lightMap;
uniform float lightMapIntensity;
#endif`,hi=`LambertMaterial material;
material.diffuseColor = diffuseColor.rgb;
material.specularStrength = specularStrength;`,un=`varying vec3 vViewPosition;
struct LambertMaterial {
vec3 diffuseColor;
float specularStrength;
};
void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {
float dotNL = saturate( dot( geometryNormal, directLight.direction ) );
vec3 irradiance = dotNL * directLight.color;
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
#define RE_Direct RE_Direct_Lambert
#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,sn=`uniform bool receiveShadow;
uniform vec3 ambientLightColor;
#if defined( USE_LIGHT_PROBES )
uniform vec3 lightProbe[ 9 ];
#endif
vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {
float x = normal.x, y = normal.y, z = normal.z;
vec3 result = shCoefficients[ 0 ] * 0.886227;
result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;
result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;
result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;
result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;
result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;
result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );
result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;
result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );
return result;
}
vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );
return irradiance;
}
vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {
vec3 irradiance = ambientLightColor;
return irradiance;
}
float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {
float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );
if ( cutoffDistance > 0.0 ) {
distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );
}
return distanceFalloff;
}
float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {
return smoothstep( coneCosine, penumbraCosine, angleCosine );
}
#if NUM_DIR_LIGHTS > 0
struct DirectionalLight {
vec3 direction;
vec3 color;
};
uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];
void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {
light.color = directionalLight.color;
light.direction = directionalLight.direction;
light.visible = true;
}
#endif
#if NUM_POINT_LIGHTS > 0
struct PointLight {
vec3 position;
vec3 color;
float distance;
float decay;
};
uniform PointLight pointLights[ NUM_POINT_LIGHTS ];
void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {
vec3 lVector = pointLight.position - geometryPosition;
light.direction = normalize( lVector );
float lightDistance = length( lVector );
light.color = pointLight.color;
light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );
light.visible = ( light.color != vec3( 0.0 ) );
}
#endif
#if NUM_SPOT_LIGHTS > 0
struct SpotLight {
vec3 position;
vec3 direction;
vec3 color;
float distance;
float decay;
float coneCos;
float penumbraCos;
};
uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];
void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {
vec3 lVector = spotLight.position - geometryPosition;
light.direction = normalize( lVector );
float angleCos = dot( light.direction, spotLight.direction );
float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );
if ( spotAttenuation > 0.0 ) {
float lightDistance = length( lVector );
light.color = spotLight.color * spotAttenuation;
light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );
light.visible = ( light.color != vec3( 0.0 ) );
} else {
light.color = vec3( 0.0 );
light.visible = false;
}
}
#endif
#if NUM_RECT_AREA_LIGHTS > 0
struct RectAreaLight {
vec3 color;
vec3 position;
vec3 halfWidth;
vec3 halfHeight;
};
uniform sampler2D ltc_1; uniform sampler2D ltc_2;
uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];
#endif
#if NUM_HEMI_LIGHTS > 0
struct HemisphereLight {
vec3 direction;
vec3 skyColor;
vec3 groundColor;
};
uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];
vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {
float dotNL = dot( normal, hemiLight.direction );
float hemiDiffuseWeight = 0.5 * dotNL + 0.5;
vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );
return irradiance;
}
#endif`,En=`#ifdef USE_ENVMAP
vec3 getIBLIrradiance( const in vec3 normal ) {
#ifdef ENVMAP_TYPE_CUBE_UV
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );
return PI * envMapColor.rgb * envMapIntensity;
#else
return vec3( 0.0 );
#endif
}
vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {
#ifdef ENVMAP_TYPE_CUBE_UV
vec3 reflectVec = reflect( - viewDir, normal );
reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );
return envMapColor.rgb * envMapIntensity;
#else
return vec3( 0.0 );
#endif
}
#ifdef USE_ANISOTROPY
vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {
#ifdef ENVMAP_TYPE_CUBE_UV
vec3 bentNormal = cross( bitangent, viewDir );
bentNormal = normalize( cross( bentNormal, bitangent ) );
bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );
return getIBLRadiance( viewDir, bentNormal, roughness );
#else
return vec3( 0.0 );
#endif
}
#endif
#endif`,bn=`ToonMaterial material;
material.diffuseColor = diffuseColor.rgb;`,go=`varying vec3 vViewPosition;
struct ToonMaterial {
vec3 diffuseColor;
};
void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
#define RE_Direct RE_Direct_Toon
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,Ao=`BlinnPhongMaterial material;
material.diffuseColor = diffuseColor.rgb;
material.specularColor = specular;
material.specularShininess = shininess;
material.specularStrength = specularStrength;`,Kn=`varying vec3 vViewPosition;
struct BlinnPhongMaterial {
vec3 diffuseColor;
vec3 specularColor;
float specularShininess;
float specularStrength;
};
void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
float dotNL = saturate( dot( geometryNormal, directLight.direction ) );
vec3 irradiance = dotNL * directLight.color;
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;
}
void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
#define RE_Direct RE_Direct_BlinnPhong
#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,_o=`PhysicalMaterial material;
material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );
vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );
float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );
material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;
material.roughness = min( material.roughness, 1.0 );
#ifdef IOR
material.ior = ior;
#ifdef USE_SPECULAR
float specularIntensityFactor = specularIntensity;
vec3 specularColorFactor = specularColor;
#ifdef USE_SPECULAR_COLORMAP
specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;
#endif
#ifdef USE_SPECULAR_INTENSITYMAP
specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;
#endif
material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );
#else
float specularIntensityFactor = 1.0;
vec3 specularColorFactor = vec3( 1.0 );
material.specularF90 = 1.0;
#endif
material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );
#else
material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );
material.specularF90 = 1.0;
#endif
#ifdef USE_CLEARCOAT
material.clearcoat = clearcoat;
material.clearcoatRoughness = clearcoatRoughness;
material.clearcoatF0 = vec3( 0.04 );
material.clearcoatF90 = 1.0;
#ifdef USE_CLEARCOATMAP
material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;
#endif
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;
#endif
material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );
material.clearcoatRoughness += geometryRoughness;
material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );
#endif
#ifdef USE_DISPERSION
material.dispersion = dispersion;
#endif
#ifdef USE_IRIDESCENCE
material.iridescence = iridescence;
material.iridescenceIOR = iridescenceIOR;
#ifdef USE_IRIDESCENCEMAP
material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;
#endif
#ifdef USE_IRIDESCENCE_THICKNESSMAP
material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;
#else
material.iridescenceThickness = iridescenceThicknessMaximum;
#endif
#endif
#ifdef USE_SHEEN
material.sheenColor = sheenColor;
#ifdef USE_SHEEN_COLORMAP
material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;
#endif
material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );
#ifdef USE_SHEEN_ROUGHNESSMAP
material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;
#endif
#endif
#ifdef USE_ANISOTROPY
#ifdef USE_ANISOTROPYMAP
mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );
vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;
vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;
#else
vec2 anisotropyV = anisotropyVector;
#endif
material.anisotropy = length( anisotropyV );
if( material.anisotropy == 0.0 ) {
anisotropyV = vec2( 1.0, 0.0 );
} else {
anisotropyV /= material.anisotropy;
material.anisotropy = saturate( material.anisotropy );
}
material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );
material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;
material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;
#endif`,Kt=`struct PhysicalMaterial {
vec3 diffuseColor;
float roughness;
vec3 specularColor;
float specularF90;
float dispersion;
#ifdef USE_CLEARCOAT
float clearcoat;
float clearcoatRoughness;
vec3 clearcoatF0;
float clearcoatF90;
#endif
#ifdef USE_IRIDESCENCE
float iridescence;
float iridescenceIOR;
float iridescenceThickness;
vec3 iridescenceFresnel;
vec3 iridescenceF0;
#endif
#ifdef USE_SHEEN
vec3 sheenColor;
float sheenRoughness;
#endif
#ifdef IOR
float ior;
#endif
#ifdef USE_TRANSMISSION
float transmission;
float transmissionAlpha;
float thickness;
float attenuationDistance;
vec3 attenuationColor;
#endif
#ifdef USE_ANISOTROPY
float anisotropy;
float alphaT;
vec3 anisotropyT;
vec3 anisotropyB;
#endif
};
vec3 clearcoatSpecularDirect = vec3( 0.0 );
vec3 clearcoatSpecularIndirect = vec3( 0.0 );
vec3 sheenSpecularDirect = vec3( 0.0 );
vec3 sheenSpecularIndirect = vec3(0.0 );
vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {
float x = clamp( 1.0 - dotVH, 0.0, 1.0 );
float x2 = x * x;
float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );
return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );
}
float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {
float a2 = pow2( alpha );
float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );
float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );
return 0.5 / max( gv + gl, EPSILON );
}
float D_GGX( const in float alpha, const in float dotNH ) {
float a2 = pow2( alpha );
float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;
return RECIPROCAL_PI * a2 / pow2( denom );
}
#ifdef USE_ANISOTROPY
float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {
float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );
float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );
float v = 0.5 / ( gv + gl );
return saturate(v);
}
float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {
float a2 = alphaT * alphaB;
highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );
highp float v2 = dot( v, v );
float w2 = a2 / v2;
return RECIPROCAL_PI * a2 * pow2 ( w2 );
}
#endif
#ifdef USE_CLEARCOAT
vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {
vec3 f0 = material.clearcoatF0;
float f90 = material.clearcoatF90;
float roughness = material.clearcoatRoughness;
float alpha = pow2( roughness );
vec3 halfDir = normalize( lightDir + viewDir );
float dotNL = saturate( dot( normal, lightDir ) );
float dotNV = saturate( dot( normal, viewDir ) );
float dotNH = saturate( dot( normal, halfDir ) );
float dotVH = saturate( dot( viewDir, halfDir ) );
vec3 F = F_Schlick( f0, f90, dotVH );
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
float D = D_GGX( alpha, dotNH );
return F * ( V * D );
}
#endif
vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {
vec3 f0 = material.specularColor;
float f90 = material.specularF90;
float roughness = material.roughness;
float alpha = pow2( roughness );
vec3 halfDir = normalize( lightDir + viewDir );
float dotNL = saturate( dot( normal, lightDir ) );
float dotNV = saturate( dot( normal, viewDir ) );
float dotNH = saturate( dot( normal, halfDir ) );
float dotVH = saturate( dot( viewDir, halfDir ) );
vec3 F = F_Schlick( f0, f90, dotVH );
#ifdef USE_IRIDESCENCE
F = mix( F, material.iridescenceFresnel, material.iridescence );
#endif
#ifdef USE_ANISOTROPY
float dotTL = dot( material.anisotropyT, lightDir );
float dotTV = dot( material.anisotropyT, viewDir );
float dotTH = dot( material.anisotropyT, halfDir );
float dotBL = dot( material.anisotropyB, lightDir );
float dotBV = dot( material.anisotropyB, viewDir );
float dotBH = dot( material.anisotropyB, halfDir );
float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );
float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );
#else
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
float D = D_GGX( alpha, dotNH );
#endif
return F * ( V * D );
}
vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {
const float LUT_SIZE = 64.0;
const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;
const float LUT_BIAS = 0.5 / LUT_SIZE;
float dotNV = saturate( dot( N, V ) );
vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );
uv = uv * LUT_SCALE + LUT_BIAS;
return uv;
}
float LTC_ClippedSphereFormFactor( const in vec3 f ) {
float l = length( f );
return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );
}
vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {
float x = dot( v1, v2 );
float y = abs( x );
float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;
float b = 3.4175940 + ( 4.1616724 + y ) * y;
float v = a / b;
float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;
return cross( v1, v2 ) * theta_sintheta;
}
vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {
vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];
vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];
vec3 lightNormal = cross( v1, v2 );
if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );
vec3 T1, T2;
T1 = normalize( V - N * dot( V, N ) );
T2 = - cross( N, T1 );
mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );
vec3 coords[ 4 ];
coords[ 0 ] = mat * ( rectCoords[ 0 ] - P );
coords[ 1 ] = mat * ( rectCoords[ 1 ] - P );
coords[ 2 ] = mat * ( rectCoords[ 2 ] - P );
coords[ 3 ] = mat * ( rectCoords[ 3 ] - P );
coords[ 0 ] = normalize( coords[ 0 ] );
coords[ 1 ] = normalize( coords[ 1 ] );
coords[ 2 ] = normalize( coords[ 2 ] );
coords[ 3 ] = normalize( coords[ 3 ] );
vec3 vectorFormFactor = vec3( 0.0 );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );
float result = LTC_ClippedSphereFormFactor( vectorFormFactor );
return vec3( result );
}
#if defined( USE_SHEEN )
float D_Charlie( float roughness, float dotNH ) {
float alpha = pow2( roughness );
float invAlpha = 1.0 / alpha;
float cos2h = dotNH * dotNH;
float sin2h = max( 1.0 - cos2h, 0.0078125 );
return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );
}
float V_Neubelt( float dotNV, float dotNL ) {
return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );
}
vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {
vec3 halfDir = normalize( lightDir + viewDir );
float dotNL = saturate( dot( normal, lightDir ) );
float dotNV = saturate( dot( normal, viewDir ) );
float dotNH = saturate( dot( normal, halfDir ) );
float D = D_Charlie( sheenRoughness, dotNH );
float V = V_Neubelt( dotNV, dotNL );
return sheenColor * ( D * V );
}
#endif
float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {
float dotNV = saturate( dot( normal, viewDir ) );
float r2 = roughness * roughness;
float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;
float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;
float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );
return saturate( DG * RECIPROCAL_PI );
}
vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {
float dotNV = saturate( dot( normal, viewDir ) );
const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );
const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );
vec4 r = roughness * c0 + c1;
float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;
vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;
return fab;
}
vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {
vec2 fab = DFGApprox( normal, viewDir, roughness );
return specularColor * fab.x + specularF90 * fab.y;
}
#ifdef USE_IRIDESCENCE
void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {
#else
void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {
#endif
vec2 fab = DFGApprox( normal, viewDir, roughness );
#ifdef USE_IRIDESCENCE
vec3 Fr = mix( specularColor, iridescenceF0, iridescence );
#else
vec3 Fr = specularColor;
#endif
vec3 FssEss = Fr * fab.x + specularF90 * fab.y;
float Ess = fab.x + fab.y;
float Ems = 1.0 - Ess;
vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );
singleScatter += FssEss;
multiScatter += Fms * Ems;
}
#if NUM_RECT_AREA_LIGHTS > 0
void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
vec3 normal = geometryNormal;
vec3 viewDir = geometryViewDir;
vec3 position = geometryPosition;
vec3 lightPos = rectAreaLight.position;
vec3 halfWidth = rectAreaLight.halfWidth;
vec3 halfHeight = rectAreaLight.halfHeight;
vec3 lightColor = rectAreaLight.color;
float roughness = material.roughness;
vec3 rectCoords[ 4 ];
rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight;
rectCoords[ 2 ] = lightPos - halfWidth + halfHeight;
rectCoords[ 3 ] = lightPos + halfWidth + halfHeight;
vec2 uv = LTC_Uv( normal, viewDir, roughness );
vec4 t1 = texture2D( ltc_1, uv );
vec4 t2 = texture2D( ltc_2, uv );
mat3 mInv = mat3(
vec3( t1.x, 0, t1.y ),
vec3( 0, 1, 0 ),
vec3( t1.z, 0, t1.w )
);
vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );
reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );
reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );
}
#endif
void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
float dotNL = saturate( dot( geometryNormal, directLight.direction ) );
vec3 irradiance = dotNL * directLight.color;
#ifdef USE_CLEARCOAT
float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );
vec3 ccIrradiance = dotNLcc * directLight.color;
clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );
#endif
#ifdef USE_SHEEN
sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );
#endif
reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
#ifdef USE_CLEARCOAT
clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );
#endif
#ifdef USE_SHEEN
sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );
#endif
vec3 singleScattering = vec3( 0.0 );
vec3 multiScattering = vec3( 0.0 );
vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;
#ifdef USE_IRIDESCENCE
computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );
#else
computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );
#endif
vec3 totalScattering = singleScattering + multiScattering;
vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );
reflectedLight.indirectSpecular += radiance * singleScattering;
reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;
reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;
}
#define RE_Direct RE_Direct_Physical
#define RE_Direct_RectArea RE_Direct_RectArea_Physical
#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical
#define RE_IndirectSpecular RE_IndirectSpecular_Physical
float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {
return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );
}`,xA=`
vec3 geometryPosition = - vViewPosition;
vec3 geometryNormal = normal;
vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );
vec3 geometryClearcoatNormal = vec3( 0.0 );
#ifdef USE_CLEARCOAT
geometryClearcoatNormal = clearcoatNormal;
#endif
#ifdef USE_IRIDESCENCE
float dotNVi = saturate( dot( normal, geometryViewDir ) );
if ( material.iridescenceThickness == 0.0 ) {
material.iridescence = 0.0;
} else {
material.iridescence = saturate( material.iridescence );
}
if ( material.iridescence > 0.0 ) {
material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );
material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );
}
#endif
IncidentLight directLight;
#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )
PointLight pointLight;
#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0
PointLightShadow pointLightShadow;
#endif
#pragma unroll_loop_start
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
pointLight = pointLights[ i ];
getPointLightInfo( pointLight, geometryPosition, directLight );
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )
pointLightShadow = pointLightShadows[ i ];
directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
#endif
RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
}
#pragma unroll_loop_end
#endif
#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )
SpotLight spotLight;
vec4 spotColor;
vec3 spotLightCoord;
bool inSpotLightMap;
#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0
SpotLightShadow spotLightShadow;
#endif
#pragma unroll_loop_start
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
spotLight = spotLights[ i ];
getSpotLightInfo( spotLight, geometryPosition, directLight );
#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )
#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX
#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS
#else
#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )
#endif
#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )
spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;
inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );
spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );
directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;
#endif
#undef SPOT_LIGHT_MAP_INDEX
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
spotLightShadow = spotLightShadows[ i ];
directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
#endif
RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
}
#pragma unroll_loop_end
#endif
#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )
DirectionalLight directionalLight;
#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0
DirectionalLightShadow directionalLightShadow;
#endif
#pragma unroll_loop_start
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
directionalLight = directionalLights[ i ];
getDirectionalLightInfo( directionalLight, directLight );
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )
directionalLightShadow = directionalLightShadows[ i ];
directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
#endif
RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
}
#pragma unroll_loop_end
#endif
#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )
RectAreaLight rectAreaLight;
#pragma unroll_loop_start
for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {
rectAreaLight = rectAreaLights[ i ];
RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
}
#pragma unroll_loop_end
#endif
#if defined( RE_IndirectDiffuse )
vec3 iblIrradiance = vec3( 0.0 );
vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );
#if defined( USE_LIGHT_PROBES )
irradiance += getLightProbeIrradiance( lightProbe, geometryNormal );
#endif
#if ( NUM_HEMI_LIGHTS > 0 )
#pragma unroll_loop_start
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );
}
#pragma unroll_loop_end
#endif
#endif
#if defined( RE_IndirectSpecular )
vec3 radiance = vec3( 0.0 );
vec3 clearcoatRadiance = vec3( 0.0 );
#endif`,vA=`#if defined( RE_IndirectDiffuse )
#ifdef USE_LIGHTMAP
vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
irradiance += lightMapIrradiance;
#endif
#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )
iblIrradiance += getIBLIrradiance( geometryNormal );
#endif
#endif
#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )
#ifdef USE_ANISOTROPY
radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );
#else
radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );
#endif
#ifdef USE_CLEARCOAT
clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );
#endif
#endif`,ie=`#if defined( RE_IndirectDiffuse )
RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
#endif
#if defined( RE_IndirectSpecular )
RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
#endif`,ZA=`#if defined( USE_LOGDEPTHBUF )
gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;
#endif`,jA=`#if defined( USE_LOGDEPTHBUF )
uniform float logDepthBufFC;
varying float vFragDepth;
varying float vIsPerspective;
#endif`,Be=`#ifdef USE_LOGDEPTHBUF
varying float vFragDepth;
varying float vIsPerspective;
#endif`,aA=`#ifdef USE_LOGDEPTHBUF
vFragDepth = 1.0 + gl_Position.w;
vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
#endif`,H=`#ifdef USE_MAP
vec4 sampledDiffuseColor = texture2D( map, vMapUv );
#ifdef DECODE_VIDEO_TEXTURE
sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor );
#endif
diffuseColor *= sampledDiffuseColor;
#endif`,k=`#ifdef USE_MAP
uniform sampler2D map;
#endif`,DA=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
#if defined( USE_POINTS_UV )
vec2 uv = vUv;
#else
vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;
#endif
#endif
#ifdef USE_MAP
diffuseColor *= texture2D( map, uv );
#endif
#ifdef USE_ALPHAMAP
diffuseColor.a *= texture2D( alphaMap, uv ).g;
#endif`,YA=`#if defined( USE_POINTS_UV )
varying vec2 vUv;
#else
#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
uniform mat3 uvTransform;
#endif
#endif
#ifdef USE_MAP
uniform sampler2D map;
#endif
#ifdef USE_ALPHAMAP
uniform sampler2D alphaMap;
#endif`,ue=`float metalnessFactor = metalness;
#ifdef USE_METALNESSMAP
vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );
metalnessFactor *= texelMetalness.b;
#endif`,De=`#ifdef USE_METALNESSMAP
uniform sampler2D metalnessMap;
#endif`,si=`#ifdef USE_INSTANCING_MORPH
float morphTargetInfluences[ MORPHTARGETS_COUNT ];
float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;
}
#endif`,Mi=`#if defined( USE_MORPHCOLORS )
vColor *= morphTargetBaseInfluence;
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
#if defined( USE_COLOR_ALPHA )
if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];
#elif defined( USE_COLOR )
if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];
#endif
}
#endif`,Si=`#ifdef USE_MORPHNORMALS
objectNormal *= morphTargetBaseInfluence;
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];
}
#endif`,nn=`#ifdef USE_MORPHTARGETS
#ifndef USE_INSTANCING_MORPH
uniform float morphTargetBaseInfluence;
uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];
#endif
uniform sampler2DArray morphTargetsTexture;
uniform ivec2 morphTargetsTextureSize;
vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {
int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;
int y = texelIndex / morphTargetsTextureSize.x;
int x = texelIndex - y * morphTargetsTextureSize.x;
ivec3 morphUV = ivec3( x, y, morphTargetIndex );
return texelFetch( morphTargetsTexture, morphUV, 0 );
}
#endif`,zi=`#ifdef USE_MORPHTARGETS
transformed *= morphTargetBaseInfluence;
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];
}
#endif`,Zr=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
#ifdef FLAT_SHADED
vec3 fdx = dFdx( vViewPosition );
vec3 fdy = dFdy( vViewPosition );
vec3 normal = normalize( cross( fdx, fdy ) );
#else
vec3 normal = normalize( vNormal );
#ifdef DOUBLE_SIDED
normal *= faceDirection;
#endif
#endif
#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )
#ifdef USE_TANGENT
mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );
#else
mat3 tbn = getTangentFrame( - vViewPosition, normal,
#if defined( USE_NORMALMAP )
vNormalMapUv
#elif defined( USE_CLEARCOAT_NORMALMAP )
vClearcoatNormalMapUv
#else
vUv
#endif
);
#endif
#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )
tbn[0] *= faceDirection;
tbn[1] *= faceDirection;
#endif
#endif
#ifdef USE_CLEARCOAT_NORMALMAP
#ifdef USE_TANGENT
mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );
#else
mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );
#endif
#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )
tbn2[0] *= faceDirection;
tbn2[1] *= faceDirection;
#endif
#endif
vec3 nonPerturbedNormal = normal;`,kn=`#ifdef USE_NORMALMAP_OBJECTSPACE
normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;
#ifdef FLIP_SIDED
normal = - normal;
#endif
#ifdef DOUBLE_SIDED
normal = normal * faceDirection;
#endif
normal = normalize( normalMatrix * normal );
#elif defined( USE_NORMALMAP_TANGENTSPACE )
vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;
mapN.xy *= normalScale;
normal = normalize( tbn * mapN );
#elif defined( USE_BUMPMAP )
normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );
#endif`,hr=`#ifndef FLAT_SHADED
varying vec3 vNormal;
#ifdef USE_TANGENT
varying vec3 vTangent;
varying vec3 vBitangent;
#endif
#endif`,Ss=`#ifndef FLAT_SHADED
varying vec3 vNormal;
#ifdef USE_TANGENT
varying vec3 vTangent;
varying vec3 vBitangent;
#endif
#endif`,is=`#ifndef FLAT_SHADED
vNormal = normalize( transformedNormal );
#ifdef USE_TANGENT
vTangent = normalize( transformedTangent );
vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );
#endif
#endif`,cg=`#ifdef USE_NORMALMAP
uniform sampler2D normalMap;
uniform vec2 normalScale;
#endif
#ifdef USE_NORMALMAP_OBJECTSPACE
uniform mat3 normalMatrix;
#endif
#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )
mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {
vec3 q0 = dFdx( eye_pos.xyz );
vec3 q1 = dFdy( eye_pos.xyz );
vec2 st0 = dFdx( uv.st );
vec2 st1 = dFdy( uv.st );
vec3 N = surf_norm;
vec3 q1perp = cross( q1, N );
vec3 q0perp = cross( N, q0 );
vec3 T = q1perp * st0.x + q0perp * st1.x;
vec3 B = q1perp * st0.y + q0perp * st1.y;
float det = max( dot( T, T ), dot( B, B ) );
float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );
return mat3( T * scale, B * scale, N );
}
#endif`,ns=`#ifdef USE_CLEARCOAT
vec3 clearcoatNormal = nonPerturbedNormal;
#endif`,Tg=`#ifdef USE_CLEARCOAT_NORMALMAP
vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;
clearcoatMapN.xy *= clearcoatNormalScale;
clearcoatNormal = normalize( tbn2 * clearcoatMapN );
#endif`,ps=`#ifdef USE_CLEARCOATMAP
uniform sampler2D clearcoatMap;
#endif
#ifdef USE_CLEARCOAT_NORMALMAP
uniform sampler2D clearcoatNormalMap;
uniform vec2 clearcoatNormalScale;
#endif
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
uniform sampler2D clearcoatRoughnessMap;
#endif`,Wg=`#ifdef USE_IRIDESCENCEMAP
uniform sampler2D iridescenceMap;
#endif
#ifdef USE_IRIDESCENCE_THICKNESSMAP
uniform sampler2D iridescenceThicknessMap;
#endif`,os=`#ifdef OPAQUE
diffuseColor.a = 1.0;
#endif
#ifdef USE_TRANSMISSION
diffuseColor.a *= material.transmissionAlpha;
#endif
gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,Da=`vec3 packNormalToRGB( const in vec3 normal ) {
return normalize( normal ) * 0.5 + 0.5;
}
vec3 unpackRGBToNormal( const in vec3 rgb ) {
return 2.0 * rgb.xyz - 1.0;
}
const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.;
const float Inv255 = 1. / 255.;
const vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );
const vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );
const vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );
const vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );
vec4 packDepthToRGBA( const in float v ) {
if( v <= 0.0 )
return vec4( 0., 0., 0., 0. );
if( v >= 1.0 )
return vec4( 1., 1., 1., 1. );
float vuf;
float af = modf( v * PackFactors.a, vuf );
float bf = modf( vuf * ShiftRight8, vuf );
float gf = modf( vuf * ShiftRight8, vuf );
return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );
}
vec3 packDepthToRGB( const in float v ) {
if( v <= 0.0 )
return vec3( 0., 0., 0. );
if( v >= 1.0 )
return vec3( 1., 1., 1. );
float vuf;
float bf = modf( v * PackFactors.b, vuf );
float gf = modf( vuf * ShiftRight8, vuf );
return vec3( vuf * Inv255, gf * PackUpscale, bf );
}
vec2 packDepthToRG( const in float v ) {
if( v <= 0.0 )
return vec2( 0., 0. );
if( v >= 1.0 )
return vec2( 1., 1. );
float vuf;
float gf = modf( v * 256., vuf );
return vec2( vuf * Inv255, gf );
}
float unpackRGBAToDepth( const in vec4 v ) {
return dot( v, UnpackFactors4 );
}
float unpackRGBToDepth( const in vec3 v ) {
return dot( v, UnpackFactors3 );
}
float unpackRGToDepth( const in vec2 v ) {
return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;
}
vec4 pack2HalfToRGBA( const in vec2 v ) {
vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );
return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );
}
vec2 unpackRGBATo2Half( const in vec4 v ) {
return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );
}
float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {
return ( viewZ + near ) / ( near - far );
}
float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {
return depth * ( near - far ) - near;
}
float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {
return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );
}
float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {
return ( near * far ) / ( ( far - near ) * depth - far );
}`,Kg=`#ifdef PREMULTIPLIED_ALPHA
gl_FragColor.rgb *= gl_FragColor.a;
#endif`,lr=`vec4 mvPosition = vec4( transformed, 1.0 );
#ifdef USE_BATCHING
mvPosition = batchingMatrix * mvPosition;
#endif
#ifdef USE_INSTANCING
mvPosition = instanceMatrix * mvPosition;
#endif
mvPosition = modelViewMatrix * mvPosition;
gl_Position = projectionMatrix * mvPosition;`,Nr=`#ifdef DITHERING
gl_FragColor.rgb = dithering( gl_FragColor.rgb );
#endif`,ya=`#ifdef DITHERING
vec3 dithering( vec3 color ) {
float grid_position = rand( gl_FragCoord.xy );
vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );
dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );
return color + dither_shift_RGB;
}
#endif`,oa=`float roughnessFactor = roughness;
#ifdef USE_ROUGHNESSMAP
vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );
roughnessFactor *= texelRoughness.g;
#endif`,wa=`#ifdef USE_ROUGHNESSMAP
uniform sampler2D roughnessMap;
#endif`,Ka=`#if NUM_SPOT_LIGHT_COORDS > 0
varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];
#endif
#if NUM_SPOT_LIGHT_MAPS > 0
uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];
#endif
#ifdef USE_SHADOWMAP
#if NUM_DIR_LIGHT_SHADOWS > 0
uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];
varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
struct DirectionalLightShadow {
float shadowIntensity;
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
};
uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];
#endif
#if NUM_SPOT_LIGHT_SHADOWS > 0
uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];
struct SpotLightShadow {
float shadowIntensity;
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
};
uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];
#endif
#if NUM_POINT_LIGHT_SHADOWS > 0
uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];
varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
struct PointLightShadow {
float shadowIntensity;
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
float shadowCameraNear;
float shadowCameraFar;
};
uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
#endif
float texture2DCompare( sampler2D depths, vec2 uv, float compare ) {
return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );
}
vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {
return unpackRGBATo2Half( texture2D( shadow, uv ) );
}
float VSMShadow (sampler2D shadow, vec2 uv, float compare ){
float occlusion = 1.0;
vec2 distribution = texture2DDistribution( shadow, uv );
float hard_shadow = step( compare , distribution.x );
if (hard_shadow != 1.0 ) {
float distance = compare - distribution.x ;
float variance = max( 0.00000, distribution.y * distribution.y );
float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );
}
return occlusion;
}
float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {
float shadow = 1.0;
shadowCoord.xyz /= shadowCoord.w;
shadowCoord.z += shadowBias;
bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;
bool frustumTest = inFrustum && shadowCoord.z <= 1.0;
if ( frustumTest ) {
#if defined( SHADOWMAP_TYPE_PCF )
vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
float dx0 = - texelSize.x * shadowRadius;
float dy0 = - texelSize.y * shadowRadius;
float dx1 = + texelSize.x * shadowRadius;
float dy1 = + texelSize.y * shadowRadius;
float dx2 = dx0 / 2.0;
float dy2 = dy0 / 2.0;
float dx3 = dx1 / 2.0;
float dy3 = dy1 / 2.0;
shadow = (
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )
) * ( 1.0 / 17.0 );
#elif defined( SHADOWMAP_TYPE_PCF_SOFT )
vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
float dx = texelSize.x;
float dy = texelSize.y;
vec2 uv = shadowCoord.xy;
vec2 f = fract( uv * shadowMapSize + 0.5 );
uv -= f * texelSize;
shadow = (
texture2DCompare( shadowMap, uv, shadowCoord.z ) +
texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +
texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +
mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),
f.x ) +
mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),
f.x ) +
mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),
f.y ) +
mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),
f.y ) +
mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),
f.x ),
mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),
f.x ),
f.y )
) * ( 1.0 / 9.0 );
#elif defined( SHADOWMAP_TYPE_VSM )
shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );
#else
shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );
#endif
}
return mix( 1.0, shadow, shadowIntensity );
}
vec2 cubeToUV( vec3 v, float texelSizeY ) {
vec3 absV = abs( v );
float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );
absV *= scaleToCube;
v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );
vec2 planar = v.xy;
float almostATexel = 1.5 * texelSizeY;
float almostOne = 1.0 - almostATexel;
if ( absV.z >= almostOne ) {
if ( v.z > 0.0 )
planar.x = 4.0 - v.x;
} else if ( absV.x >= almostOne ) {
float signX = sign( v.x );
planar.x = v.z * signX + 2.0 * signX;
} else if ( absV.y >= almostOne ) {
float signY = sign( v.y );
planar.x = v.x + 2.0 * signY + 2.0;
planar.y = v.z * signY - 2.0;
}
return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );
}
float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {
float shadow = 1.0;
vec3 lightToPosition = shadowCoord.xyz;
float lightToPositionLength = length( lightToPosition );
if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {
float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias;
vec3 bd3D = normalize( lightToPosition );
vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );
#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )
vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;
shadow = (
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )
) * ( 1.0 / 9.0 );
#else
shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );
#endif
}
return mix( 1.0, shadow, shadowIntensity );
}
#endif`,XA=`#if NUM_SPOT_LIGHT_COORDS > 0
uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];
varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];
#endif
#ifdef USE_SHADOWMAP
#if NUM_DIR_LIGHT_SHADOWS > 0
uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];
varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
struct DirectionalLightShadow {
float shadowIntensity;
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
};
uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];
#endif
#if NUM_SPOT_LIGHT_SHADOWS > 0
struct SpotLightShadow {
float shadowIntensity;
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
};
uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];
#endif
#if NUM_POINT_LIGHT_SHADOWS > 0
uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];
varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
struct PointLightShadow {
float shadowIntensity;
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
float shadowCameraNear;
float shadowCameraFar;
};
uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
#endif
#endif`,me=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )
vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
vec4 shadowWorldPosition;
#endif
#if defined( USE_SHADOWMAP )
#if NUM_DIR_LIGHT_SHADOWS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );
vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;
}
#pragma unroll_loop_end
#endif
#if NUM_POINT_LIGHT_SHADOWS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );
vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;
}
#pragma unroll_loop_end
#endif
#endif
#if NUM_SPOT_LIGHT_COORDS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {
shadowWorldPosition = worldPosition;
#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;
#endif
vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;
}
#pragma unroll_loop_end
#endif`,We=`float getShadowMask() {
float shadow = 1.0;
#ifdef USE_SHADOWMAP
#if NUM_DIR_LIGHT_SHADOWS > 0
DirectionalLightShadow directionalLight;
#pragma unroll_loop_start
for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
directionalLight = directionalLightShadows[ i ];
shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
}
#pragma unroll_loop_end
#endif
#if NUM_SPOT_LIGHT_SHADOWS > 0
SpotLightShadow spotLight;
#pragma unroll_loop_start
for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {
spotLight = spotLightShadows[ i ];
shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
}
#pragma unroll_loop_end
#endif
#if NUM_POINT_LIGHT_SHADOWS > 0
PointLightShadow pointLight;
#pragma unroll_loop_start
for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
pointLight = pointLightShadows[ i ];
shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;
}
#pragma unroll_loop_end
#endif
#endif
return shadow;
}`,ut=`#ifdef USE_SKINNING
mat4 boneMatX = getBoneMatrix( skinIndex.x );
mat4 boneMatY = getBoneMatrix( skinIndex.y );
mat4 boneMatZ = getBoneMatrix( skinIndex.z );
mat4 boneMatW = getBoneMatrix( skinIndex.w );
#endif`,gt=`#ifdef USE_SKINNING
uniform mat4 bindMatrix;
uniform mat4 bindMatrixInverse;
uniform highp sampler2D boneTexture;
mat4 getBoneMatrix( const in float i ) {
int size = textureSize( boneTexture, 0 ).x;
int j = int( i ) * 4;
int x = j % size;
int y = j / size;
vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );
vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );
vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );
vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );
return mat4( v1, v2, v3, v4 );
}
#endif`,Gt=`#ifdef USE_SKINNING
vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );
vec4 skinned = vec4( 0.0 );
skinned += boneMatX * skinVertex * skinWeight.x;
skinned += boneMatY * skinVertex * skinWeight.y;
skinned += boneMatZ * skinVertex * skinWeight.z;
skinned += boneMatW * skinVertex * skinWeight.w;
transformed = ( bindMatrixInverse * skinned ).xyz;
#endif`,ai=`#ifdef USE_SKINNING
mat4 skinMatrix = mat4( 0.0 );
skinMatrix += skinWeight.x * boneMatX;
skinMatrix += skinWeight.y * boneMatY;
skinMatrix += skinWeight.z * boneMatZ;
skinMatrix += skinWeight.w * boneMatW;
skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;
objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;
#ifdef USE_TANGENT
objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;
#endif
#endif`,Pi=`float specularStrength;
#ifdef USE_SPECULARMAP
vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );
specularStrength = texelSpecular.r;
#else
specularStrength = 1.0;
#endif`,xi=`#ifdef USE_SPECULARMAP
uniform sampler2D specularMap;
#endif`,Ut=`#if defined( TONE_MAPPING )
gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );
#endif`,Qn=`#ifndef saturate
#define saturate( a ) clamp( a, 0.0, 1.0 )
#endif
uniform float toneMappingExposure;
vec3 LinearToneMapping( vec3 color ) {
return saturate( toneMappingExposure * color );
}
vec3 ReinhardToneMapping( vec3 color ) {
color *= toneMappingExposure;
return saturate( color / ( vec3( 1.0 ) + color ) );
}
vec3 CineonToneMapping( vec3 color ) {
color *= toneMappingExposure;
color = max( vec3( 0.0 ), color - 0.004 );
return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );
}
vec3 RRTAndODTFit( vec3 v ) {
vec3 a = v * ( v + 0.0245786 ) - 0.000090537;
vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;
return a / b;
}
vec3 ACESFilmicToneMapping( vec3 color ) {
const mat3 ACESInputMat = mat3(
vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ),
vec3( 0.04823, 0.01566, 0.83777 )
);
const mat3 ACESOutputMat = mat3(
vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ),
vec3( -0.07367, -0.00605, 1.07602 )
);
color *= toneMappingExposure / 0.6;
color = ACESInputMat * color;
color = RRTAndODTFit( color );
color = ACESOutputMat * color;
return saturate( color );
}
const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(
vec3( 1.6605, - 0.1246, - 0.0182 ),
vec3( - 0.5876, 1.1329, - 0.1006 ),
vec3( - 0.0728, - 0.0083, 1.1187 )
);
const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(
vec3( 0.6274, 0.0691, 0.0164 ),
vec3( 0.3293, 0.9195, 0.0880 ),
vec3( 0.0433, 0.0113, 0.8956 )
);
vec3 agxDefaultContrastApprox( vec3 x ) {
vec3 x2 = x * x;
vec3 x4 = x2 * x2;
return + 15.5 * x4 * x2
- 40.14 * x4 * x
+ 31.96 * x4
- 6.868 * x2 * x
+ 0.4298 * x2
+ 0.1191 * x
- 0.00232;
}
vec3 AgXToneMapping( vec3 color ) {
const mat3 AgXInsetMatrix = mat3(
vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),
vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),
vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )
);
const mat3 AgXOutsetMatrix = mat3(
vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),
vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),
vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )
);
const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069;
color *= toneMappingExposure;
color = LINEAR_SRGB_TO_LINEAR_REC2020 * color;
color = AgXInsetMatrix * color;
color = max( color, 1e-10 ); color = log2( color );
color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );
color = clamp( color, 0.0, 1.0 );
color = agxDefaultContrastApprox( color );
color = AgXOutsetMatrix * color;
color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );
color = LINEAR_REC2020_TO_LINEAR_SRGB * color;
color = clamp( color, 0.0, 1.0 );
return color;
}
vec3 NeutralToneMapping( vec3 color ) {
const float StartCompression = 0.8 - 0.04;
const float Desaturation = 0.15;
color *= toneMappingExposure;
float x = min( color.r, min( color.g, color.b ) );
float offset = x < 0.08 ? x - 6.25 * x * x : 0.04;
color -= offset;
float peak = max( color.r, max( color.g, color.b ) );
if ( peak < StartCompression ) return color;
float d = 1. - StartCompression;
float newPeak = 1. - d * d / ( peak + d - StartCompression );
color *= newPeak / peak;
float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );
return mix( color, vec3( newPeak ), g );
}
vec3 CustomToneMapping( vec3 color ) { return color; }`,mn=`#ifdef USE_TRANSMISSION
material.transmission = transmission;
material.transmissionAlpha = 1.0;
material.thickness = thickness;
material.attenuationDistance = attenuationDistance;
material.attenuationColor = attenuationColor;
#ifdef USE_TRANSMISSIONMAP
material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;
#endif
#ifdef USE_THICKNESSMAP
material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;
#endif
vec3 pos = vWorldPosition;
vec3 v = normalize( cameraPosition - pos );
vec3 n = inverseTransformDirection( normal, viewMatrix );
vec4 transmitted = getIBLVolumeRefraction(
n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,
pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,
material.attenuationColor, material.attenuationDistance );
material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );
totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );
#endif`,Pn=`#ifdef USE_TRANSMISSION
uniform float transmission;
uniform float thickness;
uniform float attenuationDistance;
uniform vec3 attenuationColor;
#ifdef USE_TRANSMISSIONMAP
uniform sampler2D transmissionMap;
#endif
#ifdef USE_THICKNESSMAP
uniform sampler2D thicknessMap;
#endif
uniform vec2 transmissionSamplerSize;
uniform sampler2D transmissionSamplerMap;
uniform mat4 modelMatrix;
uniform mat4 projectionMatrix;
varying vec3 vWorldPosition;
float w0( float a ) {
return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
}
float w1( float a ) {
return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );
}
float w2( float a ){
return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );
}
float w3( float a ) {
return ( 1.0 / 6.0 ) * ( a * a * a );
}
float g0( float a ) {
return w0( a ) + w1( a );
}
float g1( float a ) {
return w2( a ) + w3( a );
}
float h0( float a ) {
return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );
}
float h1( float a ) {
return 1.0 + w3( a ) / ( w2( a ) + w3( a ) );
}
vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {
uv = uv * texelSize.zw + 0.5;
vec2 iuv = floor( uv );
vec2 fuv = fract( uv );
float g0x = g0( fuv.x );
float g1x = g1( fuv.x );
float h0x = h0( fuv.x );
float h1x = h1( fuv.x );
float h0y = h0( fuv.y );
float h1y = h1( fuv.y );
vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;
vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;
vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;
vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;
return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +
g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );
}
vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {
vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );
vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );
vec2 fLodSizeInv = 1.0 / fLodSize;
vec2 cLodSizeInv = 1.0 / cLodSize;
vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
return mix( fSample, cSample, fract( lod ) );
}
vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {
vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );
vec3 modelScale;
modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );
modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );
modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
return normalize( refractionVector ) * thickness * modelScale;
}
float applyIorToRoughness( const in float roughness, const in float ior ) {
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
}
vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {
float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );
}
vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {
if ( isinf( attenuationDistance ) ) {
return vec3( 1.0 );
} else {
vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;
vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance;
}
}
vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,
const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,
const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness,
const in vec3 attenuationColor, const in float attenuationDistance ) {
vec4 transmittedLight;
vec3 transmittance;
#ifdef USE_DISPERSION
float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;
vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );
for ( int i = 0; i < 3; i ++ ) {
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );
vec3 refractedRayExit = position + transmissionRay;
vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
vec2 refractionCoords = ndcPos.xy / ndcPos.w;
refractionCoords += 1.0;
refractionCoords /= 2.0;
vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );
transmittedLight[ i ] = transmissionSample[ i ];
transmittedLight.a += transmissionSample.a;
transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];
}
transmittedLight.a /= 3.0;
#else
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
vec3 refractedRayExit = position + transmissionRay;
vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
vec2 refractionCoords = ndcPos.xy / ndcPos.w;
refractionCoords += 1.0;
refractionCoords /= 2.0;
transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );
transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );
#endif
vec3 attenuatedColor = transmittance * transmittedLight.rgb;
vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );
float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;
return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );
}
#endif`,pr=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
varying vec2 vUv;
#endif
#ifdef USE_MAP
varying vec2 vMapUv;
#endif
#ifdef USE_ALPHAMAP
varying vec2 vAlphaMapUv;
#endif
#ifdef USE_LIGHTMAP
varying vec2 vLightMapUv;
#endif
#ifdef USE_AOMAP
varying vec2 vAoMapUv;
#endif
#ifdef USE_BUMPMAP
varying vec2 vBumpMapUv;
#endif
#ifdef USE_NORMALMAP
varying vec2 vNormalMapUv;
#endif
#ifdef USE_EMISSIVEMAP
varying vec2 vEmissiveMapUv;
#endif
#ifdef USE_METALNESSMAP
varying vec2 vMetalnessMapUv;
#endif
#ifdef USE_ROUGHNESSMAP
varying vec2 vRoughnessMapUv;
#endif
#ifdef USE_ANISOTROPYMAP
varying vec2 vAnisotropyMapUv;
#endif
#ifdef USE_CLEARCOATMAP
varying vec2 vClearcoatMapUv;
#endif
#ifdef USE_CLEARCOAT_NORMALMAP
varying vec2 vClearcoatNormalMapUv;
#endif
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
varying vec2 vClearcoatRoughnessMapUv;
#endif
#ifdef USE_IRIDESCENCEMAP
varying vec2 vIridescenceMapUv;
#endif
#ifdef USE_IRIDESCENCE_THICKNESSMAP
varying vec2 vIridescenceThicknessMapUv;
#endif
#ifdef USE_SHEEN_COLORMAP
varying vec2 vSheenColorMapUv;
#endif
#ifdef USE_SHEEN_ROUGHNESSMAP
varying vec2 vSheenRoughnessMapUv;
#endif
#ifdef USE_SPECULARMAP
varying vec2 vSpecularMapUv;
#endif
#ifdef USE_SPECULAR_COLORMAP
varying vec2 vSpecularColorMapUv;
#endif
#ifdef USE_SPECULAR_INTENSITYMAP
varying vec2 vSpecularIntensityMapUv;
#endif
#ifdef USE_TRANSMISSIONMAP
uniform mat3 transmissionMapTransform;
varying vec2 vTransmissionMapUv;
#endif
#ifdef USE_THICKNESSMAP
uniform mat3 thicknessMapTransform;
varying vec2 vThicknessMapUv;
#endif`,Ro=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
varying vec2 vUv;
#endif
#ifdef USE_MAP
uniform mat3 mapTransform;
varying vec2 vMapUv;
#endif
#ifdef USE_ALPHAMAP
uniform mat3 alphaMapTransform;
varying vec2 vAlphaMapUv;
#endif
#ifdef USE_LIGHTMAP
uniform mat3 lightMapTransform;
varying vec2 vLightMapUv;
#endif
#ifdef USE_AOMAP
uniform mat3 aoMapTransform;
varying vec2 vAoMapUv;
#endif
#ifdef USE_BUMPMAP
uniform mat3 bumpMapTransform;
varying vec2 vBumpMapUv;
#endif
#ifdef USE_NORMALMAP
uniform mat3 normalMapTransform;
varying vec2 vNormalMapUv;
#endif
#ifdef USE_DISPLACEMENTMAP
uniform mat3 displacementMapTransform;
varying vec2 vDisplacementMapUv;
#endif
#ifdef USE_EMISSIVEMAP
uniform mat3 emissiveMapTransform;
varying vec2 vEmissiveMapUv;
#endif
#ifdef USE_METALNESSMAP
uniform mat3 metalnessMapTransform;
varying vec2 vMetalnessMapUv;
#endif
#ifdef USE_ROUGHNESSMAP
uniform mat3 roughnessMapTransform;
varying vec2 vRoughnessMapUv;
#endif
#ifdef USE_ANISOTROPYMAP
uniform mat3 anisotropyMapTransform;
varying vec2 vAnisotropyMapUv;
#endif
#ifdef USE_CLEARCOATMAP
uniform mat3 clearcoatMapTransform;
varying vec2 vClearcoatMapUv;
#endif
#ifdef USE_CLEARCOAT_NORMALMAP
uniform mat3 clearcoatNormalMapTransform;
varying vec2 vClearcoatNormalMapUv;
#endif
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
uniform mat3 clearcoatRoughnessMapTransform;
varying vec2 vClearcoatRoughnessMapUv;
#endif
#ifdef USE_SHEEN_COLORMAP
uniform mat3 sheenColorMapTransform;
varying vec2 vSheenColorMapUv;
#endif
#ifdef USE_SHEEN_ROUGHNESSMAP
uniform mat3 sheenRoughnessMapTransform;
varying vec2 vSheenRoughnessMapUv;
#endif
#ifdef USE_IRIDESCENCEMAP
uniform mat3 iridescenceMapTransform;
varying vec2 vIridescenceMapUv;
#endif
#ifdef USE_IRIDESCENCE_THICKNESSMAP
uniform mat3 iridescenceThicknessMapTransform;
varying vec2 vIridescenceThicknessMapUv;
#endif
#ifdef USE_SPECULARMAP
uniform mat3 specularMapTransform;
varying vec2 vSpecularMapUv;
#endif
#ifdef USE_SPECULAR_COLORMAP
uniform mat3 specularColorMapTransform;
varying vec2 vSpecularColorMapUv;
#endif
#ifdef USE_SPECULAR_INTENSITYMAP
uniform mat3 specularIntensityMapTransform;
varying vec2 vSpecularIntensityMapUv;
#endif
#ifdef USE_TRANSMISSIONMAP
uniform mat3 transmissionMapTransform;
varying vec2 vTransmissionMapUv;
#endif
#ifdef USE_THICKNESSMAP
uniform mat3 thicknessMapTransform;
varying vec2 vThicknessMapUv;
#endif`,ao=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
vUv = vec3( uv, 1 ).xy;
#endif
#ifdef USE_MAP
vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;
#endif
#ifdef USE_ALPHAMAP
vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_LIGHTMAP
vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_AOMAP
vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_BUMPMAP
vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_NORMALMAP
vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_DISPLACEMENTMAP
vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_EMISSIVEMAP
vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_METALNESSMAP
vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_ROUGHNESSMAP
vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_ANISOTROPYMAP
vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_CLEARCOATMAP
vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_CLEARCOAT_NORMALMAP
vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_IRIDESCENCEMAP
vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_IRIDESCENCE_THICKNESSMAP
vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_SHEEN_COLORMAP
vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_SHEEN_ROUGHNESSMAP
vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_SPECULARMAP
vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_SPECULAR_COLORMAP
vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_SPECULAR_INTENSITYMAP
vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_TRANSMISSIONMAP
vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_THICKNESSMAP
vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;
#endif`,Uo=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0
vec4 worldPosition = vec4( transformed, 1.0 );
#ifdef USE_BATCHING
worldPosition = batchingMatrix * worldPosition;
#endif
#ifdef USE_INSTANCING
worldPosition = instanceMatrix * worldPosition;
#endif
worldPosition = modelMatrix * worldPosition;
#endif`;const In={alphahash_fragment:T,alphahash_pars_fragment:v,alphamap_fragment:D,alphamap_pars_fragment:h,alphatest_fragment:p,alphatest_pars_fragment:m,aomap_fragment:u,aomap_pars_fragment:l,batching_pars_vertex:R,batching_vertex:N,begin_vertex:Y,beginnormal_vertex:G,bsdfs:x,iridescence_fragment:U,bumpmap_pars_fragment:j,clipping_planes_fragment:Z,clipping_planes_pars_fragment:CA,clipping_planes_pars_vertex:QA,clipping_planes_vertex:SA,color_fragment:UA,color_pars_fragment:TA,color_pars_vertex:pA,color_vertex:hA,common:uA,cube_uv_reflection_fragment:lA,defaultnormal_vertex:NA,displacementmap_pars_vertex:HA,displacementmap_vertex:pe,emissivemap_fragment:He,emissivemap_pars_fragment:Oe,colorspace_fragment:ye,colorspace_pars_fragment:Ye,envmap_fragment:Et,envmap_common_pars_fragment:ct,envmap_pars_fragment:q,envmap_pars_vertex:gA,envmap_physical_pars_fragment:En,envmap_vertex:yA,fog_vertex:ge,fog_pars_vertex:le,fog_fragment:Qt,fog_pars_fragment:Ct,gradientmap_pars_fragment:bt,lightmap_pars_fragment:pi,lights_lambert_fragment:hi,lights_lambert_pars_fragment:un,lights_pars_begin:sn,lights_toon_fragment:bn,lights_toon_pars_fragment:go,lights_phong_fragment:Ao,lights_phong_pars_fragment:Kn,lights_physical_fragment:_o,lights_physical_pars_fragment:Kt,lights_fragment_begin:xA,lights_fragment_maps:vA,lights_fragment_end:ie,logdepthbuf_fragment:ZA,logdepthbuf_pars_fragment:jA,logdepthbuf_pars_vertex:Be,logdepthbuf_vertex:aA,map_fragment:H,map_pars_fragment:k,map_particle_fragment:DA,map_particle_pars_fragment:YA,metalnessmap_fragment:ue,metalnessmap_pars_fragment:De,morphinstance_vertex:si,morphcolor_vertex:Mi,morphnormal_vertex:Si,morphtarget_pars_vertex:nn,morphtarget_vertex:zi,normal_fragment_begin:Zr,normal_fragment_maps:kn,normal_pars_fragment:hr,normal_pars_vertex:Ss,normal_vertex:is,normalmap_pars_fragment:cg,clearcoat_normal_fragment_begin:ns,clearcoat_normal_fragment_maps:Tg,clearcoat_pars_fragment:ps,iridescence_pars_fragment:Wg,opaque_fragment:os,packing:Da,premultiplied_alpha_fragment:Kg,project_vertex:lr,dithering_fragment:Nr,dithering_pars_fragment:ya,roughnessmap_fragment:oa,roughnessmap_pars_fragment:wa,shadowmap_pars_fragment:Ka,shadowmap_pars_vertex:XA,shadowmap_vertex:me,shadowmask_pars_fragment:We,skinbase_vertex:ut,skinning_pars_vertex:gt,skinning_vertex:Gt,skinnormal_vertex:ai,specularmap_fragment:Pi,specularmap_pars_fragment:xi,tonemapping_fragment:Ut,tonemapping_pars_fragment:Qn,transmission_fragment:mn,transmission_pars_fragment:Pn,uv_pars_fragment:pr,uv_pars_vertex:Ro,uv_vertex:ao,worldpos_vertex:Uo,background_vert:`varying vec2 vUv;
uniform mat3 uvTransform;
void main() {
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
gl_Position = vec4( position.xy, 1.0, 1.0 );
}`,background_frag:`uniform sampler2D t2D;
uniform float backgroundIntensity;
varying vec2 vUv;
void main() {
vec4 texColor = texture2D( t2D, vUv );
#ifdef DECODE_VIDEO_TEXTURE
texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );
#endif
texColor.rgb *= backgroundIntensity;
gl_FragColor = texColor;
#include <tonemapping_fragment>
#include <colorspace_fragment>
}`,backgroundCube_vert:`varying vec3 vWorldDirection;
#include <common>
void main() {
vWorldDirection = transformDirection( position, modelMatrix );
#include <begin_vertex>
#include <project_vertex>
gl_Position.z = gl_Position.w;
}`,backgroundCube_frag:`#ifdef ENVMAP_TYPE_CUBE
uniform samplerCube envMap;
#elif defined( ENVMAP_TYPE_CUBE_UV )
uniform sampler2D envMap;
#endif
uniform float flipEnvMap;
uniform float backgroundBlurriness;
uniform float backgroundIntensity;
uniform mat3 backgroundRotation;
varying vec3 vWorldDirection;
#include <cube_uv_reflection_fragment>
void main() {
#ifdef ENVMAP_TYPE_CUBE
vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );
#elif defined( ENVMAP_TYPE_CUBE_UV )
vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );
#else
vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );
#endif
texColor.rgb *= backgroundIntensity;
gl_FragColor = texColor;
#include <tonemapping_fragment>
#include <colorspace_fragment>
}`,cube_vert:`varying vec3 vWorldDirection;
#include <common>
void main() {
vWorldDirection = transformDirection( position, modelMatrix );
#include <begin_vertex>
#include <project_vertex>
gl_Position.z = gl_Position.w;
}`,cube_frag:`uniform samplerCube tCube;
uniform float tFlip;
uniform float opacity;
varying vec3 vWorldDirection;
void main() {
vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );
gl_FragColor = texColor;
gl_FragColor.a *= opacity;
#include <tonemapping_fragment>
#include <colorspace_fragment>
}`,depth_vert:`#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <displacementmap_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
varying vec2 vHighPrecisionZW;
void main() {
#include <uv_vertex>
#include <batching_vertex>
#include <skinbase_vertex>
#include <morphinstance_vertex>
#ifdef USE_DISPLACEMENTMAP
#include <beginnormal_vertex>
#include <morphnormal_vertex>
#include <skinnormal_vertex>
#endif
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
vHighPrecisionZW = gl_Position.zw;
}`,depth_frag:`#if DEPTH_PACKING == 3200
uniform float opacity;
#endif
#include <common>
#include <packing>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
varying vec2 vHighPrecisionZW;
void main() {
vec4 diffuseColor = vec4( 1.0 );
#include <clipping_planes_fragment>
#if DEPTH_PACKING == 3200
diffuseColor.a = opacity;
#endif
#include <map_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
#include <logdepthbuf_fragment>
float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;
#if DEPTH_PACKING == 3200
gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );
#elif DEPTH_PACKING == 3201
gl_FragColor = packDepthToRGBA( fragCoordZ );
#elif DEPTH_PACKING == 3202
gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );
#elif DEPTH_PACKING == 3203
gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );
#endif
}`,distanceRGBA_vert:`#define DISTANCE
varying vec3 vWorldPosition;
#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <displacementmap_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <batching_vertex>
#include <skinbase_vertex>
#include <morphinstance_vertex>
#ifdef USE_DISPLACEMENTMAP
#include <beginnormal_vertex>
#include <morphnormal_vertex>
#include <skinnormal_vertex>
#endif
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <worldpos_vertex>
#include <clipping_planes_vertex>
vWorldPosition = worldPosition.xyz;
}`,distanceRGBA_frag:`#define DISTANCE
uniform vec3 referencePosition;
uniform float nearDistance;
uniform float farDistance;
varying vec3 vWorldPosition;
#include <common>
#include <packing>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <clipping_planes_pars_fragment>
void main () {
vec4 diffuseColor = vec4( 1.0 );
#include <clipping_planes_fragment>
#include <map_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
float dist = length( vWorldPosition - referencePosition );
dist = ( dist - nearDistance ) / ( farDistance - nearDistance );
dist = saturate( dist );
gl_FragColor = packDepthToRGBA( dist );
}`,equirect_vert:`varying vec3 vWorldDirection;
#include <common>
void main() {
vWorldDirection = transformDirection( position, modelMatrix );
#include <begin_vertex>
#include <project_vertex>
}`,equirect_frag:`uniform sampler2D tEquirect;
varying vec3 vWorldDirection;
#include <common>
void main() {
vec3 direction = normalize( vWorldDirection );
vec2 sampleUV = equirectUv( direction );
gl_FragColor = texture2D( tEquirect, sampleUV );
#include <tonemapping_fragment>
#include <colorspace_fragment>
}`,linedashed_vert:`uniform float scale;
attribute float lineDistance;
varying float vLineDistance;
#include <common>
#include <uv_pars_vertex>
#include <color_pars_vertex>
#include <fog_pars_vertex>
#include <morphtarget_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
vLineDistance = scale * lineDistance;
#include <uv_vertex>
#include <color_vertex>
#include <morphinstance_vertex>
#include <morphcolor_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
#include <fog_vertex>
}`,linedashed_frag:`uniform vec3 diffuse;
uniform float opacity;
uniform float dashSize;
uniform float totalSize;
varying float vLineDistance;
#include <common>
#include <color_pars_fragment>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <fog_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
if ( mod( vLineDistance, totalSize ) > dashSize ) {
discard;
}
vec3 outgoingLight = vec3( 0.0 );
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <color_fragment>
outgoingLight = diffuseColor.rgb;
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
}`,meshbasic_vert:`#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <envmap_pars_vertex>
#include <color_pars_vertex>
#include <fog_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <color_vertex>
#include <morphinstance_vertex>
#include <morphcolor_vertex>
#include <batching_vertex>
#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )
#include <beginnormal_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#endif
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
#include <worldpos_vertex>
#include <envmap_vertex>
#include <fog_vertex>
}`,meshbasic_frag:`uniform vec3 diffuse;
uniform float opacity;
#ifndef FLAT_SHADED
varying vec3 vNormal;
#endif
#include <common>
#include <dithering_pars_fragment>
#include <color_pars_fragment>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <aomap_pars_fragment>
#include <lightmap_pars_fragment>
#include <envmap_common_pars_fragment>
#include <envmap_pars_fragment>
#include <fog_pars_fragment>
#include <specularmap_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <color_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
#include <specularmap_fragment>
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
#ifdef USE_LIGHTMAP
vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );
reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;
#else
reflectedLight.indirectDiffuse += vec3( 1.0 );
#endif
#include <aomap_fragment>
reflectedLight.indirectDiffuse *= diffuseColor.rgb;
vec3 outgoingLight = reflectedLight.indirectDiffuse;
#include <envmap_fragment>
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
#include <dithering_fragment>
}`,meshlambert_vert:`#define LAMBERT
varying vec3 vViewPosition;
#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <displacementmap_pars_vertex>
#include <envmap_pars_vertex>
#include <color_pars_vertex>
#include <fog_pars_vertex>
#include <normal_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <shadowmap_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <color_vertex>
#include <morphinstance_vertex>
#include <morphcolor_vertex>
#include <batching_vertex>
#include <beginnormal_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#include <normal_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
vViewPosition = - mvPosition.xyz;
#include <worldpos_vertex>
#include <envmap_vertex>
#include <shadowmap_vertex>
#include <fog_vertex>
}`,meshlambert_frag:`#define LAMBERT
uniform vec3 diffuse;
uniform vec3 emissive;
uniform float opacity;
#include <common>
#include <packing>
#include <dithering_pars_fragment>
#include <color_pars_fragment>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <aomap_pars_fragment>
#include <lightmap_pars_fragment>
#include <emissivemap_pars_fragment>
#include <envmap_common_pars_fragment>
#include <envmap_pars_fragment>
#include <fog_pars_fragment>
#include <bsdfs>
#include <lights_pars_begin>
#include <normal_pars_fragment>
#include <lights_lambert_pars_fragment>
#include <shadowmap_pars_fragment>
#include <bumpmap_pars_fragment>
#include <normalmap_pars_fragment>
#include <specularmap_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
vec3 totalEmissiveRadiance = emissive;
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <color_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
#include <specularmap_fragment>
#include <normal_fragment_begin>
#include <normal_fragment_maps>
#include <emissivemap_fragment>
#include <lights_lambert_fragment>
#include <lights_fragment_begin>
#include <lights_fragment_maps>
#include <lights_fragment_end>
#include <aomap_fragment>
vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
#include <envmap_fragment>
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
#include <dithering_fragment>
}`,meshmatcap_vert:`#define MATCAP
varying vec3 vViewPosition;
#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <color_pars_vertex>
#include <displacementmap_pars_vertex>
#include <fog_pars_vertex>
#include <normal_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <color_vertex>
#include <morphinstance_vertex>
#include <morphcolor_vertex>
#include <batching_vertex>
#include <beginnormal_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#include <normal_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
#include <fog_vertex>
vViewPosition = - mvPosition.xyz;
}`,meshmatcap_frag:`#define MATCAP
uniform vec3 diffuse;
uniform float opacity;
uniform sampler2D matcap;
varying vec3 vViewPosition;
#include <common>
#include <dithering_pars_fragment>
#include <color_pars_fragment>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <fog_pars_fragment>
#include <normal_pars_fragment>
#include <bumpmap_pars_fragment>
#include <normalmap_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <color_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
#include <normal_fragment_begin>
#include <normal_fragment_maps>
vec3 viewDir = normalize( vViewPosition );
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
vec3 y = cross( viewDir, x );
vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;
#ifdef USE_MATCAP
vec4 matcapColor = texture2D( matcap, uv );
#else
vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );
#endif
vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
#include <dithering_fragment>
}`,meshnormal_vert:`#define NORMAL
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )
varying vec3 vViewPosition;
#endif
#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <displacementmap_pars_vertex>
#include <normal_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <batching_vertex>
#include <beginnormal_vertex>
#include <morphinstance_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#include <normal_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )
vViewPosition = - mvPosition.xyz;
#endif
}`,meshnormal_frag:`#define NORMAL
uniform float opacity;
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )
varying vec3 vViewPosition;
#endif
#include <packing>
#include <uv_pars_fragment>
#include <normal_pars_fragment>
#include <bumpmap_pars_fragment>
#include <normalmap_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );
#include <clipping_planes_fragment>
#include <logdepthbuf_fragment>
#include <normal_fragment_begin>
#include <normal_fragment_maps>
gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );
#ifdef OPAQUE
gl_FragColor.a = 1.0;
#endif
}`,meshphong_vert:`#define PHONG
varying vec3 vViewPosition;
#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <displacementmap_pars_vertex>
#include <envmap_pars_vertex>
#include <color_pars_vertex>
#include <fog_pars_vertex>
#include <normal_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <shadowmap_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <color_vertex>
#include <morphcolor_vertex>
#include <batching_vertex>
#include <beginnormal_vertex>
#include <morphinstance_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#include <normal_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
vViewPosition = - mvPosition.xyz;
#include <worldpos_vertex>
#include <envmap_vertex>
#include <shadowmap_vertex>
#include <fog_vertex>
}`,meshphong_frag:`#define PHONG
uniform vec3 diffuse;
uniform vec3 emissive;
uniform vec3 specular;
uniform float shininess;
uniform float opacity;
#include <common>
#include <packing>
#include <dithering_pars_fragment>
#include <color_pars_fragment>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <aomap_pars_fragment>
#include <lightmap_pars_fragment>
#include <emissivemap_pars_fragment>
#include <envmap_common_pars_fragment>
#include <envmap_pars_fragment>
#include <fog_pars_fragment>
#include <bsdfs>
#include <lights_pars_begin>
#include <normal_pars_fragment>
#include <lights_phong_pars_fragment>
#include <shadowmap_pars_fragment>
#include <bumpmap_pars_fragment>
#include <normalmap_pars_fragment>
#include <specularmap_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
vec3 totalEmissiveRadiance = emissive;
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <color_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
#include <specularmap_fragment>
#include <normal_fragment_begin>
#include <normal_fragment_maps>
#include <emissivemap_fragment>
#include <lights_phong_fragment>
#include <lights_fragment_begin>
#include <lights_fragment_maps>
#include <lights_fragment_end>
#include <aomap_fragment>
vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;
#include <envmap_fragment>
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
#include <dithering_fragment>
}`,meshphysical_vert:`#define STANDARD
varying vec3 vViewPosition;
#ifdef USE_TRANSMISSION
varying vec3 vWorldPosition;
#endif
#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <displacementmap_pars_vertex>
#include <color_pars_vertex>
#include <fog_pars_vertex>
#include <normal_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <shadowmap_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <color_vertex>
#include <morphinstance_vertex>
#include <morphcolor_vertex>
#include <batching_vertex>
#include <beginnormal_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#include <normal_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
vViewPosition = - mvPosition.xyz;
#include <worldpos_vertex>
#include <shadowmap_vertex>
#include <fog_vertex>
#ifdef USE_TRANSMISSION
vWorldPosition = worldPosition.xyz;
#endif
}`,meshphysical_frag:`#define STANDARD
#ifdef PHYSICAL
#define IOR
#define USE_SPECULAR
#endif
uniform vec3 diffuse;
uniform vec3 emissive;
uniform float roughness;
uniform float metalness;
uniform float opacity;
#ifdef IOR
uniform float ior;
#endif
#ifdef USE_SPECULAR
uniform float specularIntensity;
uniform vec3 specularColor;
#ifdef USE_SPECULAR_COLORMAP
uniform sampler2D specularColorMap;
#endif
#ifdef USE_SPECULAR_INTENSITYMAP
uniform sampler2D specularIntensityMap;
#endif
#endif
#ifdef USE_CLEARCOAT
uniform float clearcoat;
uniform float clearcoatRoughness;
#endif
#ifdef USE_DISPERSION
uniform float dispersion;
#endif
#ifdef USE_IRIDESCENCE
uniform float iridescence;
uniform float iridescenceIOR;
uniform float iridescenceThicknessMinimum;
uniform float iridescenceThicknessMaximum;
#endif
#ifdef USE_SHEEN
uniform vec3 sheenColor;
uniform float sheenRoughness;
#ifdef USE_SHEEN_COLORMAP
uniform sampler2D sheenColorMap;
#endif
#ifdef USE_SHEEN_ROUGHNESSMAP
uniform sampler2D sheenRoughnessMap;
#endif
#endif
#ifdef USE_ANISOTROPY
uniform vec2 anisotropyVector;
#ifdef USE_ANISOTROPYMAP
uniform sampler2D anisotropyMap;
#endif
#endif
varying vec3 vViewPosition;
#include <common>
#include <packing>
#include <dithering_pars_fragment>
#include <color_pars_fragment>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <aomap_pars_fragment>
#include <lightmap_pars_fragment>
#include <emissivemap_pars_fragment>
#include <iridescence_fragment>
#include <cube_uv_reflection_fragment>
#include <envmap_common_pars_fragment>
#include <envmap_physical_pars_fragment>
#include <fog_pars_fragment>
#include <lights_pars_begin>
#include <normal_pars_fragment>
#include <lights_physical_pars_fragment>
#include <transmission_pars_fragment>
#include <shadowmap_pars_fragment>
#include <bumpmap_pars_fragment>
#include <normalmap_pars_fragment>
#include <clearcoat_pars_fragment>
#include <iridescence_pars_fragment>
#include <roughnessmap_pars_fragment>
#include <metalnessmap_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
vec3 totalEmissiveRadiance = emissive;
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <color_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
#include <roughnessmap_fragment>
#include <metalnessmap_fragment>
#include <normal_fragment_begin>
#include <normal_fragment_maps>
#include <clearcoat_normal_fragment_begin>
#include <clearcoat_normal_fragment_maps>
#include <emissivemap_fragment>
#include <lights_physical_fragment>
#include <lights_fragment_begin>
#include <lights_fragment_maps>
#include <lights_fragment_end>
#include <aomap_fragment>
vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;
vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;
#include <transmission_fragment>
vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
#ifdef USE_SHEEN
float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );
outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;
#endif
#ifdef USE_CLEARCOAT
float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );
vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;
#endif
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
#include <dithering_fragment>
}`,meshtoon_vert:`#define TOON
varying vec3 vViewPosition;
#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <displacementmap_pars_vertex>
#include <color_pars_vertex>
#include <fog_pars_vertex>
#include <normal_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <shadowmap_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <color_vertex>
#include <morphinstance_vertex>
#include <morphcolor_vertex>
#include <batching_vertex>
#include <beginnormal_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#include <normal_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
vViewPosition = - mvPosition.xyz;
#include <worldpos_vertex>
#include <shadowmap_vertex>
#include <fog_vertex>
}`,meshtoon_frag:`#define TOON
uniform vec3 diffuse;
uniform vec3 emissive;
uniform float opacity;
#include <common>
#include <packing>
#include <dithering_pars_fragment>
#include <color_pars_fragment>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <aomap_pars_fragment>
#include <lightmap_pars_fragment>
#include <emissivemap_pars_fragment>
#include <gradientmap_pars_fragment>
#include <fog_pars_fragment>
#include <bsdfs>
#include <lights_pars_begin>
#include <normal_pars_fragment>
#include <lights_toon_pars_fragment>
#include <shadowmap_pars_fragment>
#include <bumpmap_pars_fragment>
#include <normalmap_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
vec3 totalEmissiveRadiance = emissive;
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <color_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
#include <normal_fragment_begin>
#include <normal_fragment_maps>
#include <emissivemap_fragment>
#include <lights_toon_fragment>
#include <lights_fragment_begin>
#include <lights_fragment_maps>
#include <lights_fragment_end>
#include <aomap_fragment>
vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
#include <dithering_fragment>
}`,points_vert:`uniform float size;
uniform float scale;
#include <common>
#include <color_pars_vertex>
#include <fog_pars_vertex>
#include <morphtarget_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
#ifdef USE_POINTS_UV
varying vec2 vUv;
uniform mat3 uvTransform;
#endif
void main() {
#ifdef USE_POINTS_UV
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
#endif
#include <color_vertex>
#include <morphinstance_vertex>
#include <morphcolor_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <project_vertex>
gl_PointSize = size;
#ifdef USE_SIZEATTENUATION
bool isPerspective = isPerspectiveMatrix( projectionMatrix );
if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );
#endif
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
#include <worldpos_vertex>
#include <fog_vertex>
}`,points_frag:`uniform vec3 diffuse;
uniform float opacity;
#include <common>
#include <color_pars_fragment>
#include <map_particle_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <fog_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
vec3 outgoingLight = vec3( 0.0 );
#include <logdepthbuf_fragment>
#include <map_particle_fragment>
#include <color_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
outgoingLight = diffuseColor.rgb;
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
}`,shadow_vert:`#include <common>
#include <batching_pars_vertex>
#include <fog_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <shadowmap_pars_vertex>
void main() {
#include <batching_vertex>
#include <beginnormal_vertex>
#include <morphinstance_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <worldpos_vertex>
#include <shadowmap_vertex>
#include <fog_vertex>
}`,shadow_frag:`uniform vec3 color;
uniform float opacity;
#include <common>
#include <packing>
#include <fog_pars_fragment>
#include <bsdfs>
#include <lights_pars_begin>
#include <logdepthbuf_pars_fragment>
#include <shadowmap_pars_fragment>
#include <shadowmask_pars_fragment>
void main() {
#include <logdepthbuf_fragment>
gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
}`,sprite_vert:`uniform float rotation;
uniform vec2 center;
#include <common>
#include <uv_pars_vertex>
#include <fog_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
vec4 mvPosition = modelViewMatrix[ 3 ];
vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) );
#ifndef USE_SIZEATTENUATION
bool isPerspective = isPerspectiveMatrix( projectionMatrix );
if ( isPerspective ) scale *= - mvPosition.z;
#endif
vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;
vec2 rotatedPosition;
rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;
rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;
mvPosition.xy += rotatedPosition;
gl_Position = projectionMatrix * mvPosition;
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
#include <fog_vertex>
}`,sprite_frag:`uniform vec3 diffuse;
uniform float opacity;
#include <common>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <fog_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
vec3 outgoingLight = vec3( 0.0 );
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
outgoingLight = diffuseColor.rgb;
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
}`},ii={common:{diffuse:{value:new s.Color(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new s.Matrix3},alphaMap:{value:null},alphaMapTransform:{value:new s.Matrix3},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new s.Matrix3}},envmap:{envMap:{value:null},envMapRotation:{value:new s.Matrix3},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new s.Matrix3}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new s.Matrix3}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new s.Matrix3},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new s.Matrix3},normalScale:{value:new s.Vector2(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new s.Matrix3},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new s.Matrix3}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new s.Matrix3}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new s.Matrix3}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new s.Color(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new s.Color(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new s.Matrix3},alphaTest:{value:0},uvTransform:{value:new s.Matrix3}},sprite:{diffuse:{value:new s.Color(16777215)},opacity:{value:1},center:{value:new s.Vector2(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new s.Matrix3},alphaMap:{value:null},alphaMapTransform:{value:new s.Matrix3},alphaTest:{value:0}}},jr={basic:{uniforms:(0,s.mergeUniforms)([ii.common,ii.specularmap,ii.envmap,ii.aomap,ii.lightmap,ii.fog]),vertexShader:In.meshbasic_vert,fragmentShader:In.meshbasic_frag},lambert:{uniforms:(0,s.mergeUniforms)([ii.common,ii.specularmap,ii.envmap,ii.aomap,ii.lightmap,ii.emissivemap,ii.bumpmap,ii.normalmap,ii.displacementmap,ii.fog,ii.lights,{emissive:{value:new s.Color(0)}}]),vertexShader:In.meshlambert_vert,fragmentShader:In.meshlambert_frag},phong:{uniforms:(0,s.mergeUniforms)([ii.common,ii.specularmap,ii.envmap,ii.aomap,ii.lightmap,ii.emissivemap,ii.bumpmap,ii.normalmap,ii.displacementmap,ii.fog,ii.lights,{emissive:{value:new s.Color(0)},specular:{value:new s.Color(1118481)},shininess:{value:30}}]),vertexShader:In.meshphong_vert,fragmentShader:In.meshphong_frag},standard:{uniforms:(0,s.mergeUniforms)([ii.common,ii.envmap,ii.aomap,ii.lightmap,ii.emissivemap,ii.bumpmap,ii.normalmap,ii.displacementmap,ii.roughnessmap,ii.metalnessmap,ii.fog,ii.lights,{emissive:{value:new s.Color(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:In.meshphysical_vert,fragmentShader:In.meshphysical_frag},toon:{uniforms:(0,s.mergeUniforms)([ii.common,ii.aomap,ii.lightmap,ii.emissivemap,ii.bumpmap,ii.normalmap,ii.displacementmap,ii.gradientmap,ii.fog,ii.lights,{emissive:{value:new s.Color(0)}}]),vertexShader:In.meshtoon_vert,fragmentShader:In.meshtoon_frag},matcap:{uniforms:(0,s.mergeUniforms)([ii.common,ii.bumpmap,ii.normalmap,ii.displacementmap,ii.fog,{matcap:{value:null}}]),vertexShader:In.meshmatcap_vert,fragmentShader:In.meshmatcap_frag},points:{uniforms:(0,s.mergeUniforms)([ii.points,ii.fog]),vertexShader:In.points_vert,fragmentShader:In.points_frag},dashed:{uniforms:(0,s.mergeUniforms)([ii.common,ii.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:In.linedashed_vert,fragmentShader:In.linedashed_frag},depth:{uniforms:(0,s.mergeUniforms)([ii.common,ii.displacementmap]),vertexShader:In.depth_vert,fragmentShader:In.depth_frag},normal:{uniforms:(0,s.mergeUniforms)([ii.common,ii.bumpmap,ii.normalmap,ii.displacementmap,{opacity:{value:1}}]),vertexShader:In.meshnormal_vert,fragmentShader:In.meshnormal_frag},sprite:{uniforms:(0,s.mergeUniforms)([ii.sprite,ii.fog]),vertexShader:In.sprite_vert,fragmentShader:In.sprite_frag},background:{uniforms:{uvTransform:{value:new s.Matrix3},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:In.background_vert,fragmentShader:In.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new s.Matrix3}},vertexShader:In.backgroundCube_vert,fragmentShader:In.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:In.cube_vert,fragmentShader:In.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:In.equirect_vert,fragmentShader:In.equirect_frag},distanceRGBA:{uniforms:(0,s.mergeUniforms)([ii.common,ii.displacementmap,{referencePosition:{value:new s.Vector3},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:In.distanceRGBA_vert,fragmentShader:In.distanceRGBA_frag},shadow:{uniforms:(0,s.mergeUniforms)([ii.lights,ii.fog,{color:{value:new s.Color(0)},opacity:{value:1}}]),vertexShader:In.shadow_vert,fragmentShader:In.shadow_frag}};jr.physical={uniforms:(0,s.mergeUniforms)([jr.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new s.Matrix3},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new s.Matrix3},clearcoatNormalScale:{value:new s.Vector2(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new s.Matrix3},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new s.Matrix3},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new s.Matrix3},sheen:{value:0},sheenColor:{value:new s.Color(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new s.Matrix3},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new s.Matrix3},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new s.Matrix3},transmissionSamplerSize:{value:new s.Vector2},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new s.Matrix3},attenuationDistance:{value:0},attenuationColor:{value:new s.Color(0)},specularColor:{value:new s.Color(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new s.Matrix3},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new s.Matrix3},anisotropyVector:{value:new s.Vector2},anisotropyMap:{value:null},anisotropyMapTransform:{value:new s.Matrix3}}]),vertexShader:In.meshphysical_vert,fragmentShader:In.meshphysical_frag};const Jg={r:0,b:0,g:0},xg=new s.Euler,Wa=new s.Matrix4;function eA(E,J,F,sA,MA,dA,PA){const OA=new s.Color(0);let Xe=dA===!0?0:1,Le,be,se=null,Ge=0,je=null;function ve(Pe){let at=Pe.isScene===!0?Pe.background:null;return at&&at.isTexture&&(at=(Pe.backgroundBlurriness>0?F:J).get(at)),at}function Ve(Pe){let at=!1;const et=ve(Pe);et===null?FA(OA,Xe):et&&et.isColor&&(FA(et,1),at=!0);const rt=E.xr.getEnvironmentBlendMode();rt==="additive"?sA.buffers.color.setClear(0,0,0,1,PA):rt==="alpha-blend"&&sA.buffers.color.setClear(0,0,0,0,PA),(E.autoClear||at)&&(sA.buffers.depth.setTest(!0),sA.buffers.depth.setMask(!0),sA.buffers.color.setMask(!0),E.clear(E.autoClearColor,E.autoClearDepth,E.autoClearStencil))}function Ae(Pe,at){const et=ve(at);et&&(et.isCubeTexture||et.mapping===s.CubeUVReflectionMapping)?(be===void 0&&(be=new s.Mesh(new s.BoxGeometry(1e4,1e4,1e4),new s.ShaderMaterial({name:"BackgroundCubeMaterial",uniforms:(0,s.cloneUniforms)(jr.backgroundCube.uniforms),vertexShader:jr.backgroundCube.vertexShader,fragmentShader:jr.backgroundCube.fragmentShader,side:s.BackSide,depthTest:!1,depthWrite:!1,fog:!1})),be.geometry.deleteAttribute("normal"),be.geometry.deleteAttribute("uv"),be.onBeforeRender=function(rt,Bt,Dt){this.matrixWorld.copyPosition(Dt.matrixWorld)},Object.defineProperty(be.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),MA.update(be)),xg.copy(at.backgroundRotation),xg.x*=-1,xg.y*=-1,xg.z*=-1,et.isCubeTexture&&et.isRenderTargetTexture===!1&&(xg.y*=-1,xg.z*=-1),be.material.uniforms.envMap.value=et,be.material.uniforms.flipEnvMap.value=et.isCubeTexture&&et.isRenderTargetTexture===!1?-1:1,be.material.uniforms.backgroundBlurriness.value=at.backgroundBlurriness,be.material.uniforms.backgroundIntensity.value=at.backgroundIntensity,be.material.uniforms.backgroundRotation.value.setFromMatrix4(Wa.makeRotationFromEuler(xg)),be.material.toneMapped=s.ColorManagement.getTransfer(et.colorSpace)!==s.SRGBTransfer,(se!==et||Ge!==et.version||je!==E.toneMapping)&&(be.material.needsUpdate=!0,se=et,Ge=et.version,je=E.toneMapping),be.layers.enableAll(),Pe.unshift(be,be.geometry,be.material,0,0,null)):et&&et.isTexture&&(Le===void 0&&(Le=new s.Mesh(new s.PlaneGeometry(2,2),new s.ShaderMaterial({name:"BackgroundMaterial",uniforms:(0,s.cloneUniforms)(jr.background.uniforms),vertexShader:jr.background.vertexShader,fragmentShader:jr.background.fragmentShader,side:s.FrontSide,depthTest:!1,depthWrite:!1,fog:!1})),Le.geometry.deleteAttribute("normal"),Object.defineProperty(Le.material,"map",{get:function(){return this.uniforms.t2D.value}}),MA.update(Le)),Le.material.uniforms.t2D.value=et,Le.material.uniforms.backgroundIntensity.value=at.backgroundIntensity,Le.material.toneMapped=s.ColorManagement.getTransfer(et.colorSpace)!==s.SRGBTransfer,et.matrixAutoUpdate===!0&&et.updateMatrix(),Le.material.uniforms.uvTransform.value.copy(et.matrix),(se!==et||Ge!==et.version||je!==E.toneMapping)&&(Le.material.needsUpdate=!0,se=et,Ge=et.version,je=E.toneMapping),Le.layers.enableAll(),Pe.unshift(Le,Le.geometry,Le.material,0,0,null))}function FA(Pe,at){Pe.getRGB(Jg,(0,s.getUnlitUniformColorSpace)(E)),sA.buffers.color.setClear(Jg.r,Jg.g,Jg.b,at,PA)}function At(){be!==void 0&&(be.geometry.dispose(),be.material.dispose(),be=void 0),Le!==void 0&&(Le.geometry.dispose(),Le.material.dispose(),Le=void 0)}return{getClearColor:function(){return OA},setClearColor:function(Pe,at=1){OA.set(Pe),Xe=at,FA(OA,Xe)},getClearAlpha:function(){return Xe},setClearAlpha:function(Pe){Xe=Pe,FA(OA,Xe)},render:Ve,addToRenderList:Ae,dispose:At}}function LA(E,J){const F=E.getParameter(E.MAX_VERTEX_ATTRIBS),sA={},MA=Ge(null);let dA=MA,PA=!1;function OA(oe,it,$t,ht,mt){let mi=!1;const Jt=se(ht,$t,it);dA!==Jt&&(dA=Jt,Le(dA.object)),mi=je(oe,ht,$t,mt),mi&&ve(oe,ht,$t,mt),mt!==null&&J.update(mt,E.ELEMENT_ARRAY_BUFFER),(mi||PA)&&(PA=!1,at(oe,it,$t,ht),mt!==null&&E.bindBuffer(E.ELEMENT_ARRAY_BUFFER,J.get(mt).buffer))}function Xe(){return E.createVertexArray()}function Le(oe){return E.bindVertexArray(oe)}function be(oe){return E.deleteVertexArray(oe)}function se(oe,it,$t){const ht=$t.wireframe===!0;let mt=sA[oe.id];mt===void 0&&(mt={},sA[oe.id]=mt);let mi=mt[it.id];mi===void 0&&(mi={},mt[it.id]=mi);let Jt=mi[ht];return Jt===void 0&&(Jt=Ge(Xe()),mi[ht]=Jt),Jt}function Ge(oe){const it=[],$t=[],ht=[];for(let mt=0;mt<F;mt++)it[mt]=0,$t[mt]=0,ht[mt]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:it,enabledAttributes:$t,attributeDivisors:ht,object:oe,attributes:{},index:null}}function je(oe,it,$t,ht){const mt=dA.attributes,mi=it.attributes;let Jt=0;const Bi=$t.getAttributes();for(const _t in Bi)if(Bi[_t].location>=0){const yn=mt[_t];let Xn=mi[_t];if(Xn===void 0&&(_t==="instanceMatrix"&&oe.instanceMatrix&&(Xn=oe.instanceMatrix),_t==="instanceColor"&&oe.instanceColor&&(Xn=oe.instanceColor)),yn===void 0||yn.attribute!==Xn||Xn&&yn.data!==Xn.data)return!0;Jt++}return dA.attributesNum!==Jt||dA.index!==ht}function ve(oe,it,$t,ht){const mt={},mi=it.attributes;let Jt=0;const Bi=$t.getAttributes();for(const _t in Bi)if(Bi[_t].location>=0){let yn=mi[_t];yn===void 0&&(_t==="instanceMatrix"&&oe.instanceMatrix&&(yn=oe.instanceMatrix),_t==="instanceColor"&&oe.instanceColor&&(yn=oe.instanceColor));const Xn={};Xn.attribute=yn,yn&&yn.data&&(Xn.data=yn.data),mt[_t]=Xn,Jt++}dA.attributes=mt,dA.attributesNum=Jt,dA.index=ht}function Ve(){const oe=dA.newAttributes;for(let it=0,$t=oe.length;it<$t;it++)oe[it]=0}function Ae(oe){FA(oe,0)}function FA(oe,it){const $t=dA.newAttributes,ht=dA.enabledAttributes,mt=dA.attributeDivisors;$t[oe]=1,ht[oe]===0&&(E.enableVertexAttribArray(oe),ht[oe]=1),mt[oe]!==it&&(E.vertexAttribDivisor(oe,it),mt[oe]=it)}function At(){const oe=dA.newAttributes,it=dA.enabledAttributes;for(let $t=0,ht=it.length;$t<ht;$t++)it[$t]!==oe[$t]&&(E.disableVertexAttribArray($t),it[$t]=0)}function Pe(oe,it,$t,ht,mt,mi,Jt){Jt===!0?E.vertexAttribIPointer(oe,it,$t,mt,mi):E.vertexAttribPointer(oe,it,$t,ht,mt,mi)}function at(oe,it,$t,ht){Ve();const mt=ht.attributes,mi=$t.getAttributes(),Jt=it.defaultAttributeValues;for(const Bi in mi){const _t=mi[Bi];if(_t.location>=0){let vt=mt[Bi];if(vt===void 0&&(Bi==="instanceMatrix"&&oe.instanceMatrix&&(vt=oe.instanceMatrix),Bi==="instanceColor"&&oe.instanceColor&&(vt=oe.instanceColor)),vt!==void 0){const yn=vt.normalized,Xn=vt.itemSize,Gr=J.get(vt);if(Gr===void 0)continue;const co=Gr.buffer,Ar=Gr.type,Fr=Gr.bytesPerElement,an=Ar===E.INT||Ar===E.UNSIGNED_INT||vt.gpuType===s.IntType;if(vt.isInterleavedBufferAttribute){const li=vt.data,Zt=li.stride,yi=vt.offset;if(li.isInstancedInterleavedBuffer){for(let Oi=0;Oi<_t.locationSize;Oi++)FA(_t.location+Oi,li.meshPerAttribute);oe.isInstancedMesh!==!0&&ht._maxInstanceCount===void 0&&(ht._maxInstanceCount=li.meshPerAttribute*li.count)}else for(let Oi=0;Oi<_t.locationSize;Oi++)Ae(_t.location+Oi);E.bindBuffer(E.ARRAY_BUFFER,co);for(let Oi=0;Oi<_t.locationSize;Oi++)Pe(_t.location+Oi,Xn/_t.locationSize,Ar,yn,Zt*Fr,(yi+Xn/_t.locationSize*Oi)*Fr,an)}else{if(vt.isInstancedBufferAttribute){for(let li=0;li<_t.locationSize;li++)FA(_t.location+li,vt.meshPerAttribute);oe.isInstancedMesh!==!0&&ht._maxInstanceCount===void 0&&(ht._maxInstanceCount=vt.meshPerAttribute*vt.count)}else for(let li=0;li<_t.locationSize;li++)Ae(_t.location+li);E.bindBuffer(E.ARRAY_BUFFER,co);for(let li=0;li<_t.locationSize;li++)Pe(_t.location+li,Xn/_t.locationSize,Ar,yn,Xn*Fr,Xn/_t.locationSize*li*Fr,an)}}else if(Jt!==void 0){const yn=Jt[Bi];if(yn!==void 0)switch(yn.length){case 2:E.vertexAttrib2fv(_t.location,yn);break;case 3:E.vertexAttrib3fv(_t.location,yn);break;case 4:E.vertexAttrib4fv(_t.location,yn);break;default:E.vertexAttrib1fv(_t.location,yn)}}}}At()}function et(){Dt();for(const oe in sA){const it=sA[oe];for(const $t in it){const ht=it[$t];for(const mt in ht)be(ht[mt].object),delete ht[mt];delete it[$t]}delete sA[oe]}}function rt(oe){if(sA[oe.id]===void 0)return;const it=sA[oe.id];for(const $t in it){const ht=it[$t];for(const mt in ht)be(ht[mt].object),delete ht[mt];delete it[$t]}delete sA[oe.id]}function Bt(oe){for(const it in sA){const $t=sA[it];if($t[oe.id]===void 0)continue;const ht=$t[oe.id];for(const mt in ht)be(ht[mt].object),delete ht[mt];delete $t[oe.id]}}function Dt(){ce(),PA=!0,dA!==MA&&(dA=MA,Le(dA.object))}function ce(){MA.geometry=null,MA.program=null,MA.wireframe=!1}return{setup:OA,reset:Dt,resetDefaultState:ce,dispose:et,releaseStatesOfGeometry:rt,releaseStatesOfProgram:Bt,initAttributes:Ve,enableAttribute:Ae,disableUnusedAttributes:At}}function $A(E,J,F){let sA;function MA(Le){sA=Le}function dA(Le,be){E.drawArrays(sA,Le,be),F.update(be,sA,1)}function PA(Le,be,se){se!==0&&(E.drawArraysInstanced(sA,Le,be,se),F.update(be,sA,se))}function OA(Le,be,se){if(se===0)return;J.get("WEBGL_multi_draw").multiDrawArraysWEBGL(sA,Le,0,be,0,se);let je=0;for(let ve=0;ve<se;ve++)je+=be[ve];F.update(je,sA,1)}function Xe(Le,be,se,Ge){if(se===0)return;const je=J.get("WEBGL_multi_draw");if(je===null)for(let ve=0;ve<Le.length;ve++)PA(Le[ve],be[ve],Ge[ve]);else{je.multiDrawArraysInstancedWEBGL(sA,Le,0,be,0,Ge,0,se);let ve=0;for(let Ve=0;Ve<se;Ve++)ve+=be[Ve]*Ge[Ve];F.update(ve,sA,1)}}this.setMode=MA,this.render=dA,this.renderInstances=PA,this.renderMultiDraw=OA,this.renderMultiDrawInstances=Xe}function re(E,J,F,sA){let MA;function dA(){if(MA!==void 0)return MA;if(J.has("EXT_texture_filter_anisotropic")===!0){const Bt=J.get("EXT_texture_filter_anisotropic");MA=E.getParameter(Bt.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else MA=0;return MA}function PA(Bt){return!(Bt!==s.RGBAFormat&&sA.convert(Bt)!==E.getParameter(E.IMPLEMENTATION_COLOR_READ_FORMAT))}function OA(Bt){const Dt=Bt===s.HalfFloatType&&(J.has("EXT_color_buffer_half_float")||J.has("EXT_color_buffer_float"));return!(Bt!==s.UnsignedByteType&&sA.convert(Bt)!==E.getParameter(E.IMPLEMENTATION_COLOR_READ_TYPE)&&Bt!==s.FloatType&&!Dt)}function Xe(Bt){if(Bt==="highp"){if(E.getShaderPrecisionFormat(E.VERTEX_SHADER,E.HIGH_FLOAT).precision>0&&E.getShaderPrecisionFormat(E.FRAGMENT_SHADER,E.HIGH_FLOAT).precision>0)return"highp";Bt="mediump"}return Bt==="mediump"&&E.getShaderPrecisionFormat(E.VERTEX_SHADER,E.MEDIUM_FLOAT).precision>0&&E.getShaderPrecisionFormat(E.FRAGMENT_SHADER,E.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let Le=F.precision!==void 0?F.precision:"highp";const be=Xe(Le);be!==Le&&(console.warn("THREE.WebGLRenderer:",Le,"not supported, using",be,"instead."),Le=be);const se=F.logarithmicDepthBuffer===!0,Ge=F.reverseDepthBuffer===!0&&J.has("EXT_clip_control"),je=E.getParameter(E.MAX_TEXTURE_IMAGE_UNITS),ve=E.getParameter(E.MAX_VERTEX_TEXTURE_IMAGE_UNITS),Ve=E.getParameter(E.MAX_TEXTURE_SIZE),Ae=E.getParameter(E.MAX_CUBE_MAP_TEXTURE_SIZE),FA=E.getParameter(E.MAX_VERTEX_ATTRIBS),At=E.getParameter(E.MAX_VERTEX_UNIFORM_VECTORS),Pe=E.getParameter(E.MAX_VARYING_VECTORS),at=E.getParameter(E.MAX_FRAGMENT_UNIFORM_VECTORS),et=ve>0,rt=E.getParameter(E.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:dA,getMaxPrecision:Xe,textureFormatReadable:PA,textureTypeReadable:OA,precision:Le,logarithmicDepthBuffer:se,reverseDepthBuffer:Ge,maxTextures:je,maxVertexTextures:ve,maxTextureSize:Ve,maxCubemapSize:Ae,maxAttributes:FA,maxVertexUniforms:At,maxVaryings:Pe,maxFragmentUniforms:at,vertexTextures:et,maxSamples:rt}}function Te(E){const J=this;let F=null,sA=0,MA=!1,dA=!1;const PA=new s.Plane,OA=new s.Matrix3,Xe={value:null,needsUpdate:!1};this.uniform=Xe,this.numPlanes=0,this.numIntersection=0,this.init=function(se,Ge){const je=se.length!==0||Ge||sA!==0||MA;return MA=Ge,sA=se.length,je},this.beginShadows=function(){dA=!0,be(null)},this.endShadows=function(){dA=!1},this.setGlobalState=function(se,Ge){F=be(se,Ge,0)},this.setState=function(se,Ge,je){const ve=se.clippingPlanes,Ve=se.clipIntersection,Ae=se.clipShadows,FA=E.get(se);if(!MA||ve===null||ve.length===0||dA&&!Ae)dA?be(null):Le();else{const At=dA?0:sA,Pe=At*4;let at=FA.clippingState||null;Xe.value=at,at=be(ve,Ge,Pe,je);for(let et=0;et!==Pe;++et)at[et]=F[et];FA.clippingState=at,this.numIntersection=Ve?this.numPlanes:0,this.numPlanes+=At}};function Le(){Xe.value!==F&&(Xe.value=F,Xe.needsUpdate=sA>0),J.numPlanes=sA,J.numIntersection=0}function be(se,Ge,je,ve){const Ve=se!==null?se.length:0;let Ae=null;if(Ve!==0){if(Ae=Xe.value,ve!==!0||Ae===null){const FA=je+Ve*4,At=Ge.matrixWorldInverse;OA.getNormalMatrix(At),(Ae===null||Ae.length<FA)&&(Ae=new Float32Array(FA));for(let Pe=0,at=je;Pe!==Ve;++Pe,at+=4)PA.copy(se[Pe]).applyMatrix4(At,OA),PA.normal.toArray(Ae,at),Ae[at+3]=PA.constant}Xe.value=Ae,Xe.needsUpdate=!0}return J.numPlanes=Ve,J.numIntersection=0,Ae}}function Ke(E){let J=new WeakMap;function F(PA,OA){return OA===s.EquirectangularReflectionMapping?PA.mapping=s.CubeReflectionMapping:OA===s.EquirectangularRefractionMapping&&(PA.mapping=s.CubeRefractionMapping),PA}function sA(PA){if(PA&&PA.isTexture){const OA=PA.mapping;if(OA===s.EquirectangularReflectionMapping||OA===s.EquirectangularRefractionMapping)if(J.has(PA)){const Xe=J.get(PA).texture;return F(Xe,PA.mapping)}else{const Xe=PA.image;if(Xe&&Xe.height>0){const Le=new s.WebGLCubeRenderTarget(Xe.height);return Le.fromEquirectangularTexture(E,PA),J.set(PA,Le),PA.addEventListener("dispose",MA),F(Le.texture,PA.mapping)}else return null}}return PA}function MA(PA){const OA=PA.target;OA.removeEventListener("dispose",MA);const Xe=J.get(OA);Xe!==void 0&&(J.delete(OA),Xe.dispose())}function dA(){J=new WeakMap}return{get:sA,dispose:dA}}const Ue=4,ee=[.125,.215,.35,.446,.526,.582],Ie=20,Fe=new s.OrthographicCamera,xe=new s.Color;let Lt=null,Vt=0,Ft=0,Qi=!1;const zt=(1+Math.sqrt(5))/2,vn=1/zt,Fo=[new s.Vector3(-zt,vn,0),new s.Vector3(zt,vn,0),new s.Vector3(-vn,0,zt),new s.Vector3(vn,0,zt),new s.Vector3(0,zt,-vn),new s.Vector3(0,zt,vn),new s.Vector3(-1,1,-1),new s.Vector3(1,1,-1),new s.Vector3(-1,1,1),new s.Vector3(1,1,1)];class Io{constructor(J){this._renderer=J,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(J,F=0,sA=.1,MA=100){Lt=this._renderer.getRenderTarget(),Vt=this._renderer.getActiveCubeFace(),Ft=this._renderer.getActiveMipmapLevel(),Qi=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);const dA=this._allocateTargets();return dA.depthBuffer=!0,this._sceneToCubeUV(J,sA,MA,dA),F>0&&this._blur(dA,0,0,F),this._applyPMREM(dA),this._cleanup(dA),dA}fromEquirectangular(J,F=null){return this._fromTexture(J,F)}fromCubemap(J,F=null){return this._fromTexture(J,F)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Or(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=xr(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(J){this._lodMax=Math.floor(Math.log2(J)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let J=0;J<this._lodPlanes.length;J++)this._lodPlanes[J].dispose()}_cleanup(J){this._renderer.setRenderTarget(Lt,Vt,Ft),this._renderer.xr.enabled=Qi,J.scissorTest=!1,bg(J,0,0,J.width,J.height)}_fromTexture(J,F){J.mapping===s.CubeReflectionMapping||J.mapping===s.CubeRefractionMapping?this._setSize(J.image.length===0?16:J.image[0].width||J.image[0].image.width):this._setSize(J.image.width/4),Lt=this._renderer.getRenderTarget(),Vt=this._renderer.getActiveCubeFace(),Ft=this._renderer.getActiveMipmapLevel(),Qi=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;const sA=F||this._allocateTargets();return this._textureToCubeUV(J,sA),this._applyPMREM(sA),this._cleanup(sA),sA}_allocateTargets(){const J=3*Math.max(this._cubeSize,112),F=4*this._cubeSize,sA={magFilter:s.LinearFilter,minFilter:s.LinearFilter,generateMipmaps:!1,type:s.HalfFloatType,format:s.RGBAFormat,colorSpace:s.LinearSRGBColorSpace,depthBuffer:!1},MA=rs(J,F,sA);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==J||this._pingPongRenderTarget.height!==F){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=rs(J,F,sA);const{_lodMax:dA}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=Lr(dA)),this._blurMaterial=Pr(dA,J,F)}return MA}_compileMaterial(J){const F=new s.Mesh(this._lodPlanes[0],J);this._renderer.compile(F,Fe)}_sceneToCubeUV(J,F,sA,MA){const OA=new s.PerspectiveCamera(90,1,F,sA),Xe=[1,-1,1,1,1,1],Le=[1,1,1,-1,-1,-1],be=this._renderer,se=be.autoClear,Ge=be.toneMapping;be.getClearColor(xe),be.toneMapping=s.NoToneMapping,be.autoClear=!1;const je=new s.MeshBasicMaterial({name:"PMREM.Background",side:s.BackSide,depthWrite:!1,depthTest:!1}),ve=new s.Mesh(new s.BoxGeometry,je);let Ve=!1;const Ae=J.background;Ae?Ae.isColor&&(je.color.copy(Ae),J.background=null,Ve=!0):(je.color.copy(xe),Ve=!0);for(let FA=0;FA<6;FA++){const At=FA%3;At===0?(OA.up.set(0,Xe[FA],0),OA.lookAt(Le[FA],0,0)):At===1?(OA.up.set(0,0,Xe[FA]),OA.lookAt(0,Le[FA],0)):(OA.up.set(0,Xe[FA],0),OA.lookAt(0,0,Le[FA]));const Pe=this._cubeSize;bg(MA,At*Pe,FA>2?Pe:0,Pe,Pe),be.setRenderTarget(MA),Ve&&be.render(ve,OA),be.render(J,OA)}ve.geometry.dispose(),ve.material.dispose(),be.toneMapping=Ge,be.autoClear=se,J.background=Ae}_textureToCubeUV(J,F){const sA=this._renderer,MA=J.mapping===s.CubeReflectionMapping||J.mapping===s.CubeRefractionMapping;MA?(this._cubemapMaterial===null&&(this._cubemapMaterial=Or()),this._cubemapMaterial.uniforms.flipEnvMap.value=J.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=xr());const dA=MA?this._cubemapMaterial:this._equirectMaterial,PA=new s.Mesh(this._lodPlanes[0],dA),OA=dA.uniforms;OA.envMap.value=J;const Xe=this._cubeSize;bg(F,0,0,3*Xe,2*Xe),sA.setRenderTarget(F),sA.render(PA,Fe)}_applyPMREM(J){const F=this._renderer,sA=F.autoClear;F.autoClear=!1;const MA=this._lodPlanes.length;for(let dA=1;dA<MA;dA++){const PA=Math.sqrt(this._sigmas[dA]*this._sigmas[dA]-this._sigmas[dA-1]*this._sigmas[dA-1]),OA=Fo[(MA-dA-1)%Fo.length];this._blur(J,dA-1,dA,PA,OA)}F.autoClear=sA}_blur(J,F,sA,MA,dA){const PA=this._pingPongRenderTarget;this._halfBlur(J,PA,F,sA,MA,"latitudinal",dA),this._halfBlur(PA,J,sA,sA,MA,"longitudinal",dA)}_halfBlur(J,F,sA,MA,dA,PA,OA){const Xe=this._renderer,Le=this._blurMaterial;PA!=="latitudinal"&&PA!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");const be=3,se=new s.Mesh(this._lodPlanes[MA],Le),Ge=Le.uniforms,je=this._sizeLods[sA]-1,ve=isFinite(dA)?Math.PI/(2*je):2*Math.PI/(2*Ie-1),Ve=dA/ve,Ae=isFinite(dA)?1+Math.floor(be*Ve):Ie;Ae>Ie&&console.warn(`sigmaRadians, ${dA}, is too large and will clip, as it requested ${Ae} samples when the maximum is set to ${Ie}`);const FA=[];let At=0;for(let Bt=0;Bt<Ie;++Bt){const Dt=Bt/Ve,ce=Math.exp(-Dt*Dt/2);FA.push(ce),Bt===0?At+=ce:Bt<Ae&&(At+=2*ce)}for(let Bt=0;Bt<FA.length;Bt++)FA[Bt]=FA[Bt]/At;Ge.envMap.value=J.texture,Ge.samples.value=Ae,Ge.weights.value=FA,Ge.latitudinal.value=PA==="latitudinal",OA&&(Ge.poleAxis.value=OA);const{_lodMax:Pe}=this;Ge.dTheta.value=ve,Ge.mipInt.value=Pe-sA;const at=this._sizeLods[MA],et=3*at*(MA>Pe-Ue?MA-Pe+Ue:0),rt=4*(this._cubeSize-at);bg(F,et,rt,3*at,2*at),Xe.setRenderTarget(F),Xe.render(se,Fe)}}function Lr(E){const J=[],F=[],sA=[];let MA=E;const dA=E-Ue+1+ee.length;for(let PA=0;PA<dA;PA++){const OA=Math.pow(2,MA);F.push(OA);let Xe=1/OA;PA>E-Ue?Xe=ee[PA-E+Ue-1]:PA===0&&(Xe=0),sA.push(Xe);const Le=1/(OA-2),be=-Le,se=1+Le,Ge=[be,be,se,be,se,se,be,be,se,se,be,se],je=6,ve=6,Ve=3,Ae=2,FA=1,At=new Float32Array(Ve*ve*je),Pe=new Float32Array(Ae*ve*je),at=new Float32Array(FA*ve*je);for(let rt=0;rt<je;rt++){const Bt=rt%3*2/3-1,Dt=rt>2?0:-1,ce=[Bt,Dt,0,Bt+2/3,Dt,0,Bt+2/3,Dt+1,0,Bt,Dt,0,Bt+2/3,Dt+1,0,Bt,Dt+1,0];At.set(ce,Ve*ve*rt),Pe.set(Ge,Ae*ve*rt);const oe=[rt,rt,rt,rt,rt,rt];at.set(oe,FA*ve*rt)}const et=new s.BufferGeometry;et.setAttribute("position",new s.BufferAttribute(At,Ve)),et.setAttribute("uv",new s.BufferAttribute(Pe,Ae)),et.setAttribute("faceIndex",new s.BufferAttribute(at,FA)),J.push(et),MA>Ue&&MA--}return{lodPlanes:J,sizeLods:F,sigmas:sA}}function rs(E,J,F){const sA=new s.WebGLRenderTarget(E,J,F);return sA.texture.mapping=s.CubeUVReflectionMapping,sA.texture.name="PMREM.cubeUv",sA.scissorTest=!0,sA}function bg(E,J,F,sA,MA){E.viewport.set(J,F,sA,MA),E.scissor.set(J,F,sA,MA)}function Pr(E,J,F){const sA=new Float32Array(Ie),MA=new s.Vector3(0,1,0);return new s.ShaderMaterial({name:"SphericalGaussianBlur",defines:{n:Ie,CUBEUV_TEXEL_WIDTH:1/J,CUBEUV_TEXEL_HEIGHT:1/F,CUBEUV_MAX_MIP:`${E}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:sA},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:MA}},vertexShader:Gs(),fragmentShader:`
precision mediump float;
precision mediump int;
varying vec3 vOutputDirection;
uniform sampler2D envMap;
uniform int samples;
uniform float weights[ n ];
uniform bool latitudinal;
uniform float dTheta;
uniform float mipInt;
uniform vec3 poleAxis;
#define ENVMAP_TYPE_CUBE_UV
#include <cube_uv_reflection_fragment>
vec3 getSample( float theta, vec3 axis ) {
float cosTheta = cos( theta );
// Rodrigues' axis-angle rotation
vec3 sampleDirection = vOutputDirection * cosTheta
+ cross( axis, vOutputDirection ) * sin( theta )
+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );
return bilinearCubeUV( envMap, sampleDirection, mipInt );
}
void main() {
vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );
if ( all( equal( axis, vec3( 0.0 ) ) ) ) {
axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );
}
axis = normalize( axis );
gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );
gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );
for ( int i = 1; i < n; i++ ) {
if ( i >= samples ) {
break;
}
float theta = dTheta * float( i );
gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );
gl_FragColor.rgb += weights[ i ] * getSample( theta, axis );
}
}
`,blending:s.NoBlending,depthTest:!1,depthWrite:!1})}function xr(){return new s.ShaderMaterial({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:Gs(),fragmentShader:`
precision mediump float;
precision mediump int;
varying vec3 vOutputDirection;
uniform sampler2D envMap;
#include <common>
void main() {
vec3 outputDirection = normalize( vOutputDirection );
vec2 uv = equirectUv( outputDirection );
gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );
}
`,blending:s.NoBlending,depthTest:!1,depthWrite:!1})}function Or(){return new s.ShaderMaterial({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:Gs(),fragmentShader:`
precision mediump float;
precision mediump int;
uniform float flipEnvMap;
varying vec3 vOutputDirection;
uniform samplerCube envMap;
void main() {
gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );
}
`,blending:s.NoBlending,depthTest:!1,depthWrite:!1})}function Gs(){return`
precision mediump float;
precision mediump int;
attribute float faceIndex;
varying vec3 vOutputDirection;
// RH coordinate system; PMREM face-indexing convention
vec3 getDirection( vec2 uv, float face ) {
uv = 2.0 * uv - 1.0;
vec3 direction = vec3( uv, 1.0 );
if ( face == 0.0 ) {
direction = direction.zyx; // ( 1, v, u ) pos x
} else if ( face == 1.0 ) {
direction = direction.xzy;
direction.xz *= -1.0; // ( -u, 1, -v ) pos y
} else if ( face == 2.0 ) {
direction.x *= -1.0; // ( -u, v, 1 ) pos z
} else if ( face == 3.0 ) {
direction = direction.zyx;
direction.xz *= -1.0; // ( -1, v, -u ) neg x
} else if ( face == 4.0 ) {
direction = direction.xzy;
direction.xy *= -1.0; // ( -u, -1, v ) neg y
} else if ( face == 5.0 ) {
direction.z *= -1.0; // ( u, v, -1 ) neg z
}
return direction;
}
void main() {
vOutputDirection = getDirection( uv, faceIndex );
gl_Position = vec4( position, 1.0 );
}
`}function dg(E){let J=new WeakMap,F=null;function sA(OA){if(OA&&OA.isTexture){const Xe=OA.mapping,Le=Xe===s.EquirectangularReflectionMapping||Xe===s.EquirectangularRefractionMapping,be=Xe===s.CubeReflectionMapping||Xe===s.CubeRefractionMapping;if(Le||be){let se=J.get(OA);const Ge=se!==void 0?se.texture.pmremVersion:0;if(OA.isRenderTargetTexture&&OA.pmremVersion!==Ge)return F===null&&(F=new Io(E)),se=Le?F.fromEquirectangular(OA,se):F.fromCubemap(OA,se),se.texture.pmremVersion=OA.pmremVersion,J.set(OA,se),se.texture;if(se!==void 0)return se.texture;{const je=OA.image;return Le&&je&&je.height>0||be&&je&&MA(je)?(F===null&&(F=new Io(E)),se=Le?F.fromEquirectangular(OA):F.fromCubemap(OA),se.texture.pmremVersion=OA.pmremVersion,J.set(OA,se),OA.addEventListener("dispose",dA),se.texture):null}}}return OA}function MA(OA){let Xe=0;const Le=6;for(let be=0;be<Le;be++)OA[be]!==void 0&&Xe++;return Xe===Le}function dA(OA){const Xe=OA.target;Xe.removeEventListener("dispose",dA);const Le=J.get(Xe);Le!==void 0&&(J.delete(Xe),Le.dispose())}function PA(){J=new WeakMap,F!==null&&(F.dispose(),F=null)}return{get:sA,dispose:PA}}function vi(E){const J={};function F(sA){if(J[sA]!==void 0)return J[sA];let MA;switch(sA){case"WEBGL_depth_texture":MA=E.getExtension("WEBGL_depth_texture")||E.getExtension("MOZ_WEBGL_depth_texture")||E.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":MA=E.getExtension("EXT_texture_filter_anisotropic")||E.getExtension("MOZ_EXT_texture_filter_anisotropic")||E.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":MA=E.getExtension("WEBGL_compressed_texture_s3tc")||E.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||E.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":MA=E.getExtension("WEBGL_compressed_texture_pvrtc")||E.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:MA=E.getExtension(sA)}return J[sA]=MA,MA}return{has:function(sA){return F(sA)!==null},init:function(){F("EXT_color_buffer_float"),F("WEBGL_clip_cull_distance"),F("OES_texture_float_linear"),F("EXT_color_buffer_half_float"),F("WEBGL_multisampled_render_to_texture"),F("WEBGL_render_shared_exponent")},get:function(sA){const MA=F(sA);return MA===null&&(0,s.warnOnce)("THREE.WebGLRenderer: "+sA+" extension not supported."),MA}}}function fo(E,J,F,sA){const MA={},dA=new WeakMap;function PA(se){const Ge=se.target;Ge.index!==null&&J.remove(Ge.index);for(const ve in Ge.attributes)J.remove(Ge.attributes[ve]);Ge.removeEventListener("dispose",PA),delete MA[Ge.id];const je=dA.get(Ge);je&&(J.remove(je),dA.delete(Ge)),sA.releaseStatesOfGeometry(Ge),Ge.isInstancedBufferGeometry===!0&&delete Ge._maxInstanceCount,F.memory.geometries--}function OA(se,Ge){return MA[Ge.id]===!0||(Ge.addEventListener("dispose",PA),MA[Ge.id]=!0,F.memory.geometries++),Ge}function Xe(se){const Ge=se.attributes;for(const je in Ge)J.update(Ge[je],E.ARRAY_BUFFER)}function Le(se){const Ge=[],je=se.index,ve=se.attributes.position;let Ve=0;if(je!==null){const At=je.array;Ve=je.version;for(let Pe=0,at=At.length;Pe<at;Pe+=3){const et=At[Pe+0],rt=At[Pe+1],Bt=At[Pe+2];Ge.push(et,rt,rt,Bt,Bt,et)}}else if(ve!==void 0){const At=ve.array;Ve=ve.version;for(let Pe=0,at=At.length/3-1;Pe<at;Pe+=3){const et=Pe+0,rt=Pe+1,Bt=Pe+2;Ge.push(et,rt,rt,Bt,Bt,et)}}else return;const Ae=new((0,s.arrayNeedsUint32)(Ge)?s.Uint32BufferAttribute:s.Uint16BufferAttribute)(Ge,1);Ae.version=Ve;const FA=dA.get(se);FA&&J.remove(FA),dA.set(se,Ae)}function be(se){const Ge=dA.get(se);if(Ge){const je=se.index;je!==null&&Ge.version<je.version&&Le(se)}else Le(se);return dA.get(se)}return{get:OA,update:Xe,getWireframeAttribute:be}}function Yg(E,J,F){let sA;function MA(Ge){sA=Ge}let dA,PA;function OA(Ge){dA=Ge.type,PA=Ge.bytesPerElement}function Xe(Ge,je){E.drawElements(sA,je,dA,Ge*PA),F.update(je,sA,1)}function Le(Ge,je,ve){ve!==0&&(E.drawElementsInstanced(sA,je,dA,Ge*PA,ve),F.update(je,sA,ve))}function be(Ge,je,ve){if(ve===0)return;J.get("WEBGL_multi_draw").multiDrawElementsWEBGL(sA,je,0,dA,Ge,0,ve);let Ae=0;for(let FA=0;FA<ve;FA++)Ae+=je[FA];F.update(Ae,sA,1)}function se(Ge,je,ve,Ve){if(ve===0)return;const Ae=J.get("WEBGL_multi_draw");if(Ae===null)for(let FA=0;FA<Ge.length;FA++)Le(Ge[FA]/PA,je[FA],Ve[FA]);else{Ae.multiDrawElementsInstancedWEBGL(sA,je,0,dA,Ge,0,Ve,0,ve);let FA=0;for(let At=0;At<ve;At++)FA+=je[At]*Ve[At];F.update(FA,sA,1)}}this.setMode=MA,this.setIndex=OA,this.render=Xe,this.renderInstances=Le,this.renderMultiDraw=be,this.renderMultiDrawInstances=se}function Ja(E){const J={geometries:0,textures:0},F={frame:0,calls:0,triangles:0,points:0,lines:0};function sA(dA,PA,OA){switch(F.calls++,PA){case E.TRIANGLES:F.triangles+=OA*(dA/3);break;case E.LINES:F.lines+=OA*(dA/2);break;case E.LINE_STRIP:F.lines+=OA*(dA-1);break;case E.LINE_LOOP:F.lines+=OA*dA;break;case E.POINTS:F.points+=OA*dA;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",PA);break}}function MA(){F.calls=0,F.triangles=0,F.points=0,F.lines=0}return{memory:J,render:F,programs:null,autoReset:!0,reset:MA,update:sA}}function ug(E,J,F){const sA=new WeakMap,MA=new s.Vector4;function dA(PA,OA,Xe){const Le=PA.morphTargetInfluences,be=OA.morphAttributes.position||OA.morphAttributes.normal||OA.morphAttributes.color,se=be!==void 0?be.length:0;let Ge=sA.get(OA);if(Ge===void 0||Ge.count!==se){let je=function(){Dt.dispose(),sA.delete(OA),OA.removeEventListener("dispose",je)};Ge!==void 0&&Ge.texture.dispose();const ve=OA.morphAttributes.position!==void 0,Ve=OA.morphAttributes.normal!==void 0,Ae=OA.morphAttributes.color!==void 0,FA=OA.morphAttributes.position||[],At=OA.morphAttributes.normal||[],Pe=OA.morphAttributes.color||[];let at=0;ve===!0&&(at=1),Ve===!0&&(at=2),Ae===!0&&(at=3);let et=OA.attributes.position.count*at,rt=1;et>J.maxTextureSize&&(rt=Math.ceil(et/J.maxTextureSize),et=J.maxTextureSize);const Bt=new Float32Array(et*rt*4*se),Dt=new s.DataArrayTexture(Bt,et,rt,se);Dt.type=s.FloatType,Dt.needsUpdate=!0;const ce=at*4;for(let oe=0;oe<se;oe++){const it=FA[oe],$t=At[oe],ht=Pe[oe],mt=et*rt*4*oe;for(let mi=0;mi<it.count;mi++){const Jt=mi*ce;ve===!0&&(MA.fromBufferAttribute(it,mi),Bt[mt+Jt+0]=MA.x,Bt[mt+Jt+1]=MA.y,Bt[mt+Jt+2]=MA.z,Bt[mt+Jt+3]=0),Ve===!0&&(MA.fromBufferAttribute($t,mi),Bt[mt+Jt+4]=MA.x,Bt[mt+Jt+5]=MA.y,Bt[mt+Jt+6]=MA.z,Bt[mt+Jt+7]=0),Ae===!0&&(MA.fromBufferAttribute(ht,mi),Bt[mt+Jt+8]=MA.x,Bt[mt+Jt+9]=MA.y,Bt[mt+Jt+10]=MA.z,Bt[mt+Jt+11]=ht.itemSize===4?MA.w:1)}}Ge={count:se,texture:Dt,size:new s.Vector2(et,rt)},sA.set(OA,Ge),OA.addEventListener("dispose",je)}if(PA.isInstancedMesh===!0&&PA.morphTexture!==null)Xe.getUniforms().setValue(E,"morphTexture",PA.morphTexture,F);else{let je=0;for(let Ve=0;Ve<Le.length;Ve++)je+=Le[Ve];const ve=OA.morphTargetsRelative?1:1-je;Xe.getUniforms().setValue(E,"morphTargetBaseInfluence",ve),Xe.getUniforms().setValue(E,"morphTargetInfluences",Le)}Xe.getUniforms().setValue(E,"morphTargetsTexture",Ge.texture,F),Xe.getUniforms().setValue(E,"morphTargetsTextureSize",Ge.size)}return{update:dA}}class zg{constructor(J,F,sA){if(this.renderer=J,this.DEFAULT_NUMVIEWS=2,this.maxNumViews=0,this.gl=sA,this.extensions=F,this.available=this.extensions.has("OCULUS_multiview"),this.available){const dA=this.extensions.get("OCULUS_multiview");this.maxNumViews=this.gl.getParameter(dA.MAX_VIEWS_OVR),this.mat4=[],this.mat3=[],this.cameraArray=[];for(var MA=0;MA<this.maxNumViews;MA++)this.mat4[MA]=new s.Matrix4,this.mat3[MA]=new s.Matrix3}}getCameraArray(J){return J.isArrayCamera?J.cameras:(this.cameraArray[0]=J,this.cameraArray)}updateCameraProjectionMatricesUniform(J,F){for(var sA=this.getCameraArray(J),MA=0;MA<sA.length;MA++)this.mat4[MA].copy(sA[MA].projectionMatrix);F.setValue(this.gl,"projectionMatrices",this.mat4)}updateCameraViewMatricesUniform(J,F){for(var sA=this.getCameraArray(J),MA=0;MA<sA.length;MA++)this.mat4[MA].copy(sA[MA].matrixWorldInverse);F.setValue(this.gl,"viewMatrices",this.mat4)}updateObjectMatricesUniforms(J,F,sA){for(var MA=this.getCameraArray(F),dA=0;dA<MA.length;dA++)this.mat4[dA].multiplyMatrices(MA[dA].matrixWorldInverse,J.matrixWorld),this.mat3[dA].getNormalMatrix(this.mat4[dA]);sA.setValue(this.gl,"modelViewMatrices",this.mat4),sA.setValue(this.gl,"normalMatrices",this.mat3)}}function fg(E,J,F,sA){let MA=new WeakMap;function dA(Xe){const Le=sA.render.frame,be=Xe.geometry,se=J.get(Xe,be);if(MA.get(se)!==Le&&(J.update(se),MA.set(se,Le)),Xe.isInstancedMesh&&(Xe.hasEventListener("dispose",OA)===!1&&Xe.addEventListener("dispose",OA),MA.get(Xe)!==Le&&(F.update(Xe.instanceMatrix,E.ARRAY_BUFFER),Xe.instanceColor!==null&&F.update(Xe.instanceColor,E.ARRAY_BUFFER),MA.set(Xe,Le))),Xe.isSkinnedMesh){const Ge=Xe.skeleton;MA.get(Ge)!==Le&&(Ge.update(),MA.set(Ge,Le))}return se}function PA(){MA=new WeakMap}function OA(Xe){const Le=Xe.target;Le.removeEventListener("dispose",OA),F.remove(Le.instanceMatrix),Le.instanceColor!==null&&F.remove(Le.instanceColor)}return{update:dA,dispose:PA}}const Ca=new s.Texture,Ra=new s.DepthTexture(1,1),Fs=new s.DataArrayTexture,js=new s.Data3DTexture,ls=new s.CubeTexture,br=[],Xs=[],vs=new Float32Array(16),mI=new Float32Array(9),sg=new Float32Array(4);function zs(E,J,F){const sA=E[0];if(sA<=0||sA>0)return E;const MA=J*F;let dA=br[MA];if(dA===void 0&&(dA=new Float32Array(MA),br[MA]=dA),J!==0){sA.toArray(dA,0);for(let PA=1,OA=0;PA!==J;++PA)OA+=F,E[PA].toArray(dA,OA)}return dA}function Yo(E,J){if(E.length!==J.length)return!1;for(let F=0,sA=E.length;F<sA;F++)if(E[F]!==J[F])return!1;return!0}function Co(E,J){for(let F=0,sA=J.length;F<sA;F++)E[F]=J[F]}function ss(E,J){let F=Xs[J];F===void 0&&(F=new Int32Array(J),Xs[J]=F);for(let sA=0;sA!==J;++sA)F[sA]=E.allocateTextureUnit();return F}function Ns(E,J){const F=this.cache;F[0]!==J&&(E.uniform1f(this.addr,J),F[0]=J)}function DI(E,J){const F=this.cache;if(J.x!==void 0)(F[0]!==J.x||F[1]!==J.y)&&(E.uniform2f(this.addr,J.x,J.y),F[0]=J.x,F[1]=J.y);else{if(Yo(F,J))return;E.uniform2fv(this.addr,J),Co(F,J)}}function qn(E,J){const F=this.cache;if(J.x!==void 0)(F[0]!==J.x||F[1]!==J.y||F[2]!==J.z)&&(E.uniform3f(this.addr,J.x,J.y,J.z),F[0]=J.x,F[1]=J.y,F[2]=J.z);else if(J.r!==void 0)(F[0]!==J.r||F[1]!==J.g||F[2]!==J.b)&&(E.uniform3f(this.addr,J.r,J.g,J.b),F[0]=J.r,F[1]=J.g,F[2]=J.b);else{if(Yo(F,J))return;E.uniform3fv(this.addr,J),Co(F,J)}}function Ho(E,J){const F=this.cache;if(J.x!==void 0)(F[0]!==J.x||F[1]!==J.y||F[2]!==J.z||F[3]!==J.w)&&(E.uniform4f(this.addr,J.x,J.y,J.z,J.w),F[0]=J.x,F[1]=J.y,F[2]=J.z,F[3]=J.w);else{if(Yo(F,J))return;E.uniform4fv(this.addr,J),Co(F,J)}}function yI(E,J){const F=this.cache,sA=J.elements;if(sA===void 0){if(Yo(F,J))return;E.uniformMatrix2fv(this.addr,!1,J),Co(F,J)}else{if(Yo(F,sA))return;sg.set(sA),E.uniformMatrix2fv(this.addr,!1,sg),Co(F,sA)}}function $g(E,J){const F=this.cache,sA=J.elements;if(sA===void 0){if(Yo(F,J))return;E.uniformMatrix3fv(this.addr,!1,J),Co(F,J)}else{if(Yo(F,sA))return;mI.set(sA),E.uniformMatrix3fv(this.addr,!1,mI),Co(F,sA)}}function Ga(E,J){const F=this.cache,sA=J.elements;if(sA===void 0){if(Yo(F,J))return;E.uniformMatrix4fv(this.addr,!1,J),Co(F,J)}else{if(Yo(F,sA))return;vs.set(sA),E.uniformMatrix4fv(this.addr,!1,vs),Co(F,sA)}}function gg(E,J){const F=this.cache;F[0]!==J&&(E.uniform1i(this.addr,J),F[0]=J)}function no(E,J){const F=this.cache;if(J.x!==void 0)(F[0]!==J.x||F[1]!==J.y)&&(E.uniform2i(this.addr,J.x,J.y),F[0]=J.x,F[1]=J.y);else{if(Yo(F,J))return;E.uniform2iv(this.addr,J),Co(F,J)}}function aI(E,J){const F=this.cache;if(J.x!==void 0)(F[0]!==J.x||F[1]!==J.y||F[2]!==J.z)&&(E.uniform3i(this.addr,J.x,J.y,J.z),F[0]=J.x,F[1]=J.y,F[2]=J.z);else{if(Yo(F,J))return;E.uniform3iv(this.addr,J),Co(F,J)}}function wI(E,J){const F=this.cache;if(J.x!==void 0)(F[0]!==J.x||F[1]!==J.y||F[2]!==J.z||F[3]!==J.w)&&(E.uniform4i(this.addr,J.x,J.y,J.z,J.w),F[0]=J.x,F[1]=J.y,F[2]=J.z,F[3]=J.w);else{if(Yo(F,J))return;E.uniform4iv(this.addr,J),Co(F,J)}}function rC(E,J){const F=this.cache;F[0]!==J&&(E.uniform1ui(this.addr,J),F[0]=J)}function Lo(E,J){const F=this.cache;if(J.x!==void 0)(F[0]!==J.x||F[1]!==J.y)&&(E.uniform2ui(this.addr,J.x,J.y),F[0]=J.x,F[1]=J.y);else{if(Yo(F,J))return;E.uniform2uiv(this.addr,J),Co(F,J)}}function Aa(E,J){const F=this.cache;if(J.x!==void 0)(F[0]!==J.x||F[1]!==J.y||F[2]!==J.z)&&(E.uniform3ui(this.addr,J.x,J.y,J.z),F[0]=J.x,F[1]=J.y,F[2]=J.z);else{if(Yo(F,J))return;E.uniform3uiv(this.addr,J),Co(F,J)}}function II(E,J){const F=this.cache;if(J.x!==void 0)(F[0]!==J.x||F[1]!==J.y||F[2]!==J.z||F[3]!==J.w)&&(E.uniform4ui(this.addr,J.x,J.y,J.z,J.w),F[0]=J.x,F[1]=J.y,F[2]=J.z,F[3]=J.w);else{if(Yo(F,J))return;E.uniform4uiv(this.addr,J),Co(F,J)}}function Fa(E,J,F){const sA=this.cache,MA=F.allocateTextureUnit();sA[0]!==MA&&(E.uniform1i(this.addr,MA),sA[0]=MA);let dA;this.type===E.SAMPLER_2D_SHADOW?(Ra.compareFunction=s.LessEqualCompare,dA=Ra):dA=Ca,F.setTexture2D(J||dA,MA)}function OI(E,J,F){const sA=this.cache,MA=F.allocateTextureUnit();sA[0]!==MA&&(E.uniform1i(this.addr,MA),sA[0]=MA),F.setTexture3D(J||js,MA)}function Dn(E,J,F){const sA=this.cache,MA=F.allocateTextureUnit();sA[0]!==MA&&(E.uniform1i(this.addr,MA),sA[0]=MA),F.setTextureCube(J||ls,MA)}function fA(E,J,F){const sA=this.cache,MA=F.allocateTextureUnit();sA[0]!==MA&&(E.uniform1i(this.addr,MA),sA[0]=MA),F.setTexture2DArray(J||Fs,MA)}function Bs(E){switch(E){case 5126:return Ns;case 35664:return DI;case 35665:return qn;case 35666:return Ho;case 35674:return yI;case 35675:return $g;case 35676:return Ga;case 5124:case 35670:return gg;case 35667:case 35671:return no;case 35668:case 35672:return aI;case 35669:case 35673:return wI;case 5125:return rC;case 36294:return Lo;case 36295:return Aa;case 36296:return II;case 35678:case 36198:case 36298:case 36306:case 35682:return Fa;case 35679:case 36299:case 36307:return OI;case 35680:case 36300:case 36308:case 36293:return Dn;case 36289:case 36303:case 36311:case 36292:return fA}}function Ot(E,J){E.uniform1fv(this.addr,J)}function Bo(E,J){const F=zs(J,this.size,2);E.uniform2fv(this.addr,F)}function va(E,J){const F=zs(J,this.size,3);E.uniform3fv(this.addr,F)}function Na(E,J){const F=zs(J,this.size,4);E.uniform4fv(this.addr,F)}function Ua(E,J){const F=zs(J,this.size,4);E.uniformMatrix2fv(this.addr,!1,F)}function ea(E,J){const F=zs(J,this.size,9);E.uniformMatrix3fv(this.addr,!1,F)}function La(E,J){const F=zs(J,this.size,16);E.uniformMatrix4fv(this.addr,!1,F)}function ms(E,J){E.uniform1iv(this.addr,J)}function eo(E,J){E.uniform2iv(this.addr,J)}function MI(E,J){E.uniform3iv(this.addr,J)}function ni(E,J){E.uniform4iv(this.addr,J)}function ds(E,J){E.uniform1uiv(this.addr,J)}function Ba(E,J){E.uniform2uiv(this.addr,J)}function SI(E,J){E.uniform3uiv(this.addr,J)}function oo(E,J){E.uniform4uiv(this.addr,J)}function Hs(E,J,F){const sA=this.cache,MA=J.length,dA=ss(F,MA);Yo(sA,dA)||(E.uniform1iv(this.addr,dA),Co(sA,dA));for(let PA=0;PA!==MA;++PA)F.setTexture2D(J[PA]||Ca,dA[PA])}function vo(E,J,F){const sA=this.cache,MA=J.length,dA=ss(F,MA);Yo(sA,dA)||(E.uniform1iv(this.addr,dA),Co(sA,dA));for(let PA=0;PA!==MA;++PA)F.setTexture3D(J[PA]||js,dA[PA])}function ag(E,J,F){const sA=this.cache,MA=J.length,dA=ss(F,MA);Yo(sA,dA)||(E.uniform1iv(this.addr,dA),Co(sA,dA));for(let PA=0;PA!==MA;++PA)F.setTextureCube(J[PA]||ls,dA[PA])}function Va(E,J,F){const sA=this.cache,MA=J.length,dA=ss(F,MA);Yo(sA,dA)||(E.uniform1iv(this.addr,dA),Co(sA,dA));for(let PA=0;PA!==MA;++PA)F.setTexture2DArray(J[PA]||Fs,dA[PA])}function RI(E){switch(E){case 5126:return Ot;case 35664:return Bo;case 35665:return va;case 35666:return Na;case 35674:return Ua;case 35675:return ea;case 35676:return La;case 5124:case 35670:return ms;case 35667:case 35671:return eo;case 35668:case 35672:return MI;case 35669:case 35673:return ni;case 5125:return ds;case 36294:return Ba;case 36295:return SI;case 36296:return oo;case 35678:case 36198:case 36298:case 36306:case 35682:return Hs;case 35679:case 36299:case 36307:return vo;case 35680:case 36300:case 36308:case 36293:return ag;case 36289:case 36303:case 36311:case 36292:return Va}}class Ea{constructor(J,F,sA){this.id=J,this.addr=sA,this.cache=[],this.type=F.type,this.setValue=Bs(F.type)}}class CI{constructor(J,F,sA){this.id=J,this.addr=sA,this.cache=[],this.type=F.type,this.size=F.size,this.setValue=RI(F.type)}}class qI{constructor(J){this.id=J,this.seq=[],this.map={}}setValue(J,F,sA){const MA=this.seq;for(let dA=0,PA=MA.length;dA!==PA;++dA){const OA=MA[dA];OA.setValue(J,F[OA.id],sA)}}}const Sr=/(\w+)(\])?(\[|\.)?/g;function xo(E,J){E.seq.push(J),E.map[J.id]=J}function BI(E,J,F){const sA=E.name,MA=sA.length;for(Sr.lastIndex=0;;){const dA=Sr.exec(sA),PA=Sr.lastIndex;let OA=dA[1];const Xe=dA[2]==="]",Le=dA[3];if(Xe&&(OA=OA|0),Le===void 0||Le==="["&&PA+2===MA){xo(F,Le===void 0?new Ea(OA,E,J):new CI(OA,E,J));break}else{let se=F.map[OA];se===void 0&&(se=new qI(OA),xo(F,se)),F=se}}}class zo{constructor(J,F){this.seq=[],this.map={};const sA=J.getProgramParameter(F,J.ACTIVE_UNIFORMS);for(let MA=0;MA<sA;++MA){const dA=J.getActiveUniform(F,MA),PA=J.getUniformLocation(F,dA.name);BI(dA,PA,this)}}setValue(J,F,sA,MA){const dA=this.map[F];dA!==void 0&&dA.setValue(J,sA,MA)}setOptional(J,F,sA){const MA=F[sA];MA!==void 0&&this.setValue(J,sA,MA)}static upload(J,F,sA,MA){for(let dA=0,PA=F.length;dA!==PA;++dA){const OA=F[dA],Xe=sA[OA.id];Xe.needsUpdate!==!1&&OA.setValue(J,Xe.value,MA)}}static seqWithValue(J,F){const sA=[];for(let MA=0,dA=J.length;MA!==dA;++MA){const PA=J[MA];PA.id in F&&sA.push(PA)}return sA}}function Ds(E,J,F){const sA=E.createShader(J);return E.shaderSource(sA,F),E.compileShader(sA),sA}const pg=37297;let mg=0;function kr(E,J){const F=E.split(`
`),sA=[],MA=Math.max(J-6,0),dA=Math.min(J+6,F.length);for(let PA=MA;PA<dA;PA++){const OA=PA+1;sA.push(`${OA===J?">":" "} ${OA}: ${F[PA]}`)}return sA.join(`
`)}const Us=new s.Matrix3;function Ee(E){s.ColorManagement._getMatrix(Us,s.ColorManagement.workingColorSpace,E);const J=`mat3( ${Us.elements.map(F=>F.toFixed(4))} )`;switch(s.ColorManagement.getTransfer(E)){case s.LinearTransfer:return[J,"LinearTransferOETF"];case s.SRGBTransfer:return[J,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",E),[J,"LinearTransferOETF"]}}function Hg(E,J,F){const sA=E.getShaderParameter(J,E.COMPILE_STATUS),MA=E.getShaderInfoLog(J).trim();if(sA&&MA==="")return"";const dA=/ERROR: 0:(\d+)/.exec(MA);if(dA){const PA=parseInt(dA[1]);return F.toUpperCase()+`
`+MA+`
`+kr(E.getShaderSource(J),PA)}else return MA}function Za(E,J){const F=Ee(J);return[`vec4 ${E}( vec4 value ) {`,` return ${F[1]}( vec4( value.rgb * ${F[0]}, value.a ) );`,"}"].join(`
`)}function To(E,J){let F;switch(J){case s.LinearToneMapping:F="Linear";break;case s.ReinhardToneMapping:F="Reinhard";break;case s.CineonToneMapping:F="Cineon";break;case s.ACESFilmicToneMapping:F="ACESFilmic";break;case s.AgXToneMapping:F="AgX";break;case s.NeutralToneMapping:F="Neutral";break;case s.CustomToneMapping:F="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",J),F="Linear"}return"vec3 "+E+"( vec3 color ) { return "+F+"ToneMapping( color ); }"}const ir=new s.Vector3;function Ig(){s.ColorManagement.getLuminanceCoefficients(ir);const E=ir.x.toFixed(4),J=ir.y.toFixed(4),F=ir.z.toFixed(4);return["float luminance( const in vec3 rgb ) {",` const vec3 weights = vec3( ${E}, ${J}, ${F} );`," return dot( weights, rgb );","}"].join(`
`)}function fi(E){return[E.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",E.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(Po).join(`
`)}function Sn(E){const J=[];for(const F in E){const sA=E[F];sA!==!1&&J.push("#define "+F+" "+sA)}return J.join(`
`)}function Wn(E,J){const F={},sA=E.getProgramParameter(J,E.ACTIVE_ATTRIBUTES);for(let MA=0;MA<sA;MA++){const dA=E.getActiveAttrib(J,MA),PA=dA.name;let OA=1;dA.type===E.FLOAT_MAT2&&(OA=2),dA.type===E.FLOAT_MAT3&&(OA=3),dA.type===E.FLOAT_MAT4&&(OA=4),F[PA]={type:dA.type,location:E.getAttribLocation(J,PA),locationSize:OA}}return F}function Po(E){return E!==""}function po(E,J){const F=J.numSpotLightShadows+J.numSpotLightMaps-J.numSpotLightShadowsWithMaps;return E.replace(/NUM_DIR_LIGHTS/g,J.numDirLights).replace(/NUM_SPOT_LIGHTS/g,J.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,J.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,F).replace(/NUM_RECT_AREA_LIGHTS/g,J.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,J.numPointLights).replace(/NUM_HEMI_LIGHTS/g,J.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,J.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,J.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,J.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,J.numPointLightShadows)}function $o(E,J){return E.replace(/NUM_CLIPPING_PLANES/g,J.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,J.numClippingPlanes-J.numClipIntersection)}const Qe=/^[ \t]*#include +<([\w\d./]+)>/gm;function Ls(E){return E.replace(Qe,Xr)}const Oo=new Map;function Xr(E,J){let F=In[J];if(F===void 0){const sA=Oo.get(J);if(sA!==void 0)F=In[sA],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',J,sA);else throw new Error("Can not resolve #include <"+J+">")}return Ls(F)}const Br=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function gs(E){return E.replace(Br,xs)}function xs(E,J,F,sA){let MA="";for(let dA=parseInt(J);dA<parseInt(F);dA++)MA+=sA.replace(/\[\s*i\s*\]/g,"[ "+dA+" ]").replace(/UNROLLED_LOOP_INDEX/g,dA);return MA}function Zn(E){let J=`precision ${E.precision} float;
precision ${E.precision} int;
precision ${E.precision} sampler2D;
precision ${E.precision} samplerCube;
precision ${E.precision} sampler3D;
precision ${E.precision} sampler2DArray;
precision ${E.precision} sampler2DShadow;
precision ${E.precision} samplerCubeShadow;
precision ${E.precision} sampler2DArrayShadow;
precision ${E.precision} isampler2D;
precision ${E.precision} isampler3D;
precision ${E.precision} isamplerCube;
precision ${E.precision} isampler2DArray;
precision ${E.precision} usampler2D;
precision ${E.precision} usampler3D;
precision ${E.precision} usamplerCube;
precision ${E.precision} usampler2DArray;
`;return E.precision==="highp"?J+=`
#define HIGH_PRECISION`:E.precision==="mediump"?J+=`
#define MEDIUM_PRECISION`:E.precision==="lowp"&&(J+=`
#define LOW_PRECISION`),J}function $s(E){let J="SHADOWMAP_TYPE_BASIC";return E.shadowMapType===s.PCFShadowMap?J="SHADOWMAP_TYPE_PCF":E.shadowMapType===s.PCFSoftShadowMap?J="SHADOWMAP_TYPE_PCF_SOFT":E.shadowMapType===s.VSMShadowMap&&(J="SHADOWMAP_TYPE_VSM"),J}function qr(E){let J="ENVMAP_TYPE_CUBE";if(E.envMap)switch(E.envMapMode){case s.CubeReflectionMapping:case s.CubeRefractionMapping:J="ENVMAP_TYPE_CUBE";break;case s.CubeUVReflectionMapping:J="ENVMAP_TYPE_CUBE_UV";break}return J}function _r(E){let J="ENVMAP_MODE_REFLECTION";if(E.envMap)switch(E.envMapMode){case s.CubeRefractionMapping:J="ENVMAP_MODE_REFRACTION";break}return J}function mr(E){let J="ENVMAP_BLENDING_NONE";if(E.envMap)switch(E.combine){case s.MultiplyOperation:J="ENVMAP_BLENDING_MULTIPLY";break;case s.MixOperation:J="ENVMAP_BLENDING_MIX";break;case s.AddOperation:J="ENVMAP_BLENDING_ADD";break}return J}function Dg(E){const J=E.envMapCubeUVHeight;if(J===null)return null;const F=Math.log2(J)-2,sA=1/J;return{texelWidth:1/(3*Math.max(Math.pow(2,F),7*16)),texelHeight:sA,maxMip:F}}function dr(E,J,F,sA){const MA=E.getContext(),dA=F.defines;let PA=F.vertexShader,OA=F.fragmentShader;const Xe=$s(F),Le=qr(F),be=_r(F),se=mr(F),Ge=Dg(F),je=fi(F),ve=Sn(dA),Ve=MA.createProgram();let Ae,FA,At=F.glslVersion?"#version "+F.glslVersion+`
`:"";const Pe=F.numMultiviewViews;F.isRawShaderMaterial?(Ae=["#define SHADER_TYPE "+F.shaderType,"#define SHADER_NAME "+F.shaderName,ve].filter(Po).join(`
`),Ae.length>0&&(Ae+=`
`),FA=["#define SHADER_TYPE "+F.shaderType,"#define SHADER_NAME "+F.shaderName,ve].filter(Po).join(`
`),FA.length>0&&(FA+=`
`)):(Ae=[Zn(F),"#define SHADER_TYPE "+F.shaderType,"#define SHADER_NAME "+F.shaderName,ve,F.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",F.batching?"#define USE_BATCHING":"",F.batchingColor?"#define USE_BATCHING_COLOR":"",F.instancing?"#define USE_INSTANCING":"",F.instancingColor?"#define USE_INSTANCING_COLOR":"",F.instancingMorph?"#define USE_INSTANCING_MORPH":"",F.useFog&&F.fog?"#define USE_FOG":"",F.useFog&&F.fogExp2?"#define FOG_EXP2":"",F.map?"#define USE_MAP":"",F.envMap?"#define USE_ENVMAP":"",F.envMap?"#define "+be:"",F.lightMap?"#define USE_LIGHTMAP":"",F.aoMap?"#define USE_AOMAP":"",F.bumpMap?"#define USE_BUMPMAP":"",F.normalMap?"#define USE_NORMALMAP":"",F.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",F.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",F.displacementMap?"#define USE_DISPLACEMENTMAP":"",F.emissiveMap?"#define USE_EMISSIVEMAP":"",F.anisotropy?"#define USE_ANISOTROPY":"",F.anisotropyMap?"#define USE_ANISOTROPYMAP":"",F.clearcoatMap?"#define USE_CLEARCOATMAP":"",F.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",F.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",F.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",F.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",F.specularMap?"#define USE_SPECULARMAP":"",F.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",F.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",F.roughnessMap?"#define USE_ROUGHNESSMAP":"",F.metalnessMap?"#define USE_METALNESSMAP":"",F.alphaMap?"#define USE_ALPHAMAP":"",F.alphaHash?"#define USE_ALPHAHASH":"",F.transmission?"#define USE_TRANSMISSION":"",F.transmissionMap?"#define USE_TRANSMISSIONMAP":"",F.thicknessMap?"#define USE_THICKNESSMAP":"",F.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",F.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",F.mapUv?"#define MAP_UV "+F.mapUv:"",F.alphaMapUv?"#define ALPHAMAP_UV "+F.alphaMapUv:"",F.lightMapUv?"#define LIGHTMAP_UV "+F.lightMapUv:"",F.aoMapUv?"#define AOMAP_UV "+F.aoMapUv:"",F.emissiveMapUv?"#define EMISSIVEMAP_UV "+F.emissiveMapUv:"",F.bumpMapUv?"#define BUMPMAP_UV "+F.bumpMapUv:"",F.normalMapUv?"#define NORMALMAP_UV "+F.normalMapUv:"",F.displacementMapUv?"#define DISPLACEMENTMAP_UV "+F.displacementMapUv:"",F.metalnessMapUv?"#define METALNESSMAP_UV "+F.metalnessMapUv:"",F.roughnessMapUv?"#define ROUGHNESSMAP_UV "+F.roughnessMapUv:"",F.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+F.anisotropyMapUv:"",F.clearcoatMapUv?"#define CLEARCOATMAP_UV "+F.clearcoatMapUv:"",F.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+F.clearcoatNormalMapUv:"",F.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+F.clearcoatRoughnessMapUv:"",F.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+F.iridescenceMapUv:"",F.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+F.iridescenceThicknessMapUv:"",F.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+F.sheenColorMapUv:"",F.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+F.sheenRoughnessMapUv:"",F.specularMapUv?"#define SPECULARMAP_UV "+F.specularMapUv:"",F.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+F.specularColorMapUv:"",F.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+F.specularIntensityMapUv:"",F.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+F.transmissionMapUv:"",F.thicknessMapUv?"#define THICKNESSMAP_UV "+F.thicknessMapUv:"",F.vertexTangents&&F.flatShading===!1?"#define USE_TANGENT":"",F.vertexColors?"#define USE_COLOR":"",F.vertexAlphas?"#define USE_COLOR_ALPHA":"",F.vertexUv1s?"#define USE_UV1":"",F.vertexUv2s?"#define USE_UV2":"",F.vertexUv3s?"#define USE_UV3":"",F.pointsUvs?"#define USE_POINTS_UV":"",F.flatShading?"#define FLAT_SHADED":"",F.skinning?"#define USE_SKINNING":"",F.morphTargets?"#define USE_MORPHTARGETS":"",F.morphNormals&&F.flatShading===!1?"#define USE_MORPHNORMALS":"",F.morphColors?"#define USE_MORPHCOLORS":"",F.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+F.morphTextureStride:"",F.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+F.morphTargetsCount:"",F.doubleSided?"#define DOUBLE_SIDED":"",F.flipSided?"#define FLIP_SIDED":"",F.shadowMapEnabled?"#define USE_SHADOWMAP":"",F.shadowMapEnabled?"#define "+Xe:"",F.sizeAttenuation?"#define USE_SIZEATTENUATION":"",F.numLightProbes>0?"#define USE_LIGHT_PROBES":"",F.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",F.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",`
`].filter(Po).join(`
`),FA=[Zn(F),"#define SHADER_TYPE "+F.shaderType,"#define SHADER_NAME "+F.shaderName,ve,F.useFog&&F.fog?"#define USE_FOG":"",F.useFog&&F.fogExp2?"#define FOG_EXP2":"",F.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",F.map?"#define USE_MAP":"",F.matcap?"#define USE_MATCAP":"",F.envMap?"#define USE_ENVMAP":"",F.envMap?"#define "+Le:"",F.envMap?"#define "+be:"",F.envMap?"#define "+se:"",Ge?"#define CUBEUV_TEXEL_WIDTH "+Ge.texelWidth:"",Ge?"#define CUBEUV_TEXEL_HEIGHT "+Ge.texelHeight:"",Ge?"#define CUBEUV_MAX_MIP "+Ge.maxMip+".0":"",F.lightMap?"#define USE_LIGHTMAP":"",F.aoMap?"#define USE_AOMAP":"",F.bumpMap?"#define USE_BUMPMAP":"",F.normalMap?"#define USE_NORMALMAP":"",F.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",F.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",F.emissiveMap?"#define USE_EMISSIVEMAP":"",F.anisotropy?"#define USE_ANISOTROPY":"",F.anisotropyMap?"#define USE_ANISOTROPYMAP":"",F.clearcoat?"#define USE_CLEARCOAT":"",F.clearcoatMap?"#define USE_CLEARCOATMAP":"",F.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",F.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",F.dispersion?"#define USE_DISPERSION":"",F.iridescence?"#define USE_IRIDESCENCE":"",F.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",F.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",F.specularMap?"#define USE_SPECULARMAP":"",F.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",F.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",F.roughnessMap?"#define USE_ROUGHNESSMAP":"",F.metalnessMap?"#define USE_METALNESSMAP":"",F.alphaMap?"#define USE_ALPHAMAP":"",F.alphaTest?"#define USE_ALPHATEST":"",F.alphaHash?"#define USE_ALPHAHASH":"",F.sheen?"#define USE_SHEEN":"",F.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",F.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",F.transmission?"#define USE_TRANSMISSION":"",F.transmissionMap?"#define USE_TRANSMISSIONMAP":"",F.thicknessMap?"#define USE_THICKNESSMAP":"",F.vertexTangents&&F.flatShading===!1?"#define USE_TANGENT":"",F.vertexColors||F.instancingColor||F.batchingColor?"#define USE_COLOR":"",F.vertexAlphas?"#define USE_COLOR_ALPHA":"",F.vertexUv1s?"#define USE_UV1":"",F.vertexUv2s?"#define USE_UV2":"",F.vertexUv3s?"#define USE_UV3":"",F.pointsUvs?"#define USE_POINTS_UV":"",F.gradientMap?"#define USE_GRADIENTMAP":"",F.flatShading?"#define FLAT_SHADED":"",F.doubleSided?"#define DOUBLE_SIDED":"",F.flipSided?"#define FLIP_SIDED":"",F.shadowMapEnabled?"#define USE_SHADOWMAP":"",F.shadowMapEnabled?"#define "+Xe:"",F.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",F.numLightProbes>0?"#define USE_LIGHT_PROBES":"",F.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",F.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",F.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",F.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",F.toneMapping!==s.NoToneMapping?"#define TONE_MAPPING":"",F.toneMapping!==s.NoToneMapping?In.tonemapping_pars_fragment:"",F.toneMapping!==s.NoToneMapping?To("toneMapping",F.toneMapping):"",F.dithering?"#define DITHERING":"",F.opaque?"#define OPAQUE":"",In.colorspace_pars_fragment,Za("linearToOutputTexel",F.outputColorSpace),Ig(),F.useDepthPacking?"#define DEPTH_PACKING "+F.depthPacking:"",`
`].filter(Po).join(`
`)),PA=Ls(PA),PA=po(PA,F),PA=$o(PA,F),OA=Ls(OA),OA=po(OA,F),OA=$o(OA,F),PA=gs(PA),OA=gs(OA),F.isRawShaderMaterial!==!0&&(At=`#version 300 es
`,Ae=[je,"#define attribute in","#define varying out","#define texture2D texture"].join(`
`)+`
`+Ae,FA=["#define varying in",F.glslVersion===s.GLSL3?"":"layout(location = 0) out highp vec4 pc_fragColor;",F.glslVersion===s.GLSL3?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(`
`)+`
`+FA,Pe>0&&(Ae=["#extension GL_OVR_multiview : require","layout(num_views = "+Pe+") in;","#define VIEW_ID gl_ViewID_OVR"].join(`
`)+`
`+Ae,Ae=Ae.replace(["uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;"].join(`
`),["uniform mat4 modelViewMatrices["+Pe+"];","uniform mat4 projectionMatrices["+Pe+"];","uniform mat4 viewMatrices["+Pe+"];","uniform mat3 normalMatrices["+Pe+"];","#define modelViewMatrix modelViewMatrices[VIEW_ID]","#define projectionMatrix projectionMatrices[VIEW_ID]","#define viewMatrix viewMatrices[VIEW_ID]","#define normalMatrix normalMatrices[VIEW_ID]"].join(`
`)),FA=["#extension GL_OVR_multiview : require","#define VIEW_ID gl_ViewID_OVR"].join(`
`)+`
`+FA,FA=FA.replace("uniform mat4 viewMatrix;",["uniform mat4 viewMatrices["+Pe+"];","#define viewMatrix viewMatrices[VIEW_ID]"].join(`
`))));const at=At+Ae+PA,et=At+FA+OA,rt=Ds(MA,MA.VERTEX_SHADER,at),Bt=Ds(MA,MA.FRAGMENT_SHADER,et);MA.attachShader(Ve,rt),MA.attachShader(Ve,Bt),F.index0AttributeName!==void 0?MA.bindAttribLocation(Ve,0,F.index0AttributeName):F.morphTargets===!0&&MA.bindAttribLocation(Ve,0,"position"),MA.linkProgram(Ve);function Dt($t){if(E.debug.checkShaderErrors){const ht=MA.getProgramInfoLog(Ve).trim(),mt=MA.getShaderInfoLog(rt).trim(),mi=MA.getShaderInfoLog(Bt).trim();let Jt=!0,Bi=!0;if(MA.getProgramParameter(Ve,MA.LINK_STATUS)===!1)if(Jt=!1,typeof E.debug.onShaderError=="function")E.debug.onShaderError(MA,Ve,rt,Bt);else{const _t=Hg(MA,rt,"vertex"),vt=Hg(MA,Bt,"fragment");console.error("THREE.WebGLProgram: Shader Error "+MA.getError()+" - VALIDATE_STATUS "+MA.getProgramParameter(Ve,MA.VALIDATE_STATUS)+`
Material Name: `+$t.name+`
Material Type: `+$t.type+`
Program Info Log: `+ht+`
`+_t+`
`+vt)}else ht!==""?console.warn("THREE.WebGLProgram: Program Info Log:",ht):(mt===""||mi==="")&&(Bi=!1);Bi&&($t.diagnostics={runnable:Jt,programLog:ht,vertexShader:{log:mt,prefix:Ae},fragmentShader:{log:mi,prefix:FA}})}MA.deleteShader(rt),MA.deleteShader(Bt),ce=new zo(MA,Ve),oe=Wn(MA,Ve)}let ce;this.getUniforms=function(){return ce===void 0&&Dt(this),ce};let oe;this.getAttributes=function(){return oe===void 0&&Dt(this),oe};let it=F.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return it===!1&&(it=MA.getProgramParameter(Ve,pg)),it},this.destroy=function(){sA.releaseStatesOfProgram(this),MA.deleteProgram(Ve),this.program=void 0},this.type=F.shaderType,this.name=F.shaderName,this.id=mg++,this.cacheKey=J,this.usedTimes=1,this.program=Ve,this.vertexShader=rt,this.fragmentShader=Bt,this.numMultiviewViews=Pe,this}let Qo=0;class Nn{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(J){const F=J.vertexShader,sA=J.fragmentShader,MA=this._getShaderStage(F),dA=this._getShaderStage(sA),PA=this._getShaderCacheForMaterial(J);return PA.has(MA)===!1&&(PA.add(MA),MA.usedTimes++),PA.has(dA)===!1&&(PA.add(dA),dA.usedTimes++),this}remove(J){const F=this.materialCache.get(J);for(const sA of F)sA.usedTimes--,sA.usedTimes===0&&this.shaderCache.delete(sA.code);return this.materialCache.delete(J),this}getVertexShaderID(J){return this._getShaderStage(J.vertexShader).id}getFragmentShaderID(J){return this._getShaderStage(J.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(J){const F=this.materialCache;let sA=F.get(J);return sA===void 0&&(sA=new Set,F.set(J,sA)),sA}_getShaderStage(J){const F=this.shaderCache;let sA=F.get(J);return sA===void 0&&(sA=new lo(J),F.set(J,sA)),sA}}class lo{constructor(J){this.id=Qo++,this.code=J,this.usedTimes=0}}function Tr(E,J,F,sA,MA,dA,PA){const OA=new s.Layers,Xe=new Nn,Le=new Set,be=[],se=MA.logarithmicDepthBuffer,Ge=MA.vertexTextures;let je=MA.precision;const ve={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function Ve(ce){return Le.add(ce),ce===0?"uv":`uv${ce}`}function Ae(ce,oe,it,$t,ht){const mt=$t.fog,mi=ht.geometry,Jt=ce.isMeshStandardMaterial?$t.environment:null,Bi=(ce.isMeshStandardMaterial?F:J).get(ce.envMap||Jt),_t=Bi&&Bi.mapping===s.CubeUVReflectionMapping?Bi.image.height:null,vt=ve[ce.type];ce.precision!==null&&(je=MA.getMaxPrecision(ce.precision),je!==ce.precision&&console.warn("THREE.WebGLProgram.getParameters:",ce.precision,"not supported, using",je,"instead."));const yn=mi.morphAttributes.position||mi.morphAttributes.normal||mi.morphAttributes.color,Xn=yn!==void 0?yn.length:0;let Gr=0;mi.morphAttributes.position!==void 0&&(Gr=1),mi.morphAttributes.normal!==void 0&&(Gr=2),mi.morphAttributes.color!==void 0&&(Gr=3);let co,Ar,Fr,an;if(vt){const or=jr[vt];co=or.vertexShader,Ar=or.fragmentShader}else co=ce.vertexShader,Ar=ce.fragmentShader,Xe.update(ce),Fr=Xe.getVertexShaderID(ce),an=Xe.getFragmentShaderID(ce);const li=E.getRenderTarget(),Zt=E.state.buffers.depth.getReversed(),yi=li&&li.isWebGLMultiviewRenderTarget?li.numViews:0,Oi=ht.isInstancedMesh===!0,to=ht.isBatchedMesh===!0,io=!!ce.map,bo=!!ce.matcap,So=!!Bi,he=!!ce.aoMap,fs=!!ce.lightMap,fn=!!ce.bumpMap,ko=!!ce.normalMap,cn=!!ce.displacementMap,nr=!!ce.emissiveMap,wn=!!ce.metalnessMap,qi=!!ce.roughnessMap,Rn=ce.anisotropy>0,Es=ce.clearcoat>0,mo=ce.dispersion>0,Se=ce.iridescence>0,bA=ce.sheen>0,ot=ce.transmission>0,Wt=Rn&&!!ce.anisotropyMap,kt=Es&&!!ce.clearcoatMap,Ht=Es&&!!ce.clearcoatNormalMap,ji=Es&&!!ce.clearcoatRoughnessMap,ci=Se&&!!ce.iridescenceMap,Yi=Se&&!!ce.iridescenceThicknessMap,Jn=bA&&!!ce.sheenColorMap,di=bA&&!!ce.sheenRoughnessMap,Mn=!!ce.specularMap,ro=!!ce.specularColorMap,ke=!!ce.specularIntensityMap,Tt=ot&&!!ce.transmissionMap,ti=ot&&!!ce.thicknessMap,bi=!!ce.gradientMap,Ri=!!ce.alphaMap,$i=ce.alphaTest>0,zn=!!ce.alphaHash,Ni=!!ce.extensions;let Ui=s.NoToneMapping;ce.toneMapped&&(li===null||li.isXRRenderTarget===!0)&&(Ui=E.toneMapping);const on={shaderID:vt,shaderType:ce.type,shaderName:ce.name,vertexShader:co,fragmentShader:Ar,defines:ce.defines,customVertexShaderID:Fr,customFragmentShaderID:an,isRawShaderMaterial:ce.isRawShaderMaterial===!0,glslVersion:ce.glslVersion,precision:je,batching:to,batchingColor:to&&ht._colorsTexture!==null,instancing:Oi,instancingColor:Oi&&ht.instanceColor!==null,instancingMorph:Oi&&ht.morphTexture!==null,supportsVertexTextures:Ge,numMultiviewViews:yi,outputColorSpace:li===null?E.outputColorSpace:li.isXRRenderTarget===!0?li.texture.colorSpace:s.LinearSRGBColorSpace,alphaToCoverage:!!ce.alphaToCoverage,map:io,matcap:bo,envMap:So,envMapMode:So&&Bi.mapping,envMapCubeUVHeight:_t,aoMap:he,lightMap:fs,bumpMap:fn,normalMap:ko,displacementMap:Ge&&cn,emissiveMap:nr,normalMapObjectSpace:ko&&ce.normalMapType===s.ObjectSpaceNormalMap,normalMapTangentSpace:ko&&ce.normalMapType===s.TangentSpaceNormalMap,metalnessMap:wn,roughnessMap:qi,anisotropy:Rn,anisotropyMap:Wt,clearcoat:Es,clearcoatMap:kt,clearcoatNormalMap:Ht,clearcoatRoughnessMap:ji,dispersion:mo,iridescence:Se,iridescenceMap:ci,iridescenceThicknessMap:Yi,sheen:bA,sheenColorMap:Jn,sheenRoughnessMap:di,specularMap:Mn,specularColorMap:ro,specularIntensityMap:ke,transmission:ot,transmissionMap:Tt,thicknessMap:ti,gradientMap:bi,opaque:ce.transparent===!1&&ce.blending===s.NormalBlending&&ce.alphaToCoverage===!1,alphaMap:Ri,alphaTest:$i,alphaHash:zn,combine:ce.combine,mapUv:io&&Ve(ce.map.channel),aoMapUv:he&&Ve(ce.aoMap.channel),lightMapUv:fs&&Ve(ce.lightMap.channel),bumpMapUv:fn&&Ve(ce.bumpMap.channel),normalMapUv:ko&&Ve(ce.normalMap.channel),displacementMapUv:cn&&Ve(ce.displacementMap.channel),emissiveMapUv:nr&&Ve(ce.emissiveMap.channel),metalnessMapUv:wn&&Ve(ce.metalnessMap.channel),roughnessMapUv:qi&&Ve(ce.roughnessMap.channel),anisotropyMapUv:Wt&&Ve(ce.anisotropyMap.channel),clearcoatMapUv:kt&&Ve(ce.clearcoatMap.channel),clearcoatNormalMapUv:Ht&&Ve(ce.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:ji&&Ve(ce.clearcoatRoughnessMap.channel),iridescenceMapUv:ci&&Ve(ce.iridescenceMap.channel),iridescenceThicknessMapUv:Yi&&Ve(ce.iridescenceThicknessMap.channel),sheenColorMapUv:Jn&&Ve(ce.sheenColorMap.channel),sheenRoughnessMapUv:di&&Ve(ce.sheenRoughnessMap.channel),specularMapUv:Mn&&Ve(ce.specularMap.channel),specularColorMapUv:ro&&Ve(ce.specularColorMap.channel),specularIntensityMapUv:ke&&Ve(ce.specularIntensityMap.channel),transmissionMapUv:Tt&&Ve(ce.transmissionMap.channel),thicknessMapUv:ti&&Ve(ce.thicknessMap.channel),alphaMapUv:Ri&&Ve(ce.alphaMap.channel),vertexTangents:!!mi.attributes.tangent&&(ko||Rn),vertexColors:ce.vertexColors,vertexAlphas:ce.vertexColors===!0&&!!mi.attributes.color&&mi.attributes.color.itemSize===4,pointsUvs:ht.isPoints===!0&&!!mi.attributes.uv&&(io||Ri),fog:!!mt,useFog:ce.fog===!0,fogExp2:!!mt&&mt.isFogExp2,flatShading:ce.flatShading===!0,sizeAttenuation:ce.sizeAttenuation===!0,logarithmicDepthBuffer:se,reverseDepthBuffer:Zt,skinning:ht.isSkinnedMesh===!0,morphTargets:mi.morphAttributes.position!==void 0,morphNormals:mi.morphAttributes.normal!==void 0,morphColors:mi.morphAttributes.color!==void 0,morphTargetsCount:Xn,morphTextureStride:Gr,numDirLights:oe.directional.length,numPointLights:oe.point.length,numSpotLights:oe.spot.length,numSpotLightMaps:oe.spotLightMap.length,numRectAreaLights:oe.rectArea.length,numHemiLights:oe.hemi.length,numDirLightShadows:oe.directionalShadowMap.length,numPointLightShadows:oe.pointShadowMap.length,numSpotLightShadows:oe.spotShadowMap.length,numSpotLightShadowsWithMaps:oe.numSpotLightShadowsWithMaps,numLightProbes:oe.numLightProbes,numClippingPlanes:PA.numPlanes,numClipIntersection:PA.numIntersection,dithering:ce.dithering,shadowMapEnabled:E.shadowMap.enabled&&it.length>0,shadowMapType:E.shadowMap.type,toneMapping:Ui,decodeVideoTexture:io&&ce.map.isVideoTexture===!0&&s.ColorManagement.getTransfer(ce.map.colorSpace)===s.SRGBTransfer,decodeVideoTextureEmissive:nr&&ce.emissiveMap.isVideoTexture===!0&&s.ColorManagement.getTransfer(ce.emissiveMap.colorSpace)===s.SRGBTransfer,premultipliedAlpha:ce.premultipliedAlpha,doubleSided:ce.side===s.DoubleSide,flipSided:ce.side===s.BackSide,useDepthPacking:ce.depthPacking>=0,depthPacking:ce.depthPacking||0,index0AttributeName:ce.index0AttributeName,extensionClipCullDistance:Ni&&ce.extensions.clipCullDistance===!0&&sA.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(Ni&&ce.extensions.multiDraw===!0||to)&&sA.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:sA.has("KHR_parallel_shader_compile"),customProgramCacheKey:ce.customProgramCacheKey()};return on.vertexUv1s=Le.has(1),on.vertexUv2s=Le.has(2),on.vertexUv3s=Le.has(3),Le.clear(),on}function FA(ce){const oe=[];if(ce.shaderID?oe.push(ce.shaderID):(oe.push(ce.customVertexShaderID),oe.push(ce.customFragmentShaderID)),ce.defines!==void 0)for(const it in ce.defines)oe.push(it),oe.push(ce.defines[it]);return ce.isRawShaderMaterial===!1&&(At(oe,ce),Pe(oe,ce),oe.push(E.outputColorSpace)),oe.push(ce.customProgramCacheKey),oe.join()}function At(ce,oe){ce.push(oe.precision),ce.push(oe.outputColorSpace),ce.push(oe.envMapMode),ce.push(oe.envMapCubeUVHeight),ce.push(oe.mapUv),ce.push(oe.alphaMapUv),ce.push(oe.lightMapUv),ce.push(oe.aoMapUv),ce.push(oe.bumpMapUv),ce.push(oe.normalMapUv),ce.push(oe.displacementMapUv),ce.push(oe.emissiveMapUv),ce.push(oe.metalnessMapUv),ce.push(oe.roughnessMapUv),ce.push(oe.anisotropyMapUv),ce.push(oe.clearcoatMapUv),ce.push(oe.clearcoatNormalMapUv),ce.push(oe.clearcoatRoughnessMapUv),ce.push(oe.iridescenceMapUv),ce.push(oe.iridescenceThicknessMapUv),ce.push(oe.sheenColorMapUv),ce.push(oe.sheenRoughnessMapUv),ce.push(oe.specularMapUv),ce.push(oe.specularColorMapUv),ce.push(oe.specularIntensityMapUv),ce.push(oe.transmissionMapUv),ce.push(oe.thicknessMapUv),ce.push(oe.combine),ce.push(oe.fogExp2),ce.push(oe.sizeAttenuation),ce.push(oe.morphTargetsCount),ce.push(oe.morphAttributeCount),ce.push(oe.numDirLights),ce.push(oe.numPointLights),ce.push(oe.numSpotLights),ce.push(oe.numSpotLightMaps),ce.push(oe.numHemiLights),ce.push(oe.numRectAreaLights),ce.push(oe.numDirLightShadows),ce.push(oe.numPointLightShadows),ce.push(oe.numSpotLightShadows),ce.push(oe.numSpotLightShadowsWithMaps),ce.push(oe.numLightProbes),ce.push(oe.shadowMapType),ce.push(oe.toneMapping),ce.push(oe.numClippingPlanes),ce.push(oe.numClipIntersection),ce.push(oe.depthPacking)}function Pe(ce,oe){OA.disableAll(),oe.supportsVertexTextures&&OA.enable(0),oe.instancing&&OA.enable(1),oe.instancingColor&&OA.enable(2),oe.instancingMorph&&OA.enable(3),oe.matcap&&OA.enable(4),oe.envMap&&OA.enable(5),oe.normalMapObjectSpace&&OA.enable(6),oe.normalMapTangentSpace&&OA.enable(7),oe.clearcoat&&OA.enable(8),oe.iridescence&&OA.enable(9),oe.alphaTest&&OA.enable(10),oe.vertexColors&&OA.enable(11),oe.vertexAlphas&&OA.enable(12),oe.vertexUv1s&&OA.enable(13),oe.vertexUv2s&&OA.enable(14),oe.vertexUv3s&&OA.enable(15),oe.vertexTangents&&OA.enable(16),oe.anisotropy&&OA.enable(17),oe.alphaHash&&OA.enable(18),oe.batching&&OA.enable(19),oe.dispersion&&OA.enable(20),oe.batchingColor&&OA.enable(21),ce.push(OA.mask),OA.disableAll(),oe.fog&&OA.enable(0),oe.useFog&&OA.enable(1),oe.flatShading&&OA.enable(2),oe.logarithmicDepthBuffer&&OA.enable(3),oe.reverseDepthBuffer&&OA.enable(4),oe.skinning&&OA.enable(5),oe.morphTargets&&OA.enable(6),oe.morphNormals&&OA.enable(7),oe.morphColors&&OA.enable(8),oe.premultipliedAlpha&&OA.enable(9),oe.shadowMapEnabled&&OA.enable(10),oe.doubleSided&&OA.enable(11),oe.flipSided&&OA.enable(12),oe.useDepthPacking&&OA.enable(13),oe.dithering&&OA.enable(14),oe.transmission&&OA.enable(15),oe.sheen&&OA.enable(16),oe.opaque&&OA.enable(17),oe.pointsUvs&&OA.enable(18),oe.decodeVideoTexture&&OA.enable(19),oe.decodeVideoTextureEmissive&&OA.enable(20),oe.alphaToCoverage&&OA.enable(21),oe.numMultiviewViews&&OA.enable(21),ce.push(OA.mask)}function at(ce){const oe=ve[ce.type];let it;if(oe){const $t=jr[oe];it=s.UniformsUtils.clone($t.uniforms)}else it=ce.uniforms;return it}function et(ce,oe){let it;for(let $t=0,ht=be.length;$t<ht;$t++){const mt=be[$t];if(mt.cacheKey===oe){it=mt,++it.usedTimes;break}}return it===void 0&&(it=new dr(E,oe,ce,dA),be.push(it)),it}function rt(ce){if(--ce.usedTimes===0){const oe=be.indexOf(ce);be[oe]=be[be.length-1],be.pop(),ce.destroy()}}function Bt(ce){Xe.remove(ce)}function Dt(){Xe.dispose()}return{getParameters:Ae,getProgramCacheKey:FA,getUniforms:at,acquireProgram:et,releaseProgram:rt,releaseShaderCache:Bt,programs:be,dispose:Dt}}function tn(){let E=new WeakMap;function J(PA){return E.has(PA)}function F(PA){let OA=E.get(PA);return OA===void 0&&(OA={},E.set(PA,OA)),OA}function sA(PA){E.delete(PA)}function MA(PA,OA,Xe){E.get(PA)[OA]=Xe}function dA(){E=new WeakMap}return{has:J,get:F,remove:sA,update:MA,dispose:dA}}function Ag(E,J){return E.groupOrder!==J.groupOrder?E.groupOrder-J.groupOrder:E.renderOrder!==J.renderOrder?E.renderOrder-J.renderOrder:E.material.id!==J.material.id?E.material.id-J.material.id:E.z!==J.z?E.z-J.z:E.id-J.id}function Kr(E,J){return E.groupOrder!==J.groupOrder?E.groupOrder-J.groupOrder:E.renderOrder!==J.renderOrder?E.renderOrder-J.renderOrder:E.z!==J.z?J.z-E.z:E.id-J.id}function Rr(){const E=[];let J=0;const F=[],sA=[],MA=[];function dA(){J=0,F.length=0,sA.length=0,MA.length=0}function PA(se,Ge,je,ve,Ve,Ae){let FA=E[J];return FA===void 0?(FA={id:se.id,object:se,geometry:Ge,material:je,groupOrder:ve,renderOrder:se.renderOrder,z:Ve,group:Ae},E[J]=FA):(FA.id=se.id,FA.object=se,FA.geometry=Ge,FA.material=je,FA.groupOrder=ve,FA.renderOrder=se.renderOrder,FA.z=Ve,FA.group=Ae),J++,FA}function OA(se,Ge,je,ve,Ve,Ae){const FA=PA(se,Ge,je,ve,Ve,Ae);je.transmission>0?sA.push(FA):je.transparent===!0?MA.push(FA):F.push(FA)}function Xe(se,Ge,je,ve,Ve,Ae){const FA=PA(se,Ge,je,ve,Ve,Ae);je.transmission>0?sA.unshift(FA):je.transparent===!0?MA.unshift(FA):F.unshift(FA)}function Le(se,Ge){F.length>1&&F.sort(se||Ag),sA.length>1&&sA.sort(Ge||Kr),MA.length>1&&MA.sort(Ge||Kr)}function be(){for(let se=J,Ge=E.length;se<Ge;se++){const je=E[se];if(je.id===null)break;je.id=null,je.object=null,je.geometry=null,je.material=null,je.group=null}}return{opaque:F,transmissive:sA,transparent:MA,init:dA,push:OA,unshift:Xe,finish:be,sort:Le}}function Cg(){let E=new WeakMap;function J(sA,MA){const dA=E.get(sA);let PA;return dA===void 0?(PA=new Rr,E.set(sA,[PA])):MA>=dA.length?(PA=new Rr,dA.push(PA)):PA=dA[MA],PA}function F(){E=new WeakMap}return{get:J,dispose:F}}function yg(){const E={};return{get:function(J){if(E[J.id]!==void 0)return E[J.id];let F;switch(J.type){case"DirectionalLight":F={direction:new s.Vector3,color:new s.Color};break;case"SpotLight":F={position:new s.Vector3,direction:new s.Vector3,color:new s.Color,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":F={position:new s.Vector3,color:new s.Color,distance:0,decay:0};break;case"HemisphereLight":F={direction:new s.Vector3,skyColor:new s.Color,groundColor:new s.Color};break;case"RectAreaLight":F={color:new s.Color,position:new s.Vector3,halfWidth:new s.Vector3,halfHeight:new s.Vector3};break}return E[J.id]=F,F}}}function Qa(){const E={};return{get:function(J){if(E[J.id]!==void 0)return E[J.id];let F;switch(J.type){case"DirectionalLight":F={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new s.Vector2};break;case"SpotLight":F={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new s.Vector2};break;case"PointLight":F={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new s.Vector2,shadowCameraNear:1,shadowCameraFar:1e3};break}return E[J.id]=F,F}}}let as=0;function ja(E,J){return(J.castShadow?2:0)-(E.castShadow?2:0)+(J.map?1:0)-(E.map?1:0)}function ys(E){const J=new yg,F=Qa(),sA={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let Le=0;Le<9;Le++)sA.probe.push(new s.Vector3);const MA=new s.Vector3,dA=new s.Matrix4,PA=new s.Matrix4;function OA(Le){let be=0,se=0,Ge=0;for(let ce=0;ce<9;ce++)sA.probe[ce].set(0,0,0);let je=0,ve=0,Ve=0,Ae=0,FA=0,At=0,Pe=0,at=0,et=0,rt=0,Bt=0;Le.sort(ja);for(let ce=0,oe=Le.length;ce<oe;ce++){const it=Le[ce],$t=it.color,ht=it.intensity,mt=it.distance,mi=it.shadow&&it.shadow.map?it.shadow.map.texture:null;if(it.isAmbientLight)be+=$t.r*ht,se+=$t.g*ht,Ge+=$t.b*ht;else if(it.isLightProbe){for(let Jt=0;Jt<9;Jt++)sA.probe[Jt].addScaledVector(it.sh.coefficients[Jt],ht);Bt++}else if(it.isDirectionalLight){const Jt=J.get(it);if(Jt.color.copy(it.color).multiplyScalar(it.intensity),it.castShadow){const Bi=it.shadow,_t=F.get(it);_t.shadowIntensity=Bi.intensity,_t.shadowBias=Bi.bias,_t.shadowNormalBias=Bi.normalBias,_t.shadowRadius=Bi.radius,_t.shadowMapSize=Bi.mapSize,sA.directionalShadow[je]=_t,sA.directionalShadowMap[je]=mi,sA.directionalShadowMatrix[je]=it.shadow.matrix,At++}sA.directional[je]=Jt,je++}else if(it.isSpotLight){const Jt=J.get(it);Jt.position.setFromMatrixPosition(it.matrixWorld),Jt.color.copy($t).multiplyScalar(ht),Jt.distance=mt,Jt.coneCos=Math.cos(it.angle),Jt.penumbraCos=Math.cos(it.angle*(1-it.penumbra)),Jt.decay=it.decay,sA.spot[Ve]=Jt;const Bi=it.shadow;if(it.map&&(sA.spotLightMap[et]=it.map,et++,Bi.updateMatrices(it),it.castShadow&&rt++),sA.spotLightMatrix[Ve]=Bi.matrix,it.castShadow){const _t=F.get(it);_t.shadowIntensity=Bi.intensity,_t.shadowBias=Bi.bias,_t.shadowNormalBias=Bi.normalBias,_t.shadowRadius=Bi.radius,_t.shadowMapSize=Bi.mapSize,sA.spotShadow[Ve]=_t,sA.spotShadowMap[Ve]=mi,at++}Ve++}else if(it.isRectAreaLight){const Jt=J.get(it);Jt.color.copy($t).multiplyScalar(ht),Jt.halfWidth.set(it.width*.5,0,0),Jt.halfHeight.set(0,it.height*.5,0),sA.rectArea[Ae]=Jt,Ae++}else if(it.isPointLight){const Jt=J.get(it);if(Jt.color.copy(it.color).multiplyScalar(it.intensity),Jt.distance=it.distance,Jt.decay=it.decay,it.castShadow){const Bi=it.shadow,_t=F.get(it);_t.shadowIntensity=Bi.intensity,_t.shadowBias=Bi.bias,_t.shadowNormalBias=Bi.normalBias,_t.shadowRadius=Bi.radius,_t.shadowMapSize=Bi.mapSize,_t.shadowCameraNear=Bi.camera.near,_t.shadowCameraFar=Bi.camera.far,sA.pointShadow[ve]=_t,sA.pointShadowMap[ve]=mi,sA.pointShadowMatrix[ve]=it.shadow.matrix,Pe++}sA.point[ve]=Jt,ve++}else if(it.isHemisphereLight){const Jt=J.get(it);Jt.skyColor.copy(it.color).multiplyScalar(ht),Jt.groundColor.copy(it.groundColor).multiplyScalar(ht),sA.hemi[FA]=Jt,FA++}}Ae>0&&(E.has("OES_texture_float_linear")===!0?(sA.rectAreaLTC1=ii.LTC_FLOAT_1,sA.rectAreaLTC2=ii.LTC_FLOAT_2):(sA.rectAreaLTC1=ii.LTC_HALF_1,sA.rectAreaLTC2=ii.LTC_HALF_2)),sA.ambient[0]=be,sA.ambient[1]=se,sA.ambient[2]=Ge;const Dt=sA.hash;(Dt.directionalLength!==je||Dt.pointLength!==ve||Dt.spotLength!==Ve||Dt.rectAreaLength!==Ae||Dt.hemiLength!==FA||Dt.numDirectionalShadows!==At||Dt.numPointShadows!==Pe||Dt.numSpotShadows!==at||Dt.numSpotMaps!==et||Dt.numLightProbes!==Bt)&&(sA.directional.length=je,sA.spot.length=Ve,sA.rectArea.length=Ae,sA.point.length=ve,sA.hemi.length=FA,sA.directionalShadow.length=At,sA.directionalShadowMap.length=At,sA.pointShadow.length=Pe,sA.pointShadowMap.length=Pe,sA.spotShadow.length=at,sA.spotShadowMap.length=at,sA.directionalShadowMatrix.length=At,sA.pointShadowMatrix.length=Pe,sA.spotLightMatrix.length=at+et-rt,sA.spotLightMap.length=et,sA.numSpotLightShadowsWithMaps=rt,sA.numLightProbes=Bt,Dt.directionalLength=je,Dt.pointLength=ve,Dt.spotLength=Ve,Dt.rectAreaLength=Ae,Dt.hemiLength=FA,Dt.numDirectionalShadows=At,Dt.numPointShadows=Pe,Dt.numSpotShadows=at,Dt.numSpotMaps=et,Dt.numLightProbes=Bt,sA.version=as++)}function Xe(Le,be){let se=0,Ge=0,je=0,ve=0,Ve=0;const Ae=be.matrixWorldInverse;for(let FA=0,At=Le.length;FA<At;FA++){const Pe=Le[FA];if(Pe.isDirectionalLight){const at=sA.directional[se];at.direction.setFromMatrixPosition(Pe.matrixWorld),MA.setFromMatrixPosition(Pe.target.matrixWorld),at.direction.sub(MA),at.direction.transformDirection(Ae),se++}else if(Pe.isSpotLight){const at=sA.spot[je];at.position.setFromMatrixPosition(Pe.matrixWorld),at.position.applyMatrix4(Ae),at.direction.setFromMatrixPosition(Pe.matrixWorld),MA.setFromMatrixPosition(Pe.target.matrixWorld),at.direction.sub(MA),at.direction.transformDirection(Ae),je++}else if(Pe.isRectAreaLight){const at=sA.rectArea[ve];at.position.setFromMatrixPosition(Pe.matrixWorld),at.position.applyMatrix4(Ae),PA.identity(),dA.copy(Pe.matrixWorld),dA.premultiply(Ae),PA.extractRotation(dA),at.halfWidth.set(Pe.width*.5,0,0),at.halfHeight.set(0,Pe.height*.5,0),at.halfWidth.applyMatrix4(PA),at.halfHeight.applyMatrix4(PA),ve++}else if(Pe.isPointLight){const at=sA.point[Ge];at.position.setFromMatrixPosition(Pe.matrixWorld),at.position.applyMatrix4(Ae),Ge++}else if(Pe.isHemisphereLight){const at=sA.hemi[Ve];at.direction.setFromMatrixPosition(Pe.matrixWorld),at.direction.transformDirection(Ae),Ve++}}}return{setup:OA,setupView:Xe,state:sA}}function Er(E){const J=new ys(E),F=[],sA=[];function MA(be){Le.camera=be,F.length=0,sA.length=0}function dA(be){F.push(be)}function PA(be){sA.push(be)}function OA(){J.setup(F)}function Xe(be){J.setupView(F,be)}const Le={lightsArray:F,shadowsArray:sA,camera:null,lights:J,transmissionRenderTarget:{}};return{init:MA,state:Le,setupLights:OA,setupLightsView:Xe,pushLight:dA,pushShadow:PA}}function eg(E){let J=new WeakMap;function F(MA,dA=0){const PA=J.get(MA);let OA;return PA===void 0?(OA=new Er(E),J.set(MA,[OA])):dA>=PA.length?(OA=new Er(E),PA.push(OA)):OA=PA[dA],OA}function sA(){J=new WeakMap}return{get:F,dispose:sA}}const Eo=`void main() {
gl_Position = vec4( position, 1.0 );
}`,ta=`uniform sampler2D shadow_pass;
uniform vec2 resolution;
uniform float radius;
#include <packing>
void main() {
const float samples = float( VSM_SAMPLES );
float mean = 0.0;
float squared_mean = 0.0;
float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );
float uvStart = samples <= 1.0 ? 0.0 : - 1.0;
for ( float i = 0.0; i < samples; i ++ ) {
float uvOffset = uvStart + i * uvStride;
#ifdef HORIZONTAL_PASS
vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );
mean += distribution.x;
squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;
#else
float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );
mean += depth;
squared_mean += depth * depth;
#endif
}
mean = mean / samples;
squared_mean = squared_mean / samples;
float std_dev = sqrt( squared_mean - mean * mean );
gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );
}`;function As(E,J,F){let sA=new s.Frustum;const MA=new s.Vector2,dA=new s.Vector2,PA=new s.Vector4,OA=new s.MeshDepthMaterial({depthPacking:s.RGBADepthPacking}),Xe=new s.MeshDistanceMaterial,Le={},be=F.maxTextureSize,se={[s.FrontSide]:s.BackSide,[s.BackSide]:s.FrontSide,[s.DoubleSide]:s.DoubleSide},Ge=new s.ShaderMaterial({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new s.Vector2},radius:{value:4}},vertexShader:Eo,fragmentShader:ta}),je=Ge.clone();je.defines.HORIZONTAL_PASS=1;const ve=new s.BufferGeometry;ve.setAttribute("position",new s.BufferAttribute(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const Ve=new s.Mesh(ve,Ge),Ae=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=s.PCFShadowMap;let FA=this.type;this.render=function(rt,Bt,Dt){if(Ae.enabled===!1||Ae.autoUpdate===!1&&Ae.needsUpdate===!1||rt.length===0)return;const ce=E.getRenderTarget(),oe=E.getActiveCubeFace(),it=E.getActiveMipmapLevel(),$t=E.state;$t.setBlending(s.NoBlending),$t.buffers.color.setClear(1,1,1,1),$t.buffers.depth.setTest(!0),$t.setScissorTest(!1);const ht=FA!==s.VSMShadowMap&&this.type===s.VSMShadowMap,mt=FA===s.VSMShadowMap&&this.type!==s.VSMShadowMap;for(let mi=0,Jt=rt.length;mi<Jt;mi++){const Bi=rt[mi],_t=Bi.shadow;if(_t===void 0){console.warn("THREE.WebGLShadowMap:",Bi,"has no shadow.");continue}if(_t.autoUpdate===!1&&_t.needsUpdate===!1)continue;MA.copy(_t.mapSize);const vt=_t.getFrameExtents();if(MA.multiply(vt),dA.copy(_t.mapSize),(MA.x>be||MA.y>be)&&(MA.x>be&&(dA.x=Math.floor(be/vt.x),MA.x=dA.x*vt.x,_t.mapSize.x=dA.x),MA.y>be&&(dA.y=Math.floor(be/vt.y),MA.y=dA.y*vt.y,_t.mapSize.y=dA.y)),_t.map===null||ht===!0||mt===!0){const Xn=this.type!==s.VSMShadowMap?{minFilter:s.NearestFilter,magFilter:s.NearestFilter}:{};_t.map!==null&&_t.map.dispose(),_t.map=new s.WebGLRenderTarget(MA.x,MA.y,Xn),_t.map.texture.name=Bi.name+".shadowMap",_t.camera.updateProjectionMatrix()}E.setRenderTarget(_t.map),E.clear();const yn=_t.getViewportCount();for(let Xn=0;Xn<yn;Xn++){const Gr=_t.getViewport(Xn);PA.set(dA.x*Gr.x,dA.y*Gr.y,dA.x*Gr.z,dA.y*Gr.w),$t.viewport(PA),_t.updateMatrices(Bi,Xn),sA=_t.getFrustum(),at(Bt,Dt,_t.camera,Bi,this.type)}_t.isPointLightShadow!==!0&&this.type===s.VSMShadowMap&&At(_t,Dt),_t.needsUpdate=!1}FA=this.type,Ae.needsUpdate=!1,E.setRenderTarget(ce,oe,it)};function At(rt,Bt){const Dt=J.update(Ve);Ge.defines.VSM_SAMPLES!==rt.blurSamples&&(Ge.defines.VSM_SAMPLES=rt.blurSamples,je.defines.VSM_SAMPLES=rt.blurSamples,Ge.needsUpdate=!0,je.needsUpdate=!0),rt.mapPass===null&&(rt.mapPass=new s.WebGLRenderTarget(MA.x,MA.y)),Ge.uniforms.shadow_pass.value=rt.map.texture,Ge.uniforms.resolution.value=rt.mapSize,Ge.uniforms.radius.value=rt.radius,E.setRenderTarget(rt.mapPass),E.clear(),E.renderBufferDirect(Bt,null,Dt,Ge,Ve,null),je.uniforms.shadow_pass.value=rt.mapPass.texture,je.uniforms.resolution.value=rt.mapSize,je.uniforms.radius.value=rt.radius,E.setRenderTarget(rt.map),E.clear(),E.renderBufferDirect(Bt,null,Dt,je,Ve,null)}function Pe(rt,Bt,Dt,ce){let oe=null;const it=Dt.isPointLight===!0?rt.customDistanceMaterial:rt.customDepthMaterial;if(it!==void 0)oe=it;else if(oe=Dt.isPointLight===!0?Xe:OA,E.localClippingEnabled&&Bt.clipShadows===!0&&Array.isArray(Bt.clippingPlanes)&&Bt.clippingPlanes.length!==0||Bt.displacementMap&&Bt.displacementScale!==0||Bt.alphaMap&&Bt.alphaTest>0||Bt.map&&Bt.alphaTest>0){const $t=oe.uuid,ht=Bt.uuid;let mt=Le[$t];mt===void 0&&(mt={},Le[$t]=mt);let mi=mt[ht];mi===void 0&&(mi=oe.clone(),mt[ht]=mi,Bt.addEventListener("dispose",et)),oe=mi}if(oe.visible=Bt.visible,oe.wireframe=Bt.wireframe,ce===s.VSMShadowMap?oe.side=Bt.shadowSide!==null?Bt.shadowSide:Bt.side:oe.side=Bt.shadowSide!==null?Bt.shadowSide:se[Bt.side],oe.alphaMap=Bt.alphaMap,oe.alphaTest=Bt.alphaTest,oe.map=Bt.map,oe.clipShadows=Bt.clipShadows,oe.clippingPlanes=Bt.clippingPlanes,oe.clipIntersection=Bt.clipIntersection,oe.displacementMap=Bt.displacementMap,oe.displacementScale=Bt.displacementScale,oe.displacementBias=Bt.displacementBias,oe.wireframeLinewidth=Bt.wireframeLinewidth,oe.linewidth=Bt.linewidth,Dt.isPointLight===!0&&oe.isMeshDistanceMaterial===!0){const $t=E.properties.get(oe);$t.light=Dt}return oe}function at(rt,Bt,Dt,ce,oe){if(rt.visible===!1)return;if(rt.layers.test(Bt.layers)&&(rt.isMesh||rt.isLine||rt.isPoints)&&(rt.castShadow||rt.receiveShadow&&oe===s.VSMShadowMap)&&(!rt.frustumCulled||sA.intersectsObject(rt))){rt.modelViewMatrix.multiplyMatrices(Dt.matrixWorldInverse,rt.matrixWorld);const ht=J.update(rt),mt=rt.material;if(Array.isArray(mt)){const mi=ht.groups;for(let Jt=0,Bi=mi.length;Jt<Bi;Jt++){const _t=mi[Jt],vt=mt[_t.materialIndex];if(vt&&vt.visible){const yn=Pe(rt,vt,ce,oe);rt.onBeforeShadow(E,rt,Bt,Dt,ht,yn,_t),E.renderBufferDirect(Dt,null,ht,yn,rt,_t),rt.onAfterShadow(E,rt,Bt,Dt,ht,yn,_t)}}}else if(mt.visible){const mi=Pe(rt,mt,ce,oe);rt.onBeforeShadow(E,rt,Bt,Dt,ht,mi,null),E.renderBufferDirect(Dt,null,ht,mi,rt,null),rt.onAfterShadow(E,rt,Bt,Dt,ht,mi,null)}}const $t=rt.children;for(let ht=0,mt=$t.length;ht<mt;ht++)at($t[ht],Bt,Dt,ce,oe)}function et(rt){rt.target.removeEventListener("dispose",et);for(const Dt in Le){const ce=Le[Dt],oe=rt.target.uuid;oe in ce&&(ce[oe].dispose(),delete ce[oe])}}}const ca={[s.NeverDepth]:s.AlwaysDepth,[s.LessDepth]:s.GreaterDepth,[s.EqualDepth]:s.NotEqualDepth,[s.LessEqualDepth]:s.GreaterEqualDepth,[s.AlwaysDepth]:s.NeverDepth,[s.GreaterDepth]:s.LessDepth,[s.NotEqualDepth]:s.EqualDepth,[s.GreaterEqualDepth]:s.LessEqualDepth};function GI(E,J){function F(){let ke=!1;const Tt=new s.Vector4;let ti=null;const bi=new s.Vector4(0,0,0,0);return{setMask:function(Ri){ti!==Ri&&!ke&&(E.colorMask(Ri,Ri,Ri,Ri),ti=Ri)},setLocked:function(Ri){ke=Ri},setClear:function(Ri,$i,zn,Ni,Ui){Ui===!0&&(Ri*=Ni,$i*=Ni,zn*=Ni),Tt.set(Ri,$i,zn,Ni),bi.equals(Tt)===!1&&(E.clearColor(Ri,$i,zn,Ni),bi.copy(Tt))},reset:function(){ke=!1,ti=null,bi.set(-1,0,0,0)}}}function sA(){let ke=!1,Tt=!1,ti=null,bi=null,Ri=null;return{setReversed:function($i){if(Tt!==$i){const zn=J.get("EXT_clip_control");Tt?zn.clipControlEXT(zn.LOWER_LEFT_EXT,zn.ZERO_TO_ONE_EXT):zn.clipControlEXT(zn.LOWER_LEFT_EXT,zn.NEGATIVE_ONE_TO_ONE_EXT);const Ni=Ri;Ri=null,this.setClear(Ni)}Tt=$i},getReversed:function(){return Tt},setTest:function($i){$i?li(E.DEPTH_TEST):Zt(E.DEPTH_TEST)},setMask:function($i){ti!==$i&&!ke&&(E.depthMask($i),ti=$i)},setFunc:function($i){if(Tt&&($i=ca[$i]),bi!==$i){switch($i){case s.NeverDepth:E.depthFunc(E.NEVER);break;case s.AlwaysDepth:E.depthFunc(E.ALWAYS);break;case s.LessDepth:E.depthFunc(E.LESS);break;case s.LessEqualDepth:E.depthFunc(E.LEQUAL);break;case s.EqualDepth:E.depthFunc(E.EQUAL);break;case s.GreaterEqualDepth:E.depthFunc(E.GEQUAL);break;case s.GreaterDepth:E.depthFunc(E.GREATER);break;case s.NotEqualDepth:E.depthFunc(E.NOTEQUAL);break;default:E.depthFunc(E.LEQUAL)}bi=$i}},setLocked:function($i){ke=$i},setClear:function($i){Ri!==$i&&(Tt&&($i=1-$i),E.clearDepth($i),Ri=$i)},reset:function(){ke=!1,ti=null,bi=null,Ri=null,Tt=!1}}}function MA(){let ke=!1,Tt=null,ti=null,bi=null,Ri=null,$i=null,zn=null,Ni=null,Ui=null;return{setTest:function(on){ke||(on?li(E.STENCIL_TEST):Zt(E.STENCIL_TEST))},setMask:function(on){Tt!==on&&!ke&&(E.stencilMask(on),Tt=on)},setFunc:function(on,or,zr){(ti!==on||bi!==or||Ri!==zr)&&(E.stencilFunc(on,or,zr),ti=on,bi=or,Ri=zr)},setOp:function(on,or,zr){($i!==on||zn!==or||Ni!==zr)&&(E.stencilOp(on,or,zr),$i=on,zn=or,Ni=zr)},setLocked:function(on){ke=on},setClear:function(on){Ui!==on&&(E.clearStencil(on),Ui=on)},reset:function(){ke=!1,Tt=null,ti=null,bi=null,Ri=null,$i=null,zn=null,Ni=null,Ui=null}}}const dA=new F,PA=new sA,OA=new MA,Xe=new WeakMap,Le=new WeakMap;let be={},se={},Ge=new WeakMap,je=[],ve=null,Ve=!1,Ae=null,FA=null,At=null,Pe=null,at=null,et=null,rt=null,Bt=new s.Color(0,0,0),Dt=0,ce=!1,oe=null,it=null,$t=null,ht=null,mt=null;const mi=E.getParameter(E.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let Jt=!1,Bi=0;const _t=E.getParameter(E.VERSION);_t.indexOf("WebGL")!==-1?(Bi=parseFloat(/^WebGL (\d)/.exec(_t)[1]),Jt=Bi>=1):_t.indexOf("OpenGL ES")!==-1&&(Bi=parseFloat(/^OpenGL ES (\d)/.exec(_t)[1]),Jt=Bi>=2);let vt=null,yn={};const Xn=E.getParameter(E.SCISSOR_BOX),Gr=E.getParameter(E.VIEWPORT),co=new s.Vector4().fromArray(Xn),Ar=new s.Vector4().fromArray(Gr);function Fr(ke,Tt,ti,bi){const Ri=new Uint8Array(4),$i=E.createTexture();E.bindTexture(ke,$i),E.texParameteri(ke,E.TEXTURE_MIN_FILTER,E.NEAREST),E.texParameteri(ke,E.TEXTURE_MAG_FILTER,E.NEAREST);for(let zn=0;zn<ti;zn++)ke===E.TEXTURE_3D||ke===E.TEXTURE_2D_ARRAY?E.texImage3D(Tt,0,E.RGBA,1,1,bi,0,E.RGBA,E.UNSIGNED_BYTE,Ri):E.texImage2D(Tt+zn,0,E.RGBA,1,1,0,E.RGBA,E.UNSIGNED_BYTE,Ri);return $i}const an={};an[E.TEXTURE_2D]=Fr(E.TEXTURE_2D,E.TEXTURE_2D,1),an[E.TEXTURE_CUBE_MAP]=Fr(E.TEXTURE_CUBE_MAP,E.TEXTURE_CUBE_MAP_POSITIVE_X,6),an[E.TEXTURE_2D_ARRAY]=Fr(E.TEXTURE_2D_ARRAY,E.TEXTURE_2D_ARRAY,1,1),an[E.TEXTURE_3D]=Fr(E.TEXTURE_3D,E.TEXTURE_3D,1,1),dA.setClear(0,0,0,1),PA.setClear(1),OA.setClear(0),li(E.DEPTH_TEST),PA.setFunc(s.LessEqualDepth),fs(!1),fn(s.CullFaceBack),li(E.CULL_FACE),So(s.NoBlending);function li(ke){be[ke]!==!0&&(E.enable(ke),be[ke]=!0)}function Zt(ke){be[ke]!==!1&&(E.disable(ke),be[ke]=!1)}function yi(ke,Tt){return se[ke]!==Tt?(E.bindFramebuffer(ke,Tt),se[ke]=Tt,ke===E.DRAW_FRAMEBUFFER&&(se[E.FRAMEBUFFER]=Tt),ke===E.FRAMEBUFFER&&(se[E.DRAW_FRAMEBUFFER]=Tt),!0):!1}function Oi(ke,Tt){let ti=je,bi=!1;if(ke){ti=Ge.get(Tt),ti===void 0&&(ti=[],Ge.set(Tt,ti));const Ri=ke.textures;if(ti.length!==Ri.length||ti[0]!==E.COLOR_ATTACHMENT0){for(let $i=0,zn=Ri.length;$i<zn;$i++)ti[$i]=E.COLOR_ATTACHMENT0+$i;ti.length=Ri.length,bi=!0}}else ti[0]!==E.BACK&&(ti[0]=E.BACK,bi=!0);bi&&E.drawBuffers(ti)}function to(ke){return ve!==ke?(E.useProgram(ke),ve=ke,!0):!1}const io={[s.AddEquation]:E.FUNC_ADD,[s.SubtractEquation]:E.FUNC_SUBTRACT,[s.ReverseSubtractEquation]:E.FUNC_REVERSE_SUBTRACT};io[s.MinEquation]=E.MIN,io[s.MaxEquation]=E.MAX;const bo={[s.ZeroFactor]:E.ZERO,[s.OneFactor]:E.ONE,[s.SrcColorFactor]:E.SRC_COLOR,[s.SrcAlphaFactor]:E.SRC_ALPHA,[s.SrcAlphaSaturateFactor]:E.SRC_ALPHA_SATURATE,[s.DstColorFactor]:E.DST_COLOR,[s.DstAlphaFactor]:E.DST_ALPHA,[s.OneMinusSrcColorFactor]:E.ONE_MINUS_SRC_COLOR,[s.OneMinusSrcAlphaFactor]:E.ONE_MINUS_SRC_ALPHA,[s.OneMinusDstColorFactor]:E.ONE_MINUS_DST_COLOR,[s.OneMinusDstAlphaFactor]:E.ONE_MINUS_DST_ALPHA,[s.ConstantColorFactor]:E.CONSTANT_COLOR,[s.OneMinusConstantColorFactor]:E.ONE_MINUS_CONSTANT_COLOR,[s.ConstantAlphaFactor]:E.CONSTANT_ALPHA,[s.OneMinusConstantAlphaFactor]:E.ONE_MINUS_CONSTANT_ALPHA};function So(ke,Tt,ti,bi,Ri,$i,zn,Ni,Ui,on){if(ke===s.NoBlending){Ve===!0&&(Zt(E.BLEND),Ve=!1);return}if(Ve===!1&&(li(E.BLEND),Ve=!0),ke!==s.CustomBlending){if(ke!==Ae||on!==ce){if((FA!==s.AddEquation||at!==s.AddEquation)&&(E.blendEquation(E.FUNC_ADD),FA=s.AddEquation,at=s.AddEquation),on)switch(ke){case s.NormalBlending:E.blendFuncSeparate(E.ONE,E.ONE_MINUS_SRC_ALPHA,E.ONE,E.ONE_MINUS_SRC_ALPHA);break;case s.AdditiveBlending:E.blendFunc(E.ONE,E.ONE);break;case s.SubtractiveBlending:E.blendFuncSeparate(E.ZERO,E.ONE_MINUS_SRC_COLOR,E.ZERO,E.ONE);break;case s.MultiplyBlending:E.blendFuncSeparate(E.ZERO,E.SRC_COLOR,E.ZERO,E.SRC_ALPHA);break;default:console.error("THREE.WebGLState: Invalid blending: ",ke);break}else switch(ke){case s.NormalBlending:E.blendFuncSeparate(E.SRC_ALPHA,E.ONE_MINUS_SRC_ALPHA,E.ONE,E.ONE_MINUS_SRC_ALPHA);break;case s.AdditiveBlending:E.blendFunc(E.SRC_ALPHA,E.ONE);break;case s.SubtractiveBlending:E.blendFuncSeparate(E.ZERO,E.ONE_MINUS_SRC_COLOR,E.ZERO,E.ONE);break;case s.MultiplyBlending:E.blendFunc(E.ZERO,E.SRC_COLOR);break;default:console.error("THREE.WebGLState: Invalid blending: ",ke);break}At=null,Pe=null,et=null,rt=null,Bt.set(0,0,0),Dt=0,Ae=ke,ce=on}return}Ri=Ri||Tt,$i=$i||ti,zn=zn||bi,(Tt!==FA||Ri!==at)&&(E.blendEquationSeparate(io[Tt],io[Ri]),FA=Tt,at=Ri),(ti!==At||bi!==Pe||$i!==et||zn!==rt)&&(E.blendFuncSeparate(bo[ti],bo[bi],bo[$i],bo[zn]),At=ti,Pe=bi,et=$i,rt=zn),(Ni.equals(Bt)===!1||Ui!==Dt)&&(E.blendColor(Ni.r,Ni.g,Ni.b,Ui),Bt.copy(Ni),Dt=Ui),Ae=ke,ce=!1}function he(ke,Tt){ke.side===s.DoubleSide?Zt(E.CULL_FACE):li(E.CULL_FACE);let ti=ke.side===s.BackSide;Tt&&(ti=!ti),fs(ti),ke.blending===s.NormalBlending&&ke.transparent===!1?So(s.NoBlending):So(ke.blending,ke.blendEquation,ke.blendSrc,ke.blendDst,ke.blendEquationAlpha,ke.blendSrcAlpha,ke.blendDstAlpha,ke.blendColor,ke.blendAlpha,ke.premultipliedAlpha),PA.setFunc(ke.depthFunc),PA.setTest(ke.depthTest),PA.setMask(ke.depthWrite),dA.setMask(ke.colorWrite);const bi=ke.stencilWrite;OA.setTest(bi),bi&&(OA.setMask(ke.stencilWriteMask),OA.setFunc(ke.stencilFunc,ke.stencilRef,ke.stencilFuncMask),OA.setOp(ke.stencilFail,ke.stencilZFail,ke.stencilZPass)),cn(ke.polygonOffset,ke.polygonOffsetFactor,ke.polygonOffsetUnits),ke.alphaToCoverage===!0?li(E.SAMPLE_ALPHA_TO_COVERAGE):Zt(E.SAMPLE_ALPHA_TO_COVERAGE)}function fs(ke){oe!==ke&&(ke?E.frontFace(E.CW):E.frontFace(E.CCW),oe=ke)}function fn(ke){ke!==s.CullFaceNone?(li(E.CULL_FACE),ke!==it&&(ke===s.CullFaceBack?E.cullFace(E.BACK):ke===s.CullFaceFront?E.cullFace(E.FRONT):E.cullFace(E.FRONT_AND_BACK))):Zt(E.CULL_FACE),it=ke}function ko(ke){ke!==$t&&(Jt&&E.lineWidth(ke),$t=ke)}function cn(ke,Tt,ti){ke?(li(E.POLYGON_OFFSET_FILL),(ht!==Tt||mt!==ti)&&(E.polygonOffset(Tt,ti),ht=Tt,mt=ti)):Zt(E.POLYGON_OFFSET_FILL)}function nr(ke){ke?li(E.SCISSOR_TEST):Zt(E.SCISSOR_TEST)}function wn(ke){ke===void 0&&(ke=E.TEXTURE0+mi-1),vt!==ke&&(E.activeTexture(ke),vt=ke)}function qi(ke,Tt,ti){ti===void 0&&(vt===null?ti=E.TEXTURE0+mi-1:ti=vt);let bi=yn[ti];bi===void 0&&(bi={type:void 0,texture:void 0},yn[ti]=bi),(bi.type!==ke||bi.texture!==Tt)&&(vt!==ti&&(E.activeTexture(ti),vt=ti),E.bindTexture(ke,Tt||an[ke]),bi.type=ke,bi.texture=Tt)}function Rn(){const ke=yn[vt];ke!==void 0&&ke.type!==void 0&&(E.bindTexture(ke.type,null),ke.type=void 0,ke.texture=void 0)}function Es(){try{E.compressedTexImage2D.apply(E,arguments)}catch(ke){console.error("THREE.WebGLState:",ke)}}function mo(){try{E.compressedTexImage3D.apply(E,arguments)}catch(ke){console.error("THREE.WebGLState:",ke)}}function Se(){try{E.texSubImage2D.apply(E,arguments)}catch(ke){console.error("THREE.WebGLState:",ke)}}function bA(){try{E.texSubImage3D.apply(E,arguments)}catch(ke){console.error("THREE.WebGLState:",ke)}}function ot(){try{E.compressedTexSubImage2D.apply(E,arguments)}catch(ke){console.error("THREE.WebGLState:",ke)}}function Wt(){try{E.compressedTexSubImage3D.apply(E,arguments)}catch(ke){console.error("THREE.WebGLState:",ke)}}function kt(){try{E.texStorage2D.apply(E,arguments)}catch(ke){console.error("THREE.WebGLState:",ke)}}function Ht(){try{E.texStorage3D.apply(E,arguments)}catch(ke){console.error("THREE.WebGLState:",ke)}}function ji(){try{E.texImage2D.apply(E,arguments)}catch(ke){console.error("THREE.WebGLState:",ke)}}function ci(){try{E.texImage3D.apply(E,arguments)}catch(ke){console.error("THREE.WebGLState:",ke)}}function Yi(ke){co.equals(ke)===!1&&(E.scissor(ke.x,ke.y,ke.z,ke.w),co.copy(ke))}function Jn(ke){Ar.equals(ke)===!1&&(E.viewport(ke.x,ke.y,ke.z,ke.w),Ar.copy(ke))}function di(ke,Tt){let ti=Le.get(Tt);ti===void 0&&(ti=new WeakMap,Le.set(Tt,ti));let bi=ti.get(ke);bi===void 0&&(bi=E.getUniformBlockIndex(Tt,ke.name),ti.set(ke,bi))}function Mn(ke,Tt){const bi=Le.get(Tt).get(ke);Xe.get(Tt)!==bi&&(E.uniformBlockBinding(Tt,bi,ke.__bindingPointIndex),Xe.set(Tt,bi))}function ro(){E.disable(E.BLEND),E.disable(E.CULL_FACE),E.disable(E.DEPTH_TEST),E.disable(E.POLYGON_OFFSET_FILL),E.disable(E.SCISSOR_TEST),E.disable(E.STENCIL_TEST),E.disable(E.SAMPLE_ALPHA_TO_COVERAGE),E.blendEquation(E.FUNC_ADD),E.blendFunc(E.ONE,E.ZERO),E.blendFuncSeparate(E.ONE,E.ZERO,E.ONE,E.ZERO),E.blendColor(0,0,0,0),E.colorMask(!0,!0,!0,!0),E.clearColor(0,0,0,0),E.depthMask(!0),E.depthFunc(E.LESS),PA.setReversed(!1),E.clearDepth(1),E.stencilMask(4294967295),E.stencilFunc(E.ALWAYS,0,4294967295),E.stencilOp(E.KEEP,E.KEEP,E.KEEP),E.clearStencil(0),E.cullFace(E.BACK),E.frontFace(E.CCW),E.polygonOffset(0,0),E.activeTexture(E.TEXTURE0),E.bindFramebuffer(E.FRAMEBUFFER,null),E.bindFramebuffer(E.DRAW_FRAMEBUFFER,null),E.bindFramebuffer(E.READ_FRAMEBUFFER,null),E.useProgram(null),E.lineWidth(1),E.scissor(0,0,E.canvas.width,E.canvas.height),E.viewport(0,0,E.canvas.width,E.canvas.height),be={},vt=null,yn={},se={},Ge=new WeakMap,je=[],ve=null,Ve=!1,Ae=null,FA=null,At=null,Pe=null,at=null,et=null,rt=null,Bt=new s.Color(0,0,0),Dt=0,ce=!1,oe=null,it=null,$t=null,ht=null,mt=null,co.set(0,0,E.canvas.width,E.canvas.height),Ar.set(0,0,E.canvas.width,E.canvas.height),dA.reset(),PA.reset(),OA.reset()}return{buffers:{color:dA,depth:PA,stencil:OA},enable:li,disable:Zt,bindFramebuffer:yi,drawBuffers:Oi,useProgram:to,setBlending:So,setMaterial:he,setFlipSided:fs,setCullFace:fn,setLineWidth:ko,setPolygonOffset:cn,setScissorTest:nr,activeTexture:wn,bindTexture:qi,unbindTexture:Rn,compressedTexImage2D:Es,compressedTexImage3D:mo,texImage2D:ji,texImage3D:ci,updateUBOMapping:di,uniformBlockBinding:Mn,texStorage2D:kt,texStorage3D:Ht,texSubImage2D:Se,texSubImage3D:bA,compressedTexSubImage2D:ot,compressedTexSubImage3D:Wt,scissor:Yi,viewport:Jn,reset:ro}}function bs(E,J,F,sA,MA,dA,PA){const OA=J.has("WEBGL_multisampled_render_to_texture")?J.get("WEBGL_multisampled_render_to_texture"):null,Xe=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),Le=J.has("OCULUS_multiview")?J.get("OCULUS_multiview"):null,be=new s.Vector2,se=new WeakMap;let Ge;const je=new WeakMap;let ve=[],Ve=!1,Ae=!1;try{Ae=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function FA(Se,bA){return Ae?new OffscreenCanvas(Se,bA):(0,s.createElementNS)("canvas")}function At(Se,bA,ot){let Wt=1;const kt=mo(Se);if((kt.width>ot||kt.height>ot)&&(Wt=ot/Math.max(kt.width,kt.height)),Wt<1)if(typeof HTMLImageElement<"u"&&Se instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&Se instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&Se instanceof ImageBitmap||typeof VideoFrame<"u"&&Se instanceof VideoFrame){const Ht=Math.floor(Wt*kt.width),ji=Math.floor(Wt*kt.height);Ge===void 0&&(Ge=FA(Ht,ji));const ci=bA?FA(Ht,ji):Ge;return ci.width=Ht,ci.height=ji,ci.getContext("2d").drawImage(Se,0,0,Ht,ji),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+kt.width+"x"+kt.height+") to ("+Ht+"x"+ji+")."),ci}else return"data"in Se&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+kt.width+"x"+kt.height+")."),Se;return Se}function Pe(Se){return Se.generateMipmaps}function at(Se){E.generateMipmap(Se)}function et(Se){return Se.isWebGLCubeRenderTarget?E.TEXTURE_CUBE_MAP:Se.isWebGL3DRenderTarget?E.TEXTURE_3D:Se.isWebGLArrayRenderTarget||Se.isCompressedArrayTexture?E.TEXTURE_2D_ARRAY:E.TEXTURE_2D}function rt(Se,bA,ot,Wt,kt=!1){if(Se!==null){if(E[Se]!==void 0)return E[Se];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+Se+"'")}let Ht=bA;if(bA===E.RED&&(ot===E.FLOAT&&(Ht=E.R32F),ot===E.HALF_FLOAT&&(Ht=E.R16F),ot===E.UNSIGNED_BYTE&&(Ht=E.R8)),bA===E.RED_INTEGER&&(ot===E.UNSIGNED_BYTE&&(Ht=E.R8UI),ot===E.UNSIGNED_SHORT&&(Ht=E.R16UI),ot===E.UNSIGNED_INT&&(Ht=E.R32UI),ot===E.BYTE&&(Ht=E.R8I),ot===E.SHORT&&(Ht=E.R16I),ot===E.INT&&(Ht=E.R32I)),bA===E.RG&&(ot===E.FLOAT&&(Ht=E.RG32F),ot===E.HALF_FLOAT&&(Ht=E.RG16F),ot===E.UNSIGNED_BYTE&&(Ht=E.RG8)),bA===E.RG_INTEGER&&(ot===E.UNSIGNED_BYTE&&(Ht=E.RG8UI),ot===E.UNSIGNED_SHORT&&(Ht=E.RG16UI),ot===E.UNSIGNED_INT&&(Ht=E.RG32UI),ot===E.BYTE&&(Ht=E.RG8I),ot===E.SHORT&&(Ht=E.RG16I),ot===E.INT&&(Ht=E.RG32I)),bA===E.RGB_INTEGER&&(ot===E.UNSIGNED_BYTE&&(Ht=E.RGB8UI),ot===E.UNSIGNED_SHORT&&(Ht=E.RGB16UI),ot===E.UNSIGNED_INT&&(Ht=E.RGB32UI),ot===E.BYTE&&(Ht=E.RGB8I),ot===E.SHORT&&(Ht=E.RGB16I),ot===E.INT&&(Ht=E.RGB32I)),bA===E.RGBA_INTEGER&&(ot===E.UNSIGNED_BYTE&&(Ht=E.RGBA8UI),ot===E.UNSIGNED_SHORT&&(Ht=E.RGBA16UI),ot===E.UNSIGNED_INT&&(Ht=E.RGBA32UI),ot===E.BYTE&&(Ht=E.RGBA8I),ot===E.SHORT&&(Ht=E.RGBA16I),ot===E.INT&&(Ht=E.RGBA32I)),bA===E.RGB&&ot===E.UNSIGNED_INT_5_9_9_9_REV&&(Ht=E.RGB9_E5),bA===E.RGBA){const ji=kt?s.LinearTransfer:s.ColorManagement.getTransfer(Wt);ot===E.FLOAT&&(Ht=E.RGBA32F),ot===E.HALF_FLOAT&&(Ht=E.RGBA16F),ot===E.UNSIGNED_BYTE&&(Ht=ji===s.SRGBTransfer?E.SRGB8_ALPHA8:E.RGBA8),ot===E.UNSIGNED_SHORT_4_4_4_4&&(Ht=E.RGBA4),ot===E.UNSIGNED_SHORT_5_5_5_1&&(Ht=E.RGB5_A1)}return(Ht===E.R16F||Ht===E.R32F||Ht===E.RG16F||Ht===E.RG32F||Ht===E.RGBA16F||Ht===E.RGBA32F)&&J.get("EXT_color_buffer_float"),Ht}function Bt(Se,bA){let ot;return Se?bA===null||bA===s.UnsignedIntType||bA===s.UnsignedInt248Type?ot=E.DEPTH24_STENCIL8:bA===s.FloatType?ot=E.DEPTH32F_STENCIL8:bA===s.UnsignedShortType&&(ot=E.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):bA===null||bA===s.UnsignedIntType||bA===s.UnsignedInt248Type?ot=E.DEPTH_COMPONENT24:bA===s.FloatType?ot=E.DEPTH_COMPONENT32F:bA===s.UnsignedShortType&&(ot=E.DEPTH_COMPONENT16),ot}function Dt(Se,bA){return Pe(Se)===!0||Se.isFramebufferTexture&&Se.minFilter!==s.NearestFilter&&Se.minFilter!==s.LinearFilter?Math.log2(Math.max(bA.width,bA.height))+1:Se.mipmaps!==void 0&&Se.mipmaps.length>0?Se.mipmaps.length:Se.isCompressedTexture&&Array.isArray(Se.image)?bA.mipmaps.length:1}function ce(Se){const bA=Se.target;bA.removeEventListener("dispose",ce),it(bA),bA.isVideoTexture&&se.delete(bA)}function oe(Se){const bA=Se.target;bA.removeEventListener("dispose",oe),ht(bA)}function it(Se){const bA=sA.get(Se);if(bA.__webglInit===void 0)return;const ot=Se.source,Wt=je.get(ot);if(Wt){const kt=Wt[bA.__cacheKey];kt.usedTimes--,kt.usedTimes===0&&$t(Se),Object.keys(Wt).length===0&&je.delete(ot)}sA.remove(Se)}function $t(Se){const bA=sA.get(Se);E.deleteTexture(bA.__webglTexture);const ot=Se.source,Wt=je.get(ot);delete Wt[bA.__cacheKey],PA.memory.textures--}function ht(Se){const bA=sA.get(Se);if(Se.depthTexture&&(Se.depthTexture.dispose(),sA.remove(Se.depthTexture)),Se.isWebGLCubeRenderTarget)for(let Wt=0;Wt<6;Wt++){if(Array.isArray(bA.__webglFramebuffer[Wt]))for(let kt=0;kt<bA.__webglFramebuffer[Wt].length;kt++)E.deleteFramebuffer(bA.__webglFramebuffer[Wt][kt]);else E.deleteFramebuffer(bA.__webglFramebuffer[Wt]);bA.__webglDepthbuffer&&E.deleteRenderbuffer(bA.__webglDepthbuffer[Wt])}else{if(Array.isArray(bA.__webglFramebuffer))for(let Wt=0;Wt<bA.__webglFramebuffer.length;Wt++)E.deleteFramebuffer(bA.__webglFramebuffer[Wt]);else E.deleteFramebuffer(bA.__webglFramebuffer);if(bA.__webglDepthbuffer&&E.deleteRenderbuffer(bA.__webglDepthbuffer),bA.__webglMultisampledFramebuffer&&E.deleteFramebuffer(bA.__webglMultisampledFramebuffer),bA.__webglColorRenderbuffer)for(let Wt=0;Wt<bA.__webglColorRenderbuffer.length;Wt++)bA.__webglColorRenderbuffer[Wt]&&E.deleteRenderbuffer(bA.__webglColorRenderbuffer[Wt]);bA.__webglDepthRenderbuffer&&E.deleteRenderbuffer(bA.__webglDepthRenderbuffer)}const ot=Se.textures;for(let Wt=0,kt=ot.length;Wt<kt;Wt++){const Ht=sA.get(ot[Wt]);Ht.__webglTexture&&(E.deleteTexture(Ht.__webglTexture),PA.memory.textures--),sA.remove(ot[Wt])}sA.remove(Se)}let mt=0;function mi(){mt=0}function Jt(){const Se=mt;return Se>=MA.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+Se+" texture units while this GPU supports only "+MA.maxTextures),mt+=1,Se}function Bi(Se){const bA=[];return bA.push(Se.wrapS),bA.push(Se.wrapT),bA.push(Se.wrapR||0),bA.push(Se.magFilter),bA.push(Se.minFilter),bA.push(Se.anisotropy),bA.push(Se.internalFormat),bA.push(Se.format),bA.push(Se.type),bA.push(Se.generateMipmaps),bA.push(Se.premultiplyAlpha),bA.push(Se.flipY),bA.push(Se.unpackAlignment),bA.push(Se.colorSpace),bA.join()}function _t(Se,bA){const ot=sA.get(Se);if(Se.isVideoTexture&&Rn(Se),Se.isRenderTargetTexture===!1&&Se.version>0&&ot.__version!==Se.version){const Wt=Se.image;if(Wt===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(Wt.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else if(yi(ot,Se,bA))return}F.bindTexture(E.TEXTURE_2D,ot.__webglTexture,E.TEXTURE0+bA)}function vt(Se,bA){const ot=sA.get(Se);if(Se.version>0&&ot.__version!==Se.version){yi(ot,Se,bA);return}F.bindTexture(E.TEXTURE_2D_ARRAY,ot.__webglTexture,E.TEXTURE0+bA)}function yn(Se,bA){const ot=sA.get(Se);if(Se.version>0&&ot.__version!==Se.version){yi(ot,Se,bA);return}F.bindTexture(E.TEXTURE_3D,ot.__webglTexture,E.TEXTURE0+bA)}function Xn(Se,bA){const ot=sA.get(Se);if(Se.version>0&&ot.__version!==Se.version){Oi(ot,Se,bA);return}F.bindTexture(E.TEXTURE_CUBE_MAP,ot.__webglTexture,E.TEXTURE0+bA)}const Gr={[s.RepeatWrapping]:E.REPEAT,[s.ClampToEdgeWrapping]:E.CLAMP_TO_EDGE,[s.MirroredRepeatWrapping]:E.MIRRORED_REPEAT},co={[s.NearestFilter]:E.NEAREST,[s.NearestMipmapNearestFilter]:E.NEAREST_MIPMAP_NEAREST,[s.NearestMipmapLinearFilter]:E.NEAREST_MIPMAP_LINEAR,[s.LinearFilter]:E.LINEAR,[s.LinearMipmapNearestFilter]:E.LINEAR_MIPMAP_NEAREST,[s.LinearMipmapLinearFilter]:E.LINEAR_MIPMAP_LINEAR},Ar={[s.NeverCompare]:E.NEVER,[s.AlwaysCompare]:E.ALWAYS,[s.LessCompare]:E.LESS,[s.LessEqualCompare]:E.LEQUAL,[s.EqualCompare]:E.EQUAL,[s.GreaterEqualCompare]:E.GEQUAL,[s.GreaterCompare]:E.GREATER,[s.NotEqualCompare]:E.NOTEQUAL};function Fr(Se,bA){if(bA.type===s.FloatType&&J.has("OES_texture_float_linear")===!1&&(bA.magFilter===s.LinearFilter||bA.magFilter===s.LinearMipmapNearestFilter||bA.magFilter===s.NearestMipmapLinearFilter||bA.magFilter===s.LinearMipmapLinearFilter||bA.minFilter===s.LinearFilter||bA.minFilter===s.LinearMipmapNearestFilter||bA.minFilter===s.NearestMipmapLinearFilter||bA.minFilter===s.LinearMipmapLinearFilter)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),E.texParameteri(Se,E.TEXTURE_WRAP_S,Gr[bA.wrapS]),E.texParameteri(Se,E.TEXTURE_WRAP_T,Gr[bA.wrapT]),(Se===E.TEXTURE_3D||Se===E.TEXTURE_2D_ARRAY)&&E.texParameteri(Se,E.TEXTURE_WRAP_R,Gr[bA.wrapR]),E.texParameteri(Se,E.TEXTURE_MAG_FILTER,co[bA.magFilter]),E.texParameteri(Se,E.TEXTURE_MIN_FILTER,co[bA.minFilter]),bA.compareFunction&&(E.texParameteri(Se,E.TEXTURE_COMPARE_MODE,E.COMPARE_REF_TO_TEXTURE),E.texParameteri(Se,E.TEXTURE_COMPARE_FUNC,Ar[bA.compareFunction])),J.has("EXT_texture_filter_anisotropic")===!0){if(bA.magFilter===s.NearestFilter||bA.minFilter!==s.NearestMipmapLinearFilter&&bA.minFilter!==s.LinearMipmapLinearFilter||bA.type===s.FloatType&&J.has("OES_texture_float_linear")===!1)return;if(bA.anisotropy>1||sA.get(bA).__currentAnisotropy){const ot=J.get("EXT_texture_filter_anisotropic");E.texParameterf(Se,ot.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(bA.anisotropy,MA.getMaxAnisotropy())),sA.get(bA).__currentAnisotropy=bA.anisotropy}}}function an(Se,bA){let ot=!1;Se.__webglInit===void 0&&(Se.__webglInit=!0,bA.addEventListener("dispose",ce));const Wt=bA.source;let kt=je.get(Wt);kt===void 0&&(kt={},je.set(Wt,kt));const Ht=Bi(bA);if(Ht!==Se.__cacheKey){kt[Ht]===void 0&&(kt[Ht]={texture:E.createTexture(),usedTimes:0},PA.memory.textures++,ot=!0),kt[Ht].usedTimes++;const ji=kt[Se.__cacheKey];ji!==void 0&&(kt[Se.__cacheKey].usedTimes--,ji.usedTimes===0&&$t(bA)),Se.__cacheKey=Ht,Se.__webglTexture=kt[Ht].texture}return ot}function li(Se){Ve=Se}function Zt(){const Se=Ve;Ve=!1;for(const bA of ve)yi(bA.textureProperties,bA.texture,bA.slot),bA.texture.isPendingDeferredUpload=!1;ve=[],Ve=Se}function yi(Se,bA,ot){if(Ve)return bA.isPendingDeferredUpload||(bA.isPendingDeferredUpload=!0,ve.push({textureProperties:Se,texture:bA,slot:ot})),!1;let Wt=E.TEXTURE_2D;(bA.isDataArrayTexture||bA.isCompressedArrayTexture)&&(Wt=E.TEXTURE_2D_ARRAY),bA.isData3DTexture&&(Wt=E.TEXTURE_3D);const kt=an(Se,bA),Ht=bA.source;F.bindTexture(Wt,Se.__webglTexture,E.TEXTURE0+ot);const ji=sA.get(Ht);if(Ht.version!==ji.__version||kt===!0){F.activeTexture(E.TEXTURE0+ot);const ci=s.ColorManagement.getPrimaries(s.ColorManagement.workingColorSpace),Yi=bA.colorSpace===s.NoColorSpace?null:s.ColorManagement.getPrimaries(bA.colorSpace),Jn=bA.colorSpace===s.NoColorSpace||ci===Yi?E.NONE:E.BROWSER_DEFAULT_WEBGL;E.pixelStorei(E.UNPACK_FLIP_Y_WEBGL,bA.flipY),E.pixelStorei(E.UNPACK_PREMULTIPLY_ALPHA_WEBGL,bA.premultiplyAlpha),E.pixelStorei(E.UNPACK_ALIGNMENT,bA.unpackAlignment),E.pixelStorei(E.UNPACK_COLORSPACE_CONVERSION_WEBGL,Jn);let di=At(bA.image,!1,MA.maxTextureSize);di=Es(bA,di);const Mn=dA.convert(bA.format,bA.colorSpace),ro=dA.convert(bA.type);let ke=rt(bA.internalFormat,Mn,ro,bA.colorSpace,bA.isVideoTexture);Fr(Wt,bA);let Tt;const ti=bA.mipmaps,bi=bA.isVideoTexture!==!0,Ri=ji.__version===void 0||kt===!0,$i=Ht.dataReady,zn=Dt(bA,di);if(bA.isDepthTexture)ke=Bt(bA.format===s.DepthStencilFormat,bA.type),Ri&&(bi?F.texStorage2D(E.TEXTURE_2D,1,ke,di.width,di.height):F.texImage2D(E.TEXTURE_2D,0,ke,di.width,di.height,0,Mn,ro,null));else if(bA.isDataTexture)if(ti.length>0){bi&&Ri&&F.texStorage2D(E.TEXTURE_2D,zn,ke,ti[0].width,ti[0].height);for(let Ni=0,Ui=ti.length;Ni<Ui;Ni++)Tt=ti[Ni],bi?$i&&F.texSubImage2D(E.TEXTURE_2D,Ni,0,0,Tt.width,Tt.height,Mn,ro,Tt.data):F.texImage2D(E.TEXTURE_2D,Ni,ke,Tt.width,Tt.height,0,Mn,ro,Tt.data);bA.generateMipmaps=!1}else bi?(Ri&&F.texStorage2D(E.TEXTURE_2D,zn,ke,di.width,di.height),$i&&F.texSubImage2D(E.TEXTURE_2D,0,0,0,di.width,di.height,Mn,ro,di.data)):F.texImage2D(E.TEXTURE_2D,0,ke,di.width,di.height,0,Mn,ro,di.data);else if(bA.isCompressedTexture)if(bA.isCompressedArrayTexture){bi&&Ri&&F.texStorage3D(E.TEXTURE_2D_ARRAY,zn,ke,ti[0].width,ti[0].height,di.depth);for(let Ni=0,Ui=ti.length;Ni<Ui;Ni++)if(Tt=ti[Ni],bA.format!==s.RGBAFormat)if(Mn!==null)if(bi){if($i)if(bA.layerUpdates.size>0){const on=(0,s.getByteLength)(Tt.width,Tt.height,bA.format,bA.type);for(const or of bA.layerUpdates){const zr=Tt.data.subarray(or*on/Tt.data.BYTES_PER_ELEMENT,(or+1)*on/Tt.data.BYTES_PER_ELEMENT);F.compressedTexSubImage3D(E.TEXTURE_2D_ARRAY,Ni,0,0,or,Tt.width,Tt.height,1,Mn,zr)}bA.clearLayerUpdates()}else F.compressedTexSubImage3D(E.TEXTURE_2D_ARRAY,Ni,0,0,0,Tt.width,Tt.height,di.depth,Mn,Tt.data)}else F.compressedTexImage3D(E.TEXTURE_2D_ARRAY,Ni,ke,Tt.width,Tt.height,di.depth,0,Tt.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else bi?$i&&F.texSubImage3D(E.TEXTURE_2D_ARRAY,Ni,0,0,0,Tt.width,Tt.height,di.depth,Mn,ro,Tt.data):F.texImage3D(E.TEXTURE_2D_ARRAY,Ni,ke,Tt.width,Tt.height,di.depth,0,Mn,ro,Tt.data)}else{bi&&Ri&&F.texStorage2D(E.TEXTURE_2D,zn,ke,ti[0].width,ti[0].height);for(let Ni=0,Ui=ti.length;Ni<Ui;Ni++)Tt=ti[Ni],bA.format!==s.RGBAFormat?Mn!==null?bi?$i&&F.compressedTexSubImage2D(E.TEXTURE_2D,Ni,0,0,Tt.width,Tt.height,Mn,Tt.data):F.compressedTexImage2D(E.TEXTURE_2D,Ni,ke,Tt.width,Tt.height,0,Tt.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):bi?$i&&F.texSubImage2D(E.TEXTURE_2D,Ni,0,0,Tt.width,Tt.height,Mn,ro,Tt.data):F.texImage2D(E.TEXTURE_2D,Ni,ke,Tt.width,Tt.height,0,Mn,ro,Tt.data)}else if(bA.isDataArrayTexture)if(bi){if(Ri&&F.texStorage3D(E.TEXTURE_2D_ARRAY,zn,ke,di.width,di.height,di.depth),$i)if(bA.layerUpdates.size>0){const Ni=(0,s.getByteLength)(di.width,di.height,bA.format,bA.type);for(const Ui of bA.layerUpdates){const on=di.data.subarray(Ui*Ni/di.data.BYTES_PER_ELEMENT,(Ui+1)*Ni/di.data.BYTES_PER_ELEMENT);F.texSubImage3D(E.TEXTURE_2D_ARRAY,0,0,0,Ui,di.width,di.height,1,Mn,ro,on)}bA.clearLayerUpdates()}else F.texSubImage3D(E.TEXTURE_2D_ARRAY,0,0,0,0,di.width,di.height,di.depth,Mn,ro,di.data)}else F.texImage3D(E.TEXTURE_2D_ARRAY,0,ke,di.width,di.height,di.depth,0,Mn,ro,di.data);else if(bA.isData3DTexture)bi?(Ri&&F.texStorage3D(E.TEXTURE_3D,zn,ke,di.width,di.height,di.depth),$i&&F.texSubImage3D(E.TEXTURE_3D,0,0,0,0,di.width,di.height,di.depth,Mn,ro,di.data)):F.texImage3D(E.TEXTURE_3D,0,ke,di.width,di.height,di.depth,0,Mn,ro,di.data);else if(bA.isFramebufferTexture){if(Ri)if(bi)F.texStorage2D(E.TEXTURE_2D,zn,ke,di.width,di.height);else{let Ni=di.width,Ui=di.height;for(let on=0;on<zn;on++)F.texImage2D(E.TEXTURE_2D,on,ke,Ni,Ui,0,Mn,ro,null),Ni>>=1,Ui>>=1}}else if(ti.length>0){if(bi&&Ri){const Ni=mo(ti[0]);F.texStorage2D(E.TEXTURE_2D,zn,ke,Ni.width,Ni.height)}for(let Ni=0,Ui=ti.length;Ni<Ui;Ni++)Tt=ti[Ni],bi?$i&&F.texSubImage2D(E.TEXTURE_2D,Ni,0,0,Mn,ro,Tt):F.texImage2D(E.TEXTURE_2D,Ni,ke,Mn,ro,Tt);bA.generateMipmaps=!1}else if(bi){if(Ri){const Ni=mo(di);F.texStorage2D(E.TEXTURE_2D,zn,ke,Ni.width,Ni.height)}$i&&F.texSubImage2D(E.TEXTURE_2D,0,0,0,Mn,ro,di)}else F.texImage2D(E.TEXTURE_2D,0,ke,Mn,ro,di);Pe(bA)&&at(Wt),ji.__version=Ht.version,bA.onUpdate&&bA.onUpdate(bA)}return Se.__version=bA.version,!0}function Oi(Se,bA,ot){if(bA.image.length!==6)return;const Wt=an(Se,bA),kt=bA.source;F.bindTexture(E.TEXTURE_CUBE_MAP,Se.__webglTexture,E.TEXTURE0+ot);const Ht=sA.get(kt);if(kt.version!==Ht.__version||Wt===!0){F.activeTexture(E.TEXTURE0+ot);const ji=s.ColorManagement.getPrimaries(s.ColorManagement.workingColorSpace),ci=bA.colorSpace===s.NoColorSpace?null:s.ColorManagement.getPrimaries(bA.colorSpace),Yi=bA.colorSpace===s.NoColorSpace||ji===ci?E.NONE:E.BROWSER_DEFAULT_WEBGL;E.pixelStorei(E.UNPACK_FLIP_Y_WEBGL,bA.flipY),E.pixelStorei(E.UNPACK_PREMULTIPLY_ALPHA_WEBGL,bA.premultiplyAlpha),E.pixelStorei(E.UNPACK_ALIGNMENT,bA.unpackAlignment),E.pixelStorei(E.UNPACK_COLORSPACE_CONVERSION_WEBGL,Yi);const Jn=bA.isCompressedTexture||bA.image[0].isCompressedTexture,di=bA.image[0]&&bA.image[0].isDataTexture,Mn=[];for(let Ui=0;Ui<6;Ui++)!Jn&&!di?Mn[Ui]=At(bA.image[Ui],!0,MA.maxCubemapSize):Mn[Ui]=di?bA.image[Ui].image:bA.image[Ui],Mn[Ui]=Es(bA,Mn[Ui]);const ro=Mn[0],ke=dA.convert(bA.format,bA.colorSpace),Tt=dA.convert(bA.type),ti=rt(bA.internalFormat,ke,Tt,bA.colorSpace),bi=bA.isVideoTexture!==!0,Ri=Ht.__version===void 0||Wt===!0,$i=kt.dataReady;let zn=Dt(bA,ro);Fr(E.TEXTURE_CUBE_MAP,bA);let Ni;if(Jn){bi&&Ri&&F.texStorage2D(E.TEXTURE_CUBE_MAP,zn,ti,ro.width,ro.height);for(let Ui=0;Ui<6;Ui++){Ni=Mn[Ui].mipmaps;for(let on=0;on<Ni.length;on++){const or=Ni[on];bA.format!==s.RGBAFormat?ke!==null?bi?$i&&F.compressedTexSubImage2D(E.TEXTURE_CUBE_MAP_POSITIVE_X+Ui,on,0,0,or.width,or.height,ke,or.data):F.compressedTexImage2D(E.TEXTURE_CUBE_MAP_POSITIVE_X+Ui,on,ti,or.width,or.height,0,or.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):bi?$i&&F.texSubImage2D(E.TEXTURE_CUBE_MAP_POSITIVE_X+Ui,on,0,0,or.width,or.height,ke,Tt,or.data):F.texImage2D(E.TEXTURE_CUBE_MAP_POSITIVE_X+Ui,on,ti,or.width,or.height,0,ke,Tt,or.data)}}}else{if(Ni=bA.mipmaps,bi&&Ri){Ni.length>0&&zn++;const Ui=mo(Mn[0]);F.texStorage2D(E.TEXTURE_CUBE_MAP,zn,ti,Ui.width,Ui.height)}for(let Ui=0;Ui<6;Ui++)if(di){bi?$i&&F.texSubImage2D(E.TEXTURE_CUBE_MAP_POSITIVE_X+Ui,0,0,0,Mn[Ui].width,Mn[Ui].height,ke,Tt,Mn[Ui].data):F.texImage2D(E.TEXTURE_CUBE_MAP_POSITIVE_X+Ui,0,ti,Mn[Ui].width,Mn[Ui].height,0,ke,Tt,Mn[Ui].data);for(let on=0;on<Ni.length;on++){const zr=Ni[on].image[Ui].image;bi?$i&&F.texSubImage2D(E.TEXTURE_CUBE_MAP_POSITIVE_X+Ui,on+1,0,0,zr.width,zr.height,ke,Tt,zr.data):F.texImage2D(E.TEXTURE_CUBE_MAP_POSITIVE_X+Ui,on+1,ti,zr.width,zr.height,0,ke,Tt,zr.data)}}else{bi?$i&&F.texSubImage2D(E.TEXTURE_CUBE_MAP_POSITIVE_X+Ui,0,0,0,ke,Tt,Mn[Ui]):F.texImage2D(E.TEXTURE_CUBE_MAP_POSITIVE_X+Ui,0,ti,ke,Tt,Mn[Ui]);for(let on=0;on<Ni.length;on++){const or=Ni[on];bi?$i&&F.texSubImage2D(E.TEXTURE_CUBE_MAP_POSITIVE_X+Ui,on+1,0,0,ke,Tt,or.image[Ui]):F.texImage2D(E.TEXTURE_CUBE_MAP_POSITIVE_X+Ui,on+1,ti,ke,Tt,or.image[Ui])}}}Pe(bA)&&at(E.TEXTURE_CUBE_MAP),Ht.__version=kt.version,bA.onUpdate&&bA.onUpdate(bA)}Se.__version=bA.version}function to(Se,bA,ot,Wt,kt,Ht){const ji=dA.convert(ot.format,ot.colorSpace),ci=dA.convert(ot.type),Yi=rt(ot.internalFormat,ji,ci,ot.colorSpace),Jn=sA.get(bA),di=sA.get(ot);if(di.__renderTarget=bA,!Jn.__hasExternalTextures){const ro=Math.max(1,bA.width>>Ht),ke=Math.max(1,bA.height>>Ht);bA.isWebGLMultiviewRenderTarget===!0?F.texStorage3D(E.TEXTURE_2D_ARRAY,0,Yi,bA.width,bA.height,bA.numViews):kt===E.TEXTURE_3D||kt===E.TEXTURE_2D_ARRAY?F.texImage3D(kt,Ht,Yi,ro,ke,bA.depth,0,ji,ci,null):F.texImage2D(kt,Ht,Yi,ro,ke,0,ji,ci,null)}F.bindFramebuffer(E.FRAMEBUFFER,Se);const Mn=qi(bA);bA.isWebGLMultiviewRenderTarget===!0?Mn?Le.framebufferTextureMultisampleMultiviewOVR(E.FRAMEBUFFER,E.COLOR_ATTACHMENT0,di.__webglTexture,0,wn(bA),0,bA.numViews):Le.framebufferTextureMultiviewOVR(E.FRAMEBUFFER,E.COLOR_ATTACHMENT0,di.__webglTexture,0,0,bA.numViews):(kt===E.TEXTURE_2D||kt>=E.TEXTURE_CUBE_MAP_POSITIVE_X&&kt<=E.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&(Mn?OA.framebufferTexture2DMultisampleEXT(E.FRAMEBUFFER,Wt,kt,di.__webglTexture,0,wn(bA)):E.framebufferTexture2D(E.FRAMEBUFFER,Wt,kt,di.__webglTexture,Ht)),F.bindFramebuffer(E.FRAMEBUFFER,null)}function io(Se,bA,ot){if(E.bindRenderbuffer(E.RENDERBUFFER,Se),bA.isWebGLMultiviewRenderTarget===!0){const Wt=qi(bA),kt=bA.numViews,Ht=bA.depthTexture;let ji=E.DEPTH_COMPONENT24,ci=E.DEPTH_ATTACHMENT;Ht&&Ht.isDepthTexture&&(Ht.type===s.FloatType?ji=E.DEPTH_COMPONENT32F:Ht.type===s.UnsignedInt248Type&&(ji=E.DEPTH24_STENCIL8,ci=E.DEPTH_STENCIL_ATTACHMENT));let Yi=sA.get(bA.depthTexture).__webglTexture;Yi===void 0&&(Yi=E.createTexture(),E.bindTexture(E.TEXTURE_2D_ARRAY,Yi),E.texStorage3D(E.TEXTURE_2D_ARRAY,1,ji,bA.width,bA.height,kt)),Wt?Le.framebufferTextureMultisampleMultiviewOVR(E.FRAMEBUFFER,ci,Yi,0,wn(bA),0,kt):Le.framebufferTextureMultiviewOVR(E.FRAMEBUFFER,ci,Yi,0,0,kt)}else if(bA.depthBuffer){const Wt=bA.depthTexture,kt=Wt&&Wt.isDepthTexture?Wt.type:null,Ht=Bt(bA.stencilBuffer,kt),ji=bA.stencilBuffer?E.DEPTH_STENCIL_ATTACHMENT:E.DEPTH_ATTACHMENT,ci=wn(bA);qi(bA)?OA.renderbufferStorageMultisampleEXT(E.RENDERBUFFER,ci,Ht,bA.width,bA.height):ot?E.renderbufferStorageMultisample(E.RENDERBUFFER,ci,Ht,bA.width,bA.height):E.renderbufferStorage(E.RENDERBUFFER,Ht,bA.width,bA.height),E.framebufferRenderbuffer(E.FRAMEBUFFER,ji,E.RENDERBUFFER,Se)}else{const Wt=bA.textures;for(let kt=0;kt<Wt.length;kt++){const Ht=Wt[kt],ji=dA.convert(Ht.format,Ht.colorSpace),ci=dA.convert(Ht.type),Yi=rt(Ht.internalFormat,ji,ci,Ht.colorSpace),Jn=wn(bA);ot&&qi(bA)===!1?E.renderbufferStorageMultisample(E.RENDERBUFFER,Jn,Yi,bA.width,bA.height):qi(bA)?OA.renderbufferStorageMultisampleEXT(E.RENDERBUFFER,Jn,Yi,bA.width,bA.height):E.renderbufferStorage(E.RENDERBUFFER,Yi,bA.width,bA.height)}}E.bindRenderbuffer(E.RENDERBUFFER,null)}function bo(Se,bA){if(bA&&bA.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(F.bindFramebuffer(E.FRAMEBUFFER,Se),!(bA.depthTexture&&bA.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");const Wt=sA.get(bA.depthTexture);Wt.__renderTarget=bA,(!Wt.__webglTexture||bA.depthTexture.image.width!==bA.width||bA.depthTexture.image.height!==bA.height)&&(bA.depthTexture.image.width=bA.width,bA.depthTexture.image.height=bA.height,bA.depthTexture.needsUpdate=!0),bA.depthTexture.image.depth!=1?vt(bA.depthTexture,0):_t(bA.depthTexture,0);const kt=Wt.__webglTexture,Ht=wn(bA);if(bA.isWebGLMultiviewRenderTarget===!0){const ji=qi(bA),ci=bA.numViews;if(bA.depthTexture.format===s.DepthFormat)ji?Le.framebufferTextureMultisampleMultiviewOVR(E.FRAMEBUFFER,E.DEPTH_ATTACHMENT,kt,0,Ht,0,ci):Le.framebufferTextureMultiviewOVR(E.FRAMEBUFFER,E.DEPTH_ATTACHMENT,kt,0,0,ci);else if(bA.depthTexture.format===s.DepthStencilFormat)ji?Le.framebufferTextureMultisampleMultiviewOVR(E.FRAMEBUFFER,E.DEPTH_STENCIL_ATTACHMENT,kt,0,Ht,0,ci):Le.framebufferTextureMultiviewOVR(E.FRAMEBUFFER,E.DEPTH_STENCIL_ATTACHMENT,kt,0,0,ci);else throw new Error("Unknown depthTexture format")}else if(bA.depthTexture.format===s.DepthFormat)qi(bA)?OA.framebufferTexture2DMultisampleEXT(E.FRAMEBUFFER,E.DEPTH_ATTACHMENT,E.TEXTURE_2D,kt,0,Ht):E.framebufferTexture2D(E.FRAMEBUFFER,E.DEPTH_ATTACHMENT,E.TEXTURE_2D,kt,0);else if(bA.depthTexture.format===s.DepthStencilFormat)qi(bA)?OA.framebufferTexture2DMultisampleEXT(E.FRAMEBUFFER,E.DEPTH_STENCIL_ATTACHMENT,E.TEXTURE_2D,kt,0,Ht):E.framebufferTexture2D(E.FRAMEBUFFER,E.DEPTH_STENCIL_ATTACHMENT,E.TEXTURE_2D,kt,0);else throw new Error("Unknown depthTexture format")}function So(Se){const bA=sA.get(Se),ot=Se.isWebGLCubeRenderTarget===!0;if(bA.__boundDepthTexture!==Se.depthTexture){const Wt=Se.depthTexture;if(bA.__depthDisposeCallback&&bA.__depthDisposeCallback(),Wt){const kt=()=>{delete bA.__boundDepthTexture,delete bA.__depthDisposeCallback,Wt.removeEventListener("dispose",kt)};Wt.addEventListener("dispose",kt),bA.__depthDisposeCallback=kt}bA.__boundDepthTexture=Wt}if(Se.depthTexture&&!bA.__autoAllocateDepthBuffer){if(ot)throw new Error("target.depthTexture not supported in Cube render targets");bo(bA.__webglFramebuffer,Se)}else if(ot){bA.__webglDepthbuffer=[];for(let Wt=0;Wt<6;Wt++)if(F.bindFramebuffer(E.FRAMEBUFFER,bA.__webglFramebuffer[Wt]),bA.__webglDepthbuffer[Wt]===void 0)bA.__webglDepthbuffer[Wt]=E.createRenderbuffer(),io(bA.__webglDepthbuffer[Wt],Se,!1);else{const kt=Se.stencilBuffer?E.DEPTH_STENCIL_ATTACHMENT:E.DEPTH_ATTACHMENT,Ht=bA.__webglDepthbuffer[Wt];E.bindRenderbuffer(E.RENDERBUFFER,Ht),E.framebufferRenderbuffer(E.FRAMEBUFFER,kt,E.RENDERBUFFER,Ht)}}else if(F.bindFramebuffer(E.FRAMEBUFFER,bA.__webglFramebuffer),bA.__webglDepthbuffer===void 0)bA.__webglDepthbuffer=E.createRenderbuffer(),io(bA.__webglDepthbuffer,Se,!1);else{const Wt=Se.stencilBuffer?E.DEPTH_STENCIL_ATTACHMENT:E.DEPTH_ATTACHMENT,kt=bA.__webglDepthbuffer;E.bindRenderbuffer(E.RENDERBUFFER,kt),E.framebufferRenderbuffer(E.FRAMEBUFFER,Wt,E.RENDERBUFFER,kt)}F.bindFramebuffer(E.FRAMEBUFFER,null)}function he(Se,bA,ot){const Wt=sA.get(Se);bA!==void 0&&to(Wt.__webglFramebuffer,Se,Se.texture,E.COLOR_ATTACHMENT0,E.TEXTURE_2D,0),ot!==void 0&&So(Se)}function fs(Se){const bA=Se.texture,ot=sA.get(Se),Wt=sA.get(bA);Se.addEventListener("dispose",oe);const kt=Se.textures,Ht=Se.isWebGLCubeRenderTarget===!0,ji=kt.length>1;if(ji||(Wt.__webglTexture===void 0&&(Wt.__webglTexture=E.createTexture()),Wt.__version=bA.version,PA.memory.textures++),Ht){ot.__webglFramebuffer=[];for(let ci=0;ci<6;ci++)if(bA.mipmaps&&bA.mipmaps.length>0){ot.__webglFramebuffer[ci]=[];for(let Yi=0;Yi<bA.mipmaps.length;Yi++)ot.__webglFramebuffer[ci][Yi]=E.createFramebuffer()}else ot.__webglFramebuffer[ci]=E.createFramebuffer()}else{if(bA.mipmaps&&bA.mipmaps.length>0){ot.__webglFramebuffer=[];for(let ci=0;ci<bA.mipmaps.length;ci++)ot.__webglFramebuffer[ci]=E.createFramebuffer()}else ot.__webglFramebuffer=E.createFramebuffer();if(ji)for(let ci=0,Yi=kt.length;ci<Yi;ci++){const Jn=sA.get(kt[ci]);Jn.__webglTexture===void 0&&(Jn.__webglTexture=E.createTexture(),PA.memory.textures++)}if(Se.samples>0&&qi(Se)===!1){ot.__webglMultisampledFramebuffer=E.createFramebuffer(),ot.__webglColorRenderbuffer=[],F.bindFramebuffer(E.FRAMEBUFFER,ot.__webglMultisampledFramebuffer);for(let ci=0;ci<kt.length;ci++){const Yi=kt[ci];ot.__webglColorRenderbuffer[ci]=E.createRenderbuffer(),E.bindRenderbuffer(E.RENDERBUFFER,ot.__webglColorRenderbuffer[ci]);const Jn=dA.convert(Yi.format,Yi.colorSpace),di=dA.convert(Yi.type),Mn=rt(Yi.internalFormat,Jn,di,Yi.colorSpace,Se.isXRRenderTarget===!0),ro=wn(Se);E.renderbufferStorageMultisample(E.RENDERBUFFER,ro,Mn,Se.width,Se.height),E.framebufferRenderbuffer(E.FRAMEBUFFER,E.COLOR_ATTACHMENT0+ci,E.RENDERBUFFER,ot.__webglColorRenderbuffer[ci])}E.bindRenderbuffer(E.RENDERBUFFER,null),Se.depthBuffer&&(ot.__webglDepthRenderbuffer=E.createRenderbuffer(),io(ot.__webglDepthRenderbuffer,Se,!0)),F.bindFramebuffer(E.FRAMEBUFFER,null)}}if(Ht){F.bindTexture(E.TEXTURE_CUBE_MAP,Wt.__webglTexture),Fr(E.TEXTURE_CUBE_MAP,bA);for(let ci=0;ci<6;ci++)if(bA.mipmaps&&bA.mipmaps.length>0)for(let Yi=0;Yi<bA.mipmaps.length;Yi++)to(ot.__webglFramebuffer[ci][Yi],Se,bA,E.COLOR_ATTACHMENT0,E.TEXTURE_CUBE_MAP_POSITIVE_X+ci,Yi);else to(ot.__webglFramebuffer[ci],Se,bA,E.COLOR_ATTACHMENT0,E.TEXTURE_CUBE_MAP_POSITIVE_X+ci,0);Pe(bA)&&at(E.TEXTURE_CUBE_MAP),F.unbindTexture()}else if(ji){for(let ci=0,Yi=kt.length;ci<Yi;ci++){const Jn=kt[ci],di=sA.get(Jn);F.bindTexture(E.TEXTURE_2D,di.__webglTexture),Fr(E.TEXTURE_2D,Jn),to(ot.__webglFramebuffer,Se,Jn,E.COLOR_ATTACHMENT0+ci,E.TEXTURE_2D,0),Pe(Jn)&&at(E.TEXTURE_2D)}F.unbindTexture()}else{let ci=E.TEXTURE_2D;if((Se.isWebGL3DRenderTarget||Se.isWebGLArrayRenderTarget)&&(ci=Se.isWebGL3DRenderTarget?E.TEXTURE_3D:E.TEXTURE_2D_ARRAY),Se.isWebGLMultiviewRenderTarget===!0&&(ci=E.TEXTURE_2D_ARRAY),F.bindTexture(ci,Wt.__webglTexture),Fr(ci,bA),bA.mipmaps&&bA.mipmaps.length>0)for(let Yi=0;Yi<bA.mipmaps.length;Yi++)to(ot.__webglFramebuffer[Yi],Se,bA,E.COLOR_ATTACHMENT0,ci,Yi);else to(ot.__webglFramebuffer,Se,bA,E.COLOR_ATTACHMENT0,ci,0);Pe(bA)&&at(ci),F.unbindTexture()}(Se.depthBuffer||Se.isWebGLMultiviewRenderTarget===!0)&&this.setupDepthRenderbuffer(Se)}function fn(Se){const bA=Se.textures;for(let ot=0,Wt=bA.length;ot<Wt;ot++){const kt=bA[ot];if(Pe(kt)){const Ht=et(Se),ji=sA.get(kt).__webglTexture;F.bindTexture(Ht,ji),at(Ht),F.unbindTexture()}}}const ko=[],cn=[];function nr(Se){if(Se.samples>0){if(qi(Se)===!1){const bA=Se.textures,ot=Se.width,Wt=Se.height;let kt=E.COLOR_BUFFER_BIT;const Ht=Se.stencilBuffer?E.DEPTH_STENCIL_ATTACHMENT:E.DEPTH_ATTACHMENT,ji=sA.get(Se),ci=bA.length>1;if(ci)for(let Yi=0;Yi<bA.length;Yi++)F.bindFramebuffer(E.FRAMEBUFFER,ji.__webglMultisampledFramebuffer),E.framebufferRenderbuffer(E.FRAMEBUFFER,E.COLOR_ATTACHMENT0+Yi,E.RENDERBUFFER,null),F.bindFramebuffer(E.FRAMEBUFFER,ji.__webglFramebuffer),E.framebufferTexture2D(E.DRAW_FRAMEBUFFER,E.COLOR_ATTACHMENT0+Yi,E.TEXTURE_2D,null,0);F.bindFramebuffer(E.READ_FRAMEBUFFER,ji.__webglMultisampledFramebuffer),F.bindFramebuffer(E.DRAW_FRAMEBUFFER,ji.__webglFramebuffer);for(let Yi=0;Yi<bA.length;Yi++){if(Se.resolveDepthBuffer&&(Se.depthBuffer&&(kt|=E.DEPTH_BUFFER_BIT),Se.stencilBuffer&&Se.resolveStencilBuffer&&(kt|=E.STENCIL_BUFFER_BIT)),ci){E.framebufferRenderbuffer(E.READ_FRAMEBUFFER,E.COLOR_ATTACHMENT0,E.RENDERBUFFER,ji.__webglColorRenderbuffer[Yi]);const Jn=sA.get(bA[Yi]).__webglTexture;E.framebufferTexture2D(E.DRAW_FRAMEBUFFER,E.COLOR_ATTACHMENT0,E.TEXTURE_2D,Jn,0)}E.blitFramebuffer(0,0,ot,Wt,0,0,ot,Wt,kt,E.NEAREST),Xe===!0&&(ko.length=0,cn.length=0,ko.push(E.COLOR_ATTACHMENT0+Yi),Se.depthBuffer&&Se.resolveDepthBuffer===!1&&(ko.push(Ht),cn.push(Ht),E.invalidateFramebuffer(E.DRAW_FRAMEBUFFER,cn)),E.invalidateFramebuffer(E.READ_FRAMEBUFFER,ko))}if(F.bindFramebuffer(E.READ_FRAMEBUFFER,null),F.bindFramebuffer(E.DRAW_FRAMEBUFFER,null),ci)for(let Yi=0;Yi<bA.length;Yi++){F.bindFramebuffer(E.FRAMEBUFFER,ji.__webglMultisampledFramebuffer),E.framebufferRenderbuffer(E.FRAMEBUFFER,E.COLOR_ATTACHMENT0+Yi,E.RENDERBUFFER,ji.__webglColorRenderbuffer[Yi]);const Jn=sA.get(bA[Yi]).__webglTexture;F.bindFramebuffer(E.FRAMEBUFFER,ji.__webglFramebuffer),E.framebufferTexture2D(E.DRAW_FRAMEBUFFER,E.COLOR_ATTACHMENT0+Yi,E.TEXTURE_2D,Jn,0)}F.bindFramebuffer(E.DRAW_FRAMEBUFFER,ji.__webglMultisampledFramebuffer)}else if(Se.depthBuffer&&Se.resolveDepthBuffer===!1&&Xe){const bA=Se.stencilBuffer?E.DEPTH_STENCIL_ATTACHMENT:E.DEPTH_ATTACHMENT;E.invalidateFramebuffer(E.DRAW_FRAMEBUFFER,[bA])}}}function wn(Se){return Math.min(MA.maxSamples,Se.samples)}function qi(Se){const bA=sA.get(Se);return Se.samples>0&&J.has("WEBGL_multisampled_render_to_texture")===!0&&bA.__useRenderToTexture!==!1}function Rn(Se){const bA=PA.render.frame;se.get(Se)!==bA&&(se.set(Se,bA),Se.update())}function Es(Se,bA){const ot=Se.colorSpace,Wt=Se.format,kt=Se.type;return Se.isCompressedTexture===!0||Se.isVideoTexture===!0||ot!==s.LinearSRGBColorSpace&&ot!==s.NoColorSpace&&(s.ColorManagement.getTransfer(ot)===s.SRGBTransfer?(Wt!==s.RGBAFormat||kt!==s.UnsignedByteType)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",ot)),bA}function mo(Se){return typeof HTMLImageElement<"u"&&Se instanceof HTMLImageElement?(be.width=Se.naturalWidth||Se.width,be.height=Se.naturalHeight||Se.height):typeof VideoFrame<"u"&&Se instanceof VideoFrame?(be.width=Se.displayWidth,be.height=Se.displayHeight):(be.width=Se.width,be.height=Se.height),be}this.allocateTextureUnit=Jt,this.resetTextureUnits=mi,this.setTexture2D=_t,this.setTexture2DArray=vt,this.setTexture3D=yn,this.setTextureCube=Xn,this.rebindTextures=he,this.uploadTexture=yi,this.setupRenderTarget=fs,this.updateRenderTargetMipmap=fn,this.updateMultisampleRenderTarget=nr,this.setupDepthTexture=bo,this.setupDepthRenderbuffer=So,this.setupFrameBufferTexture=to,this.useMultisampledRTT=qi,this.runDeferredUploads=Zt,this.setDeferTextureUploads=li}function Pg(E,J){function F(sA,MA=s.NoColorSpace){let dA;const PA=s.ColorManagement.getTransfer(MA);if(sA===s.UnsignedByteType)return E.UNSIGNED_BYTE;if(sA===s.UnsignedShort4444Type)return E.UNSIGNED_SHORT_4_4_4_4;if(sA===s.UnsignedShort5551Type)return E.UNSIGNED_SHORT_5_5_5_1;if(sA===s.UnsignedInt5999Type)return E.UNSIGNED_INT_5_9_9_9_REV;if(sA===s.ByteType)return E.BYTE;if(sA===s.ShortType)return E.SHORT;if(sA===s.UnsignedShortType)return E.UNSIGNED_SHORT;if(sA===s.IntType)return E.INT;if(sA===s.UnsignedIntType)return E.UNSIGNED_INT;if(sA===s.FloatType)return E.FLOAT;if(sA===s.HalfFloatType)return E.HALF_FLOAT;if(sA===s.AlphaFormat)return E.ALPHA;if(sA===s.RGBFormat)return E.RGB;if(sA===s.RGBAFormat)return E.RGBA;if(sA===s.LuminanceFormat)return E.LUMINANCE;if(sA===s.LuminanceAlphaFormat)return E.LUMINANCE_ALPHA;if(sA===s.DepthFormat)return E.DEPTH_COMPONENT;if(sA===s.DepthStencilFormat)return E.DEPTH_STENCIL;if(sA===s.RedFormat)return E.RED;if(sA===s.RedIntegerFormat)return E.RED_INTEGER;if(sA===s.RGFormat)return E.RG;if(sA===s.RGIntegerFormat)return E.RG_INTEGER;if(sA===s.RGBAIntegerFormat)return E.RGBA_INTEGER;if(sA===s.RGB_S3TC_DXT1_Format||sA===s.RGBA_S3TC_DXT1_Format||sA===s.RGBA_S3TC_DXT3_Format||sA===s.RGBA_S3TC_DXT5_Format)if(PA===s.SRGBTransfer)if(dA=J.get("WEBGL_compressed_texture_s3tc_srgb"),dA!==null){if(sA===s.RGB_S3TC_DXT1_Format)return dA.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(sA===s.RGBA_S3TC_DXT1_Format)return dA.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(sA===s.RGBA_S3TC_DXT3_Format)return dA.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(sA===s.RGBA_S3TC_DXT5_Format)return dA.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(dA=J.get("WEBGL_compressed_texture_s3tc"),dA!==null){if(sA===s.RGB_S3TC_DXT1_Format)return dA.COMPRESSED_RGB_S3TC_DXT1_EXT;if(sA===s.RGBA_S3TC_DXT1_Format)return dA.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(sA===s.RGBA_S3TC_DXT3_Format)return dA.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(sA===s.RGBA_S3TC_DXT5_Format)return dA.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(sA===s.RGB_PVRTC_4BPPV1_Format||sA===s.RGB_PVRTC_2BPPV1_Format||sA===s.RGBA_PVRTC_4BPPV1_Format||sA===s.RGBA_PVRTC_2BPPV1_Format)if(dA=J.get("WEBGL_compressed_texture_pvrtc"),dA!==null){if(sA===s.RGB_PVRTC_4BPPV1_Format)return dA.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(sA===s.RGB_PVRTC_2BPPV1_Format)return dA.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(sA===s.RGBA_PVRTC_4BPPV1_Format)return dA.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(sA===s.RGBA_PVRTC_2BPPV1_Format)return dA.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(sA===s.RGB_ETC1_Format||sA===s.RGB_ETC2_Format||sA===s.RGBA_ETC2_EAC_Format)if(dA=J.get("WEBGL_compressed_texture_etc"),dA!==null){if(sA===s.RGB_ETC1_Format||sA===s.RGB_ETC2_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ETC2:dA.COMPRESSED_RGB8_ETC2;if(sA===s.RGBA_ETC2_EAC_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:dA.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(sA===s.RGBA_ASTC_4x4_Format||sA===s.RGBA_ASTC_5x4_Format||sA===s.RGBA_ASTC_5x5_Format||sA===s.RGBA_ASTC_6x5_Format||sA===s.RGBA_ASTC_6x6_Format||sA===s.RGBA_ASTC_8x5_Format||sA===s.RGBA_ASTC_8x6_Format||sA===s.RGBA_ASTC_8x8_Format||sA===s.RGBA_ASTC_10x5_Format||sA===s.RGBA_ASTC_10x6_Format||sA===s.RGBA_ASTC_10x8_Format||sA===s.RGBA_ASTC_10x10_Format||sA===s.RGBA_ASTC_12x10_Format||sA===s.RGBA_ASTC_12x12_Format)if(dA=J.get("WEBGL_compressed_texture_astc"),dA!==null){if(sA===s.RGBA_ASTC_4x4_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:dA.COMPRESSED_RGBA_ASTC_4x4_KHR;if(sA===s.RGBA_ASTC_5x4_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:dA.COMPRESSED_RGBA_ASTC_5x4_KHR;if(sA===s.RGBA_ASTC_5x5_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:dA.COMPRESSED_RGBA_ASTC_5x5_KHR;if(sA===s.RGBA_ASTC_6x5_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:dA.COMPRESSED_RGBA_ASTC_6x5_KHR;if(sA===s.RGBA_ASTC_6x6_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:dA.COMPRESSED_RGBA_ASTC_6x6_KHR;if(sA===s.RGBA_ASTC_8x5_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:dA.COMPRESSED_RGBA_ASTC_8x5_KHR;if(sA===s.RGBA_ASTC_8x6_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:dA.COMPRESSED_RGBA_ASTC_8x6_KHR;if(sA===s.RGBA_ASTC_8x8_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:dA.COMPRESSED_RGBA_ASTC_8x8_KHR;if(sA===s.RGBA_ASTC_10x5_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:dA.COMPRESSED_RGBA_ASTC_10x5_KHR;if(sA===s.RGBA_ASTC_10x6_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:dA.COMPRESSED_RGBA_ASTC_10x6_KHR;if(sA===s.RGBA_ASTC_10x8_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:dA.COMPRESSED_RGBA_ASTC_10x8_KHR;if(sA===s.RGBA_ASTC_10x10_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:dA.COMPRESSED_RGBA_ASTC_10x10_KHR;if(sA===s.RGBA_ASTC_12x10_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:dA.COMPRESSED_RGBA_ASTC_12x10_KHR;if(sA===s.RGBA_ASTC_12x12_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:dA.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(sA===s.RGBA_BPTC_Format||sA===s.RGB_BPTC_SIGNED_Format||sA===s.RGB_BPTC_UNSIGNED_Format)if(dA=J.get("EXT_texture_compression_bptc"),dA!==null){if(sA===s.RGBA_BPTC_Format)return PA===s.SRGBTransfer?dA.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:dA.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(sA===s.RGB_BPTC_SIGNED_Format)return dA.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(sA===s.RGB_BPTC_UNSIGNED_Format)return dA.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(sA===s.RED_RGTC1_Format||sA===s.SIGNED_RED_RGTC1_Format||sA===s.RED_GREEN_RGTC2_Format||sA===s.SIGNED_RED_GREEN_RGTC2_Format)if(dA=J.get("EXT_texture_compression_rgtc"),dA!==null){if(sA===s.RGBA_BPTC_Format)return dA.COMPRESSED_RED_RGTC1_EXT;if(sA===s.SIGNED_RED_RGTC1_Format)return dA.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(sA===s.RED_GREEN_RGTC2_Format)return dA.COMPRESSED_RED_GREEN_RGTC2_EXT;if(sA===s.SIGNED_RED_GREEN_RGTC2_Format)return dA.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return sA===s.UnsignedInt248Type?E.UNSIGNED_INT_24_8:E[sA]!==void 0?E[sA]:null}return{convert:F}}class us extends s.WebGLRenderTarget{constructor(J,F,sA,MA={}){super(J,F,MA),this.depthBuffer=!1,this.stencilBuffer=!1,this.numViews=sA}copy(J){return super.copy(J),this.numViews=J.numViews,this}}us.prototype.isWebGLMultiviewRenderTarget=!0;const WI=`
void main() {
gl_Position = vec4( position, 1.0 );
}`,VI=`
uniform sampler2DArray depthColor;
uniform float depthWidth;
uniform float depthHeight;
void main() {
vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight );
if ( coord.x >= 1.0 ) {
gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r;
} else {
gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r;
}
}`;class w{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(J,F,sA){if(this.texture===null){const MA=new s.Texture,dA=J.properties.get(MA);dA.__webglTexture=F.texture,(F.depthNear!==sA.depthNear||F.depthFar!==sA.depthFar)&&(this.depthNear=F.depthNear,this.depthFar=F.depthFar),this.texture=MA}}getMesh(J){if(this.texture!==null&&this.mesh===null){const F=J.cameras[0].viewport,sA=new s.ShaderMaterial({vertexShader:WI,fragmentShader:VI,uniforms:{depthColor:{value:this.texture},depthWidth:{value:F.z},depthHeight:{value:F.w}}});this.mesh=new s.Mesh(new s.PlaneGeometry(20,20),sA)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class L extends s.EventDispatcher{constructor(J,F,sA,MA){super();const dA=this;let PA=null,OA=1;var Xe=null;let Le=null,be="local-floor",se=1,Ge=null,je=null;var ve=[];let Ve=null,Ae=null,FA=null,At=null;const Pe=new w,at=F.getContextAttributes();let et=null,rt=null;const Bt=[],Dt=[],ce=new s.Vector2;let oe=null;const it=new s.PerspectiveCamera;it.viewport=new s.Vector4;const $t=new s.PerspectiveCamera;$t.viewport=new s.Vector4;const ht=[it,$t],mt=new s.ArrayCamera;let mi=null,Jt=null;this.cameraAutoUpdate=!0,this.layersEnabled=!1,this.enabled=!1,this.isPresenting=!1,this.isMultiview=!1,this.getCameraPose=function(){return je},this.getController=function(Zt){let yi=Bt[Zt];return yi===void 0&&(yi=new s.WebXRController,Bt[Zt]=yi),yi.getTargetRaySpace()},this.getControllerGrip=function(Zt){let yi=Bt[Zt];return yi===void 0&&(yi=new s.WebXRController,Bt[Zt]=yi),yi.getGripSpace()},this.getHand=function(Zt){let yi=Bt[Zt];return yi===void 0&&(yi=new s.WebXRController,Bt[Zt]=yi),yi.getHandSpace()};function Bi(Zt){const yi=Dt.indexOf(Zt.inputSource);if(yi===-1)return;const Oi=Bt[yi];Oi!==void 0&&(Oi.update(Zt.inputSource,Zt.frame,Ge||Le),Oi.dispatchEvent({type:Zt.type,data:Zt.inputSource}))}function _t(){PA.removeEventListener("select",Bi),PA.removeEventListener("selectstart",Bi),PA.removeEventListener("selectend",Bi),PA.removeEventListener("squeeze",Bi),PA.removeEventListener("squeezestart",Bi),PA.removeEventListener("squeezeend",Bi),PA.removeEventListener("end",_t),PA.removeEventListener("inputsourceschange",vt);for(let Zt=0;Zt<Bt.length;Zt++){const yi=Dt[Zt];yi!==null&&(Dt[Zt]=null,Bt[Zt].disconnect(yi))}mi=null,Jt=null,Pe.reset(),dA.isPresenting=!1,J.setRenderTarget(et),FA=null,Ae=null,Ve=null,PA=null,rt=null,li.stop(),J.setPixelRatio(oe),J.setSize(ce.width,ce.height,!1),dA.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(Zt){OA=Zt,dA.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(Zt){be=Zt,dA.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return Ge||Le},this.setReferenceSpace=function(Zt){Ge=Zt},this.getBaseLayer=function(){return Ae!==null?Ae:FA},this.getBinding=function(){return Ve},this.getRenderTarget=function(){return rt},this.getFrame=function(){return At},this.getSession=function(){return PA},this.setSession=async function(Zt){if(PA=Zt,PA!==null){if(et=J.getRenderTarget(),PA.addEventListener("select",Bi),PA.addEventListener("selectstart",Bi),PA.addEventListener("selectend",Bi),PA.addEventListener("squeeze",Bi),PA.addEventListener("squeezestart",Bi),PA.addEventListener("squeezeend",Bi),PA.addEventListener("end",_t),PA.addEventListener("inputsourceschange",vt),at.xrCompatible!==!0&&await F.makeXRCompatible(),oe=J.getPixelRatio(),J.getSize(ce),typeof XRWebGLBinding<"u"&&"createProjectionLayer"in XRWebGLBinding.prototype){let Oi=null,to=null,io=null;at.depth&&(io=at.stencil?F.DEPTH24_STENCIL8:F.DEPTH_COMPONENT24,Oi=at.stencil?s.DepthStencilFormat:s.DepthFormat,to=at.stencil?s.UnsignedInt248Type:s.UnsignedIntType),dA.isMultiview=MA&&sA.has("OCULUS_multiview");const bo={colorFormat:F.RGBA8,depthFormat:io,scaleFactor:OA};dA.isMultiview&&(bo.textureType="texture-array"),Ve=new XRWebGLBinding(PA,F),Ae=Ve.createProjectionLayer(bo),PA.updateRenderState({layers:[Ae]}),J.setPixelRatio(1),J.setSize(Ae.textureWidth,Ae.textureHeight,!1);const So={format:s.RGBAFormat,type:s.UnsignedByteType,depthTexture:new s.DepthTexture(Ae.textureWidth,Ae.textureHeight,to,void 0,void 0,void 0,void 0,void 0,void 0,Oi),stencilBuffer:at.stencil,colorSpace:J.outputColorSpace,samples:at.antialias?4:0,resolveDepthBuffer:Ae.ignoreDepthValues===!1};if(dA.isMultiview){const he=sA.get("OCULUS_multiview");this.maxNumViews=F.getParameter(he.MAX_VIEWS_OVR),rt=new us(Ae.textureWidth,Ae.textureHeight,2,So)}else rt=new s.WebGLRenderTarget(Ae.textureWidth,Ae.textureHeight,So)}else{const Oi={antialias:at.antialias,alpha:!0,depth:at.depth,stencil:at.stencil,framebufferScaleFactor:OA};FA=new XRWebGLLayer(PA,F,Oi),PA.updateRenderState({baseLayer:FA}),J.setPixelRatio(1),J.setSize(FA.framebufferWidth,FA.framebufferHeight,!1),rt=new s.WebGLRenderTarget(FA.framebufferWidth,FA.framebufferHeight,{format:s.RGBAFormat,type:s.UnsignedByteType,colorSpace:J.outputColorSpace,stencilBuffer:at.stencil})}rt.isXRRenderTarget=!0,this.setFoveation(se),Ge=null,Le=await PA.requestReferenceSpace(be),li.setContext(PA),li.start(),dA.isPresenting=!0,dA.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(PA!==null)return PA.environmentBlendMode},this.addLayer=function(Zt){!window.XRWebGLBinding||!this.layersEnabled||!PA||(ve.push(Zt),this.updateLayers())},this.removeLayer=function(Zt){ve.splice(ve.indexOf(Zt),1),!(!window.XRWebGLBinding||!this.layersEnabled||!PA)&&this.updateLayers()},this.updateLayers=function(){var Zt=ve.map(function(yi){return yi});Zt.unshift(PA.renderState.layers[0]),PA.updateRenderState({layers:Zt})},this.getDepthTexture=function(){return Pe.getDepthTexture()};function vt(Zt){for(let yi=0;yi<Zt.removed.length;yi++){const Oi=Zt.removed[yi],to=Dt.indexOf(Oi);to>=0&&(Dt[to]=null,Bt[to].disconnect(Oi))}for(let yi=0;yi<Zt.added.length;yi++){const Oi=Zt.added[yi];let to=Dt.indexOf(Oi);if(to===-1){for(let bo=0;bo<Bt.length;bo++)if(bo>=Dt.length){Dt.push(Oi),to=bo;break}else if(Dt[bo]===null){Dt[bo]=Oi,to=bo;break}if(to===-1)break}const io=Bt[to];io&&io.connect(Oi)}}const yn=new s.Vector3,Xn=new s.Vector3;function Gr(Zt,yi,Oi){yn.setFromMatrixPosition(yi.matrixWorld),Xn.setFromMatrixPosition(Oi.matrixWorld);const to=yn.distanceTo(Xn),io=yi.projectionMatrix.elements,bo=Oi.projectionMatrix.elements,So=io[14]/(io[10]-1),he=io[14]/(io[10]+1),fs=(io[9]+1)/io[5],fn=(io[9]-1)/io[5],ko=(io[8]-1)/io[0],cn=(bo[8]+1)/bo[0],nr=So*ko,wn=So*cn,qi=to/(-ko+cn),Rn=qi*-ko;if(yi.matrixWorld.decompose(Zt.position,Zt.quaternion,Zt.scale),Zt.translateX(Rn),Zt.translateZ(qi),Zt.matrixWorld.compose(Zt.position,Zt.quaternion,Zt.scale),Zt.matrixWorldInverse.copy(Zt.matrixWorld).invert(),io[10]===-1)Zt.projectionMatrix.copy(yi.projectionMatrix),Zt.projectionMatrixInverse.copy(yi.projectionMatrixInverse);else{const Es=So+qi,mo=he+qi,Se=nr-Rn,bA=wn+(to-Rn),ot=fs*he/mo*Es,Wt=fn*he/mo*Es;Zt.projectionMatrix.makePerspective(Se,bA,ot,Wt,Es,mo),Zt.projectionMatrixInverse.copy(Zt.projectionMatrix).invert()}}function co(Zt,yi){yi===null?Zt.matrixWorld.copy(Zt.matrix):Zt.matrixWorld.multiplyMatrices(yi.matrixWorld,Zt.matrix),Zt.matrixWorldInverse.copy(Zt.matrixWorld).invert()}this.setPoseTarget=function(Zt){Zt!==void 0&&(Xe=Zt)},this.updateCamera=function(Zt){if(PA===null)return;let yi=Zt.near,Oi=Zt.far;Pe.texture!==null&&(Pe.depthNear>0&&(yi=Pe.depthNear),Pe.depthFar>0&&(Oi=Pe.depthFar)),mt.near=$t.near=it.near=yi,mt.far=$t.far=it.far=Oi,(mi!==mt.near||Jt!==mt.far)&&(PA.updateRenderState({depthNear:mt.near,depthFar:mt.far}),mi=mt.near,Jt=mt.far),it.layers.mask=Zt.layers.mask|2,$t.layers.mask=Zt.layers.mask|4,mt.layers.mask=it.layers.mask|$t.layers.mask;const to=mt.cameras;var io=Xe||Zt;const bo=io.parent;co(mt,bo);for(let So=0;So<to.length;So++)co(to[So],bo);to.length===2?Gr(mt,it,$t):mt.projectionMatrix.copy(it.projectionMatrix),Ar(Zt,mt,io)};function Ar(Zt,yi,Oi){yi.matrixWorld.decompose(yi.position,yi.quaternion,yi.scale),Oi.parent===null?Oi.matrix.copy(yi.matrixWorld):(Oi.matrix.copy(Oi.parent.matrixWorld),Oi.matrix.invert(),Oi.matrix.multiply(yi.matrixWorld)),Oi.matrix.decompose(Oi.position,Oi.quaternion,Oi.scale),Oi.updateMatrixWorld(!0),Zt.projectionMatrix.copy(yi.projectionMatrix),Zt.projectionMatrixInverse.copy(yi.projectionMatrixInverse),Zt.isPerspectiveCamera&&(Zt.fov=s.RAD2DEG*2*Math.atan(1/Zt.projectionMatrix.elements[5]),Zt.zoom=1)}this.getCamera=function(){return mt},this.getFoveation=function(){if(!(Ae===null&&FA===null))return se},this.setFoveation=function(Zt){se=Zt,Ae!==null&&(Ae.fixedFoveation=Zt),FA!==null&&FA.fixedFoveation!==void 0&&(FA.fixedFoveation=Zt)},this.hasDepthSensing=function(){return Pe.texture!==null},this.getDepthSensingMesh=function(){return Pe.getMesh(mt)};let Fr=null;function an(Zt,yi){if(je=yi.getViewerPose(Ge||Le),At=yi,je!==null){const Oi=je.views;FA!==null&&(J.setRenderTargetFramebuffer(rt,FA.framebuffer),J.setRenderTarget(rt));let to=!1;Oi.length!==mt.cameras.length&&(mt.cameras.length=0,to=!0);for(let So=0;So<Oi.length;So++){const he=Oi[So];let fs=null;if(FA!==null)fs=FA.getViewport(he);else{const ko=Ve.getViewSubImage(Ae,he);fs=ko.viewport,So===0&&(J.setRenderTargetTextures(rt,ko.colorTexture,Ae.ignoreDepthValues?void 0:ko.depthStencilTexture),J.setRenderTarget(rt))}let fn=ht[So];fn===void 0&&(fn=new s.PerspectiveCamera,fn.layers.enable(So),fn.viewport=new s.Vector4,ht[So]=fn),fn.matrix.fromArray(he.transform.matrix),fn.matrix.decompose(fn.position,fn.quaternion,fn.scale),fn.projectionMatrix.fromArray(he.projectionMatrix),fn.projectionMatrixInverse.copy(fn.projectionMatrix).invert(),fn.viewport.set(fs.x,fs.y,fs.width,fs.height),So===0&&(mt.matrix.copy(fn.matrix),mt.matrix.decompose(mt.position,mt.quaternion,mt.scale)),to===!0&&mt.cameras.push(fn)}const io=PA.enabledFeatures;if(io&&io.includes("depth-sensing")&&PA.depthUsage=="gpu-optimized"&&Ve){const So=Ve.getDepthInformation(Oi[0]);So&&So.isValid&&So.texture&&Pe.init(J,So,PA.renderState)}}for(let Oi=0;Oi<Bt.length;Oi++){const to=Dt[Oi],io=Bt[Oi];to!==null&&io!==void 0&&io.update(to,yi,Ge||Le)}Fr&&Fr(Zt,yi),yi.detectedPlanes&&dA.dispatchEvent({type:"planesdetected",data:yi}),At=null}const li=new z;li.setAnimationLoop(an),this.setAnimationLoop=function(Zt){Fr=Zt},this.dispose=function(){}}}const AA=new s.Euler,EA=new s.Matrix4;function GA(E,J){function F(Ae,FA){Ae.matrixAutoUpdate===!0&&Ae.updateMatrix(),FA.value.copy(Ae.matrix)}function sA(Ae,FA){FA.color.getRGB(Ae.fogColor.value,(0,s.getUnlitUniformColorSpace)(E)),FA.isFog?(Ae.fogNear.value=FA.near,Ae.fogFar.value=FA.far):FA.isFogExp2&&(Ae.fogDensity.value=FA.density)}function MA(Ae,FA,At,Pe,at){FA.isMeshBasicMaterial||FA.isMeshLambertMaterial?dA(Ae,FA):FA.isMeshToonMaterial?(dA(Ae,FA),se(Ae,FA)):FA.isMeshPhongMaterial?(dA(Ae,FA),be(Ae,FA)):FA.isMeshStandardMaterial?(dA(Ae,FA),Ge(Ae,FA),FA.isMeshPhysicalMaterial&&je(Ae,FA,at)):FA.isMeshMatcapMaterial?(dA(Ae,FA),ve(Ae,FA)):FA.isMeshDepthMaterial?dA(Ae,FA):FA.isMeshDistanceMaterial?(dA(Ae,FA),Ve(Ae,FA)):FA.isMeshNormalMaterial?dA(Ae,FA):FA.isLineBasicMaterial?(PA(Ae,FA),FA.isLineDashedMaterial&&OA(Ae,FA)):FA.isPointsMaterial?Xe(Ae,FA,At,Pe):FA.isSpriteMaterial?Le(Ae,FA):FA.isShadowMaterial?(Ae.color.value.copy(FA.color),Ae.opacity.value=FA.opacity):FA.isShaderMaterial&&(FA.uniformsNeedUpdate=!1)}function dA(Ae,FA){Ae.opacity.value=FA.opacity,FA.color&&Ae.diffuse.value.copy(FA.color),FA.emissive&&Ae.emissive.value.copy(FA.emissive).multiplyScalar(FA.emissiveIntensity),FA.map&&(Ae.map.value=FA.map,F(FA.map,Ae.mapTransform)),FA.alphaMap&&(Ae.alphaMap.value=FA.alphaMap,F(FA.alphaMap,Ae.alphaMapTransform)),FA.bumpMap&&(Ae.bumpMap.value=FA.bumpMap,F(FA.bumpMap,Ae.bumpMapTransform),Ae.bumpScale.value=FA.bumpScale,FA.side===s.BackSide&&(Ae.bumpScale.value*=-1)),FA.normalMap&&(Ae.normalMap.value=FA.normalMap,F(FA.normalMap,Ae.normalMapTransform),Ae.normalScale.value.copy(FA.normalScale),FA.side===s.BackSide&&Ae.normalScale.value.negate()),FA.displacementMap&&(Ae.displacementMap.value=FA.displacementMap,F(FA.displacementMap,Ae.displacementMapTransform),Ae.displacementScale.value=FA.displacementScale,Ae.displacementBias.value=FA.displacementBias),FA.emissiveMap&&(Ae.emissiveMap.value=FA.emissiveMap,F(FA.emissiveMap,Ae.emissiveMapTransform)),FA.specularMap&&(Ae.specularMap.value=FA.specularMap,F(FA.specularMap,Ae.specularMapTransform)),FA.alphaTest>0&&(Ae.alphaTest.value=FA.alphaTest);const At=J.get(FA),Pe=At.envMap,at=At.envMapRotation;Pe&&(Ae.envMap.value=Pe,AA.copy(at),AA.x*=-1,AA.y*=-1,AA.z*=-1,Pe.isCubeTexture&&Pe.isRenderTargetTexture===!1&&(AA.y*=-1,AA.z*=-1),Ae.envMapRotation.value.setFromMatrix4(EA.makeRotationFromEuler(AA)),Ae.flipEnvMap.value=Pe.isCubeTexture&&Pe.isRenderTargetTexture===!1?-1:1,Ae.reflectivity.value=FA.reflectivity,Ae.ior.value=FA.ior,Ae.refractionRatio.value=FA.refractionRatio),FA.lightMap&&(Ae.lightMap.value=FA.lightMap,Ae.lightMapIntensity.value=FA.lightMapIntensity,F(FA.lightMap,Ae.lightMapTransform)),FA.aoMap&&(Ae.aoMap.value=FA.aoMap,Ae.aoMapIntensity.value=FA.aoMapIntensity,F(FA.aoMap,Ae.aoMapTransform))}function PA(Ae,FA){Ae.diffuse.value.copy(FA.color),Ae.opacity.value=FA.opacity,FA.map&&(Ae.map.value=FA.map,F(FA.map,Ae.mapTransform))}function OA(Ae,FA){Ae.dashSize.value=FA.dashSize,Ae.totalSize.value=FA.dashSize+FA.gapSize,Ae.scale.value=FA.scale}function Xe(Ae,FA,At,Pe){Ae.diffuse.value.copy(FA.color),Ae.opacity.value=FA.opacity,Ae.size.value=FA.size*At,Ae.scale.value=Pe*.5,FA.map&&(Ae.map.value=FA.map,F(FA.map,Ae.uvTransform)),FA.alphaMap&&(Ae.alphaMap.value=FA.alphaMap,F(FA.alphaMap,Ae.alphaMapTransform)),FA.alphaTest>0&&(Ae.alphaTest.value=FA.alphaTest)}function Le(Ae,FA){Ae.diffuse.value.copy(FA.color),Ae.opacity.value=FA.opacity,Ae.rotation.value=FA.rotation,FA.map&&(Ae.map.value=FA.map,F(FA.map,Ae.mapTransform)),FA.alphaMap&&(Ae.alphaMap.value=FA.alphaMap,F(FA.alphaMap,Ae.alphaMapTransform)),FA.alphaTest>0&&(Ae.alphaTest.value=FA.alphaTest)}function be(Ae,FA){Ae.specular.value.copy(FA.specular),Ae.shininess.value=Math.max(FA.shininess,1e-4)}function se(Ae,FA){FA.gradientMap&&(Ae.gradientMap.value=FA.gradientMap)}function Ge(Ae,FA){Ae.metalness.value=FA.metalness,FA.metalnessMap&&(Ae.metalnessMap.value=FA.metalnessMap,F(FA.metalnessMap,Ae.metalnessMapTransform)),Ae.roughness.value=FA.roughness,FA.roughnessMap&&(Ae.roughnessMap.value=FA.roughnessMap,F(FA.roughnessMap,Ae.roughnessMapTransform)),FA.envMap&&(Ae.envMapIntensity.value=FA.envMapIntensity)}function je(Ae,FA,At){Ae.ior.value=FA.ior,FA.sheen>0&&(Ae.sheenColor.value.copy(FA.sheenColor).multiplyScalar(FA.sheen),Ae.sheenRoughness.value=FA.sheenRoughness,FA.sheenColorMap&&(Ae.sheenColorMap.value=FA.sheenColorMap,F(FA.sheenColorMap,Ae.sheenColorMapTransform)),FA.sheenRoughnessMap&&(Ae.sheenRoughnessMap.value=FA.sheenRoughnessMap,F(FA.sheenRoughnessMap,Ae.sheenRoughnessMapTransform))),FA.clearcoat>0&&(Ae.clearcoat.value=FA.clearcoat,Ae.clearcoatRoughness.value=FA.clearcoatRoughness,FA.clearcoatMap&&(Ae.clearcoatMap.value=FA.clearcoatMap,F(FA.clearcoatMap,Ae.clearcoatMapTransform)),FA.clearcoatRoughnessMap&&(Ae.clearcoatRoughnessMap.value=FA.clearcoatRoughnessMap,F(FA.clearcoatRoughnessMap,Ae.clearcoatRoughnessMapTransform)),FA.clearcoatNormalMap&&(Ae.clearcoatNormalMap.value=FA.clearcoatNormalMap,F(FA.clearcoatNormalMap,Ae.clearcoatNormalMapTransform),Ae.clearcoatNormalScale.value.copy(FA.clearcoatNormalScale),FA.side===s.BackSide&&Ae.clearcoatNormalScale.value.negate())),FA.dispersion>0&&(Ae.dispersion.value=FA.dispersion),FA.iridescence>0&&(Ae.iridescence.value=FA.iridescence,Ae.iridescenceIOR.value=FA.iridescenceIOR,Ae.iridescenceThicknessMinimum.value=FA.iridescenceThicknessRange[0],Ae.iridescenceThicknessMaximum.value=FA.iridescenceThicknessRange[1],FA.iridescenceMap&&(Ae.iridescenceMap.value=FA.iridescenceMap,F(FA.iridescenceMap,Ae.iridescenceMapTransform)),FA.iridescenceThicknessMap&&(Ae.iridescenceThicknessMap.value=FA.iridescenceThicknessMap,F(FA.iridescenceThicknessMap,Ae.iridescenceThicknessMapTransform))),FA.transmission>0&&(Ae.transmission.value=FA.transmission,Ae.transmissionSamplerMap.value=At.texture,Ae.transmissionSamplerSize.value.set(At.width,At.height),FA.transmissionMap&&(Ae.transmissionMap.value=FA.transmissionMap,F(FA.transmissionMap,Ae.transmissionMapTransform)),Ae.thickness.value=FA.thickness,FA.thicknessMap&&(Ae.thicknessMap.value=FA.thicknessMap,F(FA.thicknessMap,Ae.thicknessMapTransform)),Ae.attenuationDistance.value=FA.attenuationDistance,Ae.attenuationColor.value.copy(FA.attenuationColor)),FA.anisotropy>0&&(Ae.anisotropyVector.value.set(FA.anisotropy*Math.cos(FA.anisotropyRotation),FA.anisotropy*Math.sin(FA.anisotropyRotation)),FA.anisotropyMap&&(Ae.anisotropyMap.value=FA.anisotropyMap,F(FA.anisotropyMap,Ae.anisotropyMapTransform))),Ae.specularIntensity.value=FA.specularIntensity,Ae.specularColor.value.copy(FA.specularColor),FA.specularColorMap&&(Ae.specularColorMap.value=FA.specularColorMap,F(FA.specularColorMap,Ae.specularColorMapTransform)),FA.specularIntensityMap&&(Ae.specularIntensityMap.value=FA.specularIntensityMap,F(FA.specularIntensityMap,Ae.specularIntensityMapTransform))}function ve(Ae,FA){FA.matcap&&(Ae.matcap.value=FA.matcap)}function Ve(Ae,FA){const At=J.get(FA).light;Ae.referencePosition.value.setFromMatrixPosition(At.matrixWorld),Ae.nearDistance.value=At.shadow.camera.near,Ae.farDistance.value=At.shadow.camera.far}return{refreshFogUniforms:sA,refreshMaterialUniforms:MA}}function qA(E,J,F,sA){let MA={},dA={},PA=[];const OA=E.getParameter(E.MAX_UNIFORM_BUFFER_BINDINGS);function Xe(At,Pe){const at=Pe.program;sA.uniformBlockBinding(At,at)}function Le(At,Pe){let at=MA[At.id];at===void 0&&(ve(At),at=be(At),MA[At.id]=at,At.addEventListener("dispose",Ae));const et=Pe.program;sA.updateUBOMapping(At,et);const rt=J.render.frame;dA[At.id]!==rt&&(Ge(At),dA[At.id]=rt)}function be(At){const Pe=se();At.__bindingPointIndex=Pe;const at=E.createBuffer(),et=At.__size,rt=At.usage;return E.bindBuffer(E.UNIFORM_BUFFER,at),E.bufferData(E.UNIFORM_BUFFER,et,rt),E.bindBuffer(E.UNIFORM_BUFFER,null),E.bindBufferBase(E.UNIFORM_BUFFER,Pe,at),at}function se(){for(let At=0;At<OA;At++)if(PA.indexOf(At)===-1)return PA.push(At),At;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function Ge(At){const Pe=MA[At.id],at=At.uniforms,et=At.__cache;E.bindBuffer(E.UNIFORM_BUFFER,Pe);for(let rt=0,Bt=at.length;rt<Bt;rt++){const Dt=Array.isArray(at[rt])?at[rt]:[at[rt]];for(let ce=0,oe=Dt.length;ce<oe;ce++){const it=Dt[ce];if(je(it,rt,ce,et)===!0){const $t=it.__offset,ht=Array.isArray(it.value)?it.value:[it.value];let mt=0;for(let mi=0;mi<ht.length;mi++){const Jt=ht[mi],Bi=Ve(Jt);typeof Jt=="number"||typeof Jt=="boolean"?(it.__data[0]=Jt,E.bufferSubData(E.UNIFORM_BUFFER,$t+mt,it.__data)):Jt.isMatrix3?(it.__data[0]=Jt.elements[0],it.__data[1]=Jt.elements[1],it.__data[2]=Jt.elements[2],it.__data[3]=0,it.__data[4]=Jt.elements[3],it.__data[5]=Jt.elements[4],it.__data[6]=Jt.elements[5],it.__data[7]=0,it.__data[8]=Jt.elements[6],it.__data[9]=Jt.elements[7],it.__data[10]=Jt.elements[8],it.__data[11]=0):(Jt.toArray(it.__data,mt),mt+=Bi.storage/Float32Array.BYTES_PER_ELEMENT)}E.bufferSubData(E.UNIFORM_BUFFER,$t,it.__data)}}}E.bindBuffer(E.UNIFORM_BUFFER,null)}function je(At,Pe,at,et){const rt=At.value,Bt=Pe+"_"+at;if(et[Bt]===void 0)return typeof rt=="number"||typeof rt=="boolean"?et[Bt]=rt:et[Bt]=rt.clone(),!0;{const Dt=et[Bt];if(typeof rt=="number"||typeof rt=="boolean"){if(Dt!==rt)return et[Bt]=rt,!0}else if(Dt.equals(rt)===!1)return Dt.copy(rt),!0}return!1}function ve(At){const Pe=At.uniforms;let at=0;const et=16;for(let Bt=0,Dt=Pe.length;Bt<Dt;Bt++){const ce=Array.isArray(Pe[Bt])?Pe[Bt]:[Pe[Bt]];for(let oe=0,it=ce.length;oe<it;oe++){const $t=ce[oe],ht=Array.isArray($t.value)?$t.value:[$t.value];for(let mt=0,mi=ht.length;mt<mi;mt++){const Jt=ht[mt],Bi=Ve(Jt),_t=at%et,vt=_t%Bi.boundary,yn=_t+vt;at+=vt,yn!==0&&et-yn<Bi.storage&&(at+=et-yn),$t.__data=new Float32Array(Bi.storage/Float32Array.BYTES_PER_ELEMENT),$t.__offset=at,at+=Bi.storage}}}const rt=at%et;return rt>0&&(at+=et-rt),At.__size=at,At.__cache={},this}function Ve(At){const Pe={boundary:0,storage:0};return typeof At=="number"||typeof At=="boolean"?(Pe.boundary=4,Pe.storage=4):At.isVector2?(Pe.boundary=8,Pe.storage=8):At.isVector3||At.isColor?(Pe.boundary=16,Pe.storage=12):At.isVector4?(Pe.boundary=16,Pe.storage=16):At.isMatrix3?(Pe.boundary=48,Pe.storage=48):At.isMatrix4?(Pe.boundary=64,Pe.storage=64):At.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",At),Pe}function Ae(At){const Pe=At.target;Pe.removeEventListener("dispose",Ae);const at=PA.indexOf(Pe.__bindingPointIndex);PA.splice(at,1),E.deleteBuffer(MA[Pe.id]),delete MA[Pe.id],delete dA[Pe.id]}function FA(){for(const At in MA)E.deleteBuffer(MA[At]);PA=[],MA={},dA={}}return{bind:Xe,update:Le,dispose:FA}}class de{constructor(J={}){const{canvas:F=(0,s.createCanvasElement)(),context:sA=null,depth:MA=!0,stencil:dA=!1,alpha:PA=!1,antialias:OA=!1,premultipliedAlpha:Xe=!0,preserveDrawingBuffer:Le=!1,powerPreference:be="default",failIfMajorPerformanceCaveat:se=!1,reverseDepthBuffer:Ge=!1,multiviewStereo:je=!1}=J;this.isWebGLRenderer=!0;let ve;if(sA!==null){if(typeof WebGLRenderingContext<"u"&&sA instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");ve=sA.getContextAttributes().alpha}else ve=PA;const Ve=new Uint32Array(4),Ae=new Int32Array(4);let FA=null,At=null;const Pe=[],at=[];this.domElement=F,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=s.SRGBColorSpace,this.toneMapping=s.NoToneMapping,this.toneMappingExposure=1;const et=this;let rt=!1,Bt=0,Dt=0,ce=null,oe=-1,it=null;const $t=new s.Vector4,ht=new s.Vector4;let mt=null;const mi=new s.Color(0);let Jt=0,Bi=F.width,_t=F.height,vt=1,yn=null,Xn=null;const Gr=new s.Vector4(0,0,Bi,_t),co=new s.Vector4(0,0,Bi,_t);let Ar=!1;const Fr=new s.Frustum;let an=!1,li=!1;this.transmissionResolutionScale=1;const Zt=new s.Matrix4,yi=new s.Matrix4,Oi=new s.Vector3,to=new s.Vector4,io={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let bo=!1;function So(){return ce===null?vt:1}let he=sA;function fs(WA,qe){return F.getContext(WA,qe)}try{const WA={alpha:!0,depth:MA,stencil:dA,antialias:OA,premultipliedAlpha:Xe,preserveDrawingBuffer:Le,powerPreference:be,failIfMajorPerformanceCaveat:se};if("setAttribute"in F&&F.setAttribute("data-engine",`three.js r${s.REVISION}`),F.addEventListener("webglcontextlost",$i,!1),F.addEventListener("webglcontextrestored",zn,!1),F.addEventListener("webglcontextcreationerror",Ni,!1),he===null){const qe="webgl2";if(he=fs(qe,WA),he===null)throw fs(qe)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(WA){throw console.error("THREE.WebGLRenderer: "+WA.message),WA}let fn,ko,cn,nr,wn,qi,Rn,Es,mo,Se,bA,ot,Wt,kt,Ht,ji,ci,Yi,Jn,di,Mn,ro,ke,Tt,ti;function bi(){fn=new vi(he),fn.init(),ke=new Pg(he,fn),ko=new re(he,fn,J,ke),cn=new GI(he,fn),ko.reverseDepthBuffer&&Ge&&cn.buffers.depth.setReversed(!0),nr=new Ja(he),wn=new tn,qi=new bs(he,fn,cn,wn,ko,ke,nr),Rn=new Ke(et),Es=new dg(et),mo=new _(he),Tt=new LA(he,mo),Se=new fo(he,mo,nr,Tt),bA=new fg(he,Se,mo,nr),di=new ug(he,ko,qi),ji=new Te(wn),ot=new Tr(et,Rn,Es,fn,ko,Tt,ji),Wt=new GA(et,wn),kt=new Cg,Ht=new eg(fn),Jn=new eA(et,Rn,Es,cn,bA,ve,Xe),Yi=new zg(et,fn,he),ci=new As(et,bA,ko),ti=new qA(he,nr,ko,cn),Mn=new $A(he,fn,nr),ro=new Yg(he,fn,nr),nr.programs=ot.programs,et.capabilities=ko,et.extensions=fn,et.properties=wn,et.renderLists=kt,et.shadowMap=ci,et.state=cn,et.info=nr}bi();const Ri=new L(et,he);this.xr=Ri,this.getContext=function(){return he},this.getContextAttributes=function(){return he.getContextAttributes()},this.forceContextLoss=function(){const WA=fn.get("WEBGL_lose_context");WA&&WA.loseContext()},this.forceContextRestore=function(){const WA=fn.get("WEBGL_lose_context");WA&&WA.restoreContext()},this.getPixelRatio=function(){return vt},this.setPixelRatio=function(WA){WA!==void 0&&(vt=WA,this.setSize(Bi,_t,!1))},this.getSize=function(WA){return WA.set(Bi,_t)},this.setSize=function(WA,qe,It=!0){if(Ri.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}Bi=WA,_t=qe,F.width=Math.floor(WA*vt),F.height=Math.floor(qe*vt),It===!0&&(F.style.width=WA+"px",F.style.height=qe+"px"),this.setViewport(0,0,WA,qe)},this.getDrawingBufferSize=function(WA){return WA.set(Bi*vt,_t*vt).floor()},this.setDrawingBufferSize=function(WA,qe,It){Bi=WA,_t=qe,vt=It,F.width=Math.floor(WA*It),F.height=Math.floor(qe*It),this.setViewport(0,0,WA,qe)},this.getCurrentViewport=function(WA){return WA.copy($t)},this.getViewport=function(WA){return WA.copy(Gr)},this.setViewport=function(WA,qe,It,lt){WA.isVector4?Gr.set(WA.x,WA.y,WA.z,WA.w):Gr.set(WA,qe,It,lt),cn.viewport($t.copy(Gr).multiplyScalar(vt).round())},this.getScissor=function(WA){return WA.copy(co)},this.setScissor=function(WA,qe,It,lt){WA.isVector4?co.set(WA.x,WA.y,WA.z,WA.w):co.set(WA,qe,It,lt),cn.scissor(ht.copy(co).multiplyScalar(vt).round())},this.getScissorTest=function(){return Ar},this.setScissorTest=function(WA){cn.setScissorTest(Ar=WA)},this.setOpaqueSort=function(WA){yn=WA},this.setTransparentSort=function(WA){Xn=WA},this.getClearColor=function(WA){return WA.copy(Jn.getClearColor())},this.setClearColor=function(){Jn.setClearColor.apply(Jn,arguments)},this.getClearAlpha=function(){return Jn.getClearAlpha()},this.setClearAlpha=function(){Jn.setClearAlpha.apply(Jn,arguments)},this.clear=function(WA=!0,qe=!0,It=!0){let lt=0;if(WA){let ze=!1;if(ce!==null){const Ii=ce.texture.format;ze=Ii===s.RGBAIntegerFormat||Ii===s.RGIntegerFormat||Ii===s.RedIntegerFormat}if(ze){const Ii=ce.texture.type,Ki=Ii===s.UnsignedByteType||Ii===s.UnsignedIntType||Ii===s.UnsignedShortType||Ii===s.UnsignedInt248Type||Ii===s.UnsignedShort4444Type||Ii===s.UnsignedShort5551Type,rn=Jn.getClearColor(),gn=Jn.getClearAlpha(),ho=rn.r,uo=rn.g,Tn=rn.b;Ki?(Ve[0]=ho,Ve[1]=uo,Ve[2]=Tn,Ve[3]=gn,he.clearBufferuiv(he.COLOR,0,Ve)):(Ae[0]=ho,Ae[1]=uo,Ae[2]=Tn,Ae[3]=gn,he.clearBufferiv(he.COLOR,0,Ae))}else lt|=he.COLOR_BUFFER_BIT}qe&&(lt|=he.DEPTH_BUFFER_BIT),It&&(lt|=he.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),he.clear(lt)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){F.removeEventListener("webglcontextlost",$i,!1),F.removeEventListener("webglcontextrestored",zn,!1),F.removeEventListener("webglcontextcreationerror",Ni,!1),Jn.dispose(),kt.dispose(),Ht.dispose(),wn.dispose(),Rn.dispose(),Es.dispose(),bA.dispose(),Tt.dispose(),ti.dispose(),ot.dispose(),Ri.dispose(),Ri.removeEventListener("sessionstart",xa),Ri.removeEventListener("sessionend",kC),Ya.stop()};function $i(WA){WA.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),rt=!0}function zn(){console.log("THREE.WebGLRenderer: Context Restored."),rt=!1;const WA=nr.autoReset,qe=ci.enabled,It=ci.autoUpdate,lt=ci.needsUpdate,ze=ci.type;bi(),nr.autoReset=WA,ci.enabled=qe,ci.autoUpdate=It,ci.needsUpdate=lt,ci.type=ze}function Ni(WA){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",WA.statusMessage)}function Ui(WA){const qe=WA.target;qe.removeEventListener("dispose",Ui),on(qe)}function on(WA){or(WA),wn.remove(WA)}function or(WA){const qe=wn.get(WA).programs;qe!==void 0&&(qe.forEach(function(It){ot.releaseProgram(It)}),WA.isShaderMaterial&&ot.releaseShaderCache(WA))}this.renderBufferDirect=function(WA,qe,It,lt,ze,Ii){qe===null&&(qe=io);const Ki=ze.isMesh&&ze.matrixWorld.determinant()<0,rn=kg(WA,qe,It,lt,ze);cn.setMaterial(lt,Ki);let gn=It.index,ho=1;if(lt.wireframe===!0){if(gn=Se.getWireframeAttribute(It),gn===void 0)return;ho=2}const uo=It.drawRange,Tn=It.attributes.position;let Vo=uo.start*ho,Dr=(uo.start+uo.count)*ho;Ii!==null&&(Vo=Math.max(Vo,Ii.start*ho),Dr=Math.min(Dr,(Ii.start+Ii.count)*ho)),gn!==null?(Vo=Math.max(Vo,0),Dr=Math.min(Dr,gn.count)):Tn!=null&&(Vo=Math.max(Vo,0),Dr=Math.min(Dr,Tn.count));const _s=Dr-Vo;if(_s<0||_s===1/0)return;Tt.setup(ze,lt,rn,It,gn);let ws,rr=Mn;if(gn!==null&&(ws=mo.get(gn),rr=ro,rr.setIndex(ws)),ze.isMesh)lt.wireframe===!0?(cn.setLineWidth(lt.wireframeLinewidth*So()),rr.setMode(he.LINES)):rr.setMode(he.TRIANGLES);else if(ze.isLine){let wg=lt.linewidth;wg===void 0&&(wg=1),cn.setLineWidth(wg*So()),ze.isLineSegments?rr.setMode(he.LINES):ze.isLineLoop?rr.setMode(he.LINE_LOOP):rr.setMode(he.LINE_STRIP)}else ze.isPoints?rr.setMode(he.POINTS):ze.isSprite&&rr.setMode(he.TRIANGLES);if(ze.isBatchedMesh)if(ze._multiDrawInstances!==null)rr.renderMultiDrawInstances(ze._multiDrawStarts,ze._multiDrawCounts,ze._multiDrawCount,ze._multiDrawInstances);else if(fn.get("WEBGL_multi_draw"))rr.renderMultiDraw(ze._multiDrawStarts,ze._multiDrawCounts,ze._multiDrawCount);else{const wg=ze._multiDrawStarts,Hn=ze._multiDrawCounts,XI=ze._multiDrawCount,sr=gn?mo.get(gn).bytesPerElement:1,_g=wn.get(lt).currentProgram.getUniforms();for(let ba=0;ba<XI;ba++)_g.setValue(he,"_gl_DrawID",ba),rr.render(wg[ba]/sr,Hn[ba])}else if(ze.isInstancedMesh)rr.renderInstances(Vo,_s,ze.count);else if(It.isInstancedBufferGeometry){const wg=It._maxInstanceCount!==void 0?It._maxInstanceCount:1/0,Hn=Math.min(It.instanceCount,wg);rr.renderInstances(Vo,_s,Hn)}else rr.render(Vo,_s)};function zr(WA,qe,It){WA.transparent===!0&&WA.side===s.DoubleSide&&WA.forceSinglePass===!1?(WA.side=s.BackSide,WA.needsUpdate=!0,FI(WA,qe,It),WA.side=s.FrontSide,WA.needsUpdate=!0,FI(WA,qe,It),WA.side=s.DoubleSide):FI(WA,qe,It)}this.compile=function(WA,qe,It=null){It===null&&(It=WA),At=Ht.get(It),At.init(qe),at.push(At),It.traverseVisible(function(ze){ze.isLight&&ze.layers.test(qe.layers)&&(At.pushLight(ze),ze.castShadow&&At.pushShadow(ze))}),WA!==It&&WA.traverseVisible(function(ze){ze.isLight&&ze.layers.test(qe.layers)&&(At.pushLight(ze),ze.castShadow&&At.pushShadow(ze))}),At.setupLights();const lt=new Set;return WA.traverse(function(ze){if(!(ze.isMesh||ze.isPoints||ze.isLine||ze.isSprite))return;const Ii=ze.material;if(Ii)if(Array.isArray(Ii))for(let Ki=0;Ki<Ii.length;Ki++){const rn=Ii[Ki];zr(rn,It,ze),lt.add(rn)}else zr(Ii,It,ze),lt.add(Ii)}),at.pop(),At=null,lt},this.compileAsync=function(WA,qe,It=null){const lt=this.compile(WA,qe,It);return new Promise(ze=>{function Ii(){if(lt.forEach(function(Ki){wn.get(Ki).currentProgram.isReady()&&lt.delete(Ki)}),lt.size===0){ze(WA);return}setTimeout(Ii,10)}fn.get("KHR_parallel_shader_compile")!==null?Ii():setTimeout(Ii,10)})};let ks=null;function Xa(WA){ks&&ks(WA)}function xa(){Ya.stop()}function kC(){Ya.start()}const Ya=new z;Ya.setAnimationLoop(Xa),typeof self<"u"&&Ya.setContext(self),this.setAnimationLoop=function(WA){ks=WA,Ri.setAnimationLoop(WA),WA===null?Ya.stop():Ya.start()},Ri.addEventListener("sessionstart",xa),Ri.addEventListener("sessionend",kC),this.render=function(WA,qe){if(qe!==void 0&&qe.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(rt===!0)return;if(WA.matrixWorldAutoUpdate===!0&&WA.updateMatrixWorld(),qe.parent===null&&qe.matrixWorldAutoUpdate===!0&&qe.updateMatrixWorld(),Ri.enabled===!0&&Ri.isPresenting===!0&&(Ri.cameraAutoUpdate===!0&&Ri.updateCamera(qe),qe=Ri.getCamera()),WA.isScene===!0&&WA.onBeforeRender(et,WA,qe,ce),At=Ht.get(WA,at.length),At.init(qe),at.push(At),yi.multiplyMatrices(qe.projectionMatrix,qe.matrixWorldInverse),Fr.setFromProjectionMatrix(yi),li=this.localClippingEnabled,an=ji.init(this.clippingPlanes,li),FA=kt.get(WA,Pe.length),FA.init(),Pe.push(FA),Ri.enabled===!0&&Ri.isPresenting===!0){const Ii=et.xr.getDepthSensingMesh();Ii!==null&&EI(Ii,qe,-1/0,et.sortObjects)}EI(WA,qe,0,et.sortObjects),FA.finish(),et.sortObjects===!0&&FA.sort(yn,Xn),bo=Ri.enabled===!1||Ri.isPresenting===!1||Ri.hasDepthSensing()===!1,bo&&Jn.addToRenderList(FA,WA),this.info.render.frame++,an===!0&&ji.beginShadows();const It=At.state.shadowsArray;ci.render(It,WA,qe),an===!0&&ji.endShadows(),this.info.autoReset===!0&&this.info.reset();const lt=FA.opaque,ze=FA.transmissive;if(At.setupLights(),qe.isArrayCamera){const Ii=qe.cameras;if(ze.length>0)for(let Ki=0,rn=Ii.length;Ki<rn;Ki++){const gn=Ii[Ki];$B(lt,ze,WA,gn)}if(bo&&Jn.render(WA),Ri.enabled&&Ri.isMultiview)qi.setDeferTextureUploads(!0),QI(FA,WA,qe,qe.cameras[0].viewport);else for(let Ki=0,rn=Ii.length;Ki<rn;Ki++){const gn=Ii[Ki];QI(FA,WA,gn,gn.viewport)}}else ze.length>0&&$B(lt,ze,WA,qe),bo&&Jn.render(WA),QI(FA,WA,qe);ce!==null&&Dt===0&&(qi.updateMultisampleRenderTarget(ce),qi.updateRenderTargetMipmap(ce)),WA.isScene===!0&&WA.onAfterRender(et,WA,qe),Tt.resetDefaultState(),oe=-1,it=null,at.pop(),at.length>0?(At=at[at.length-1],an===!0&&ji.setGlobalState(et.clippingPlanes,At.state.camera)):At=null,Pe.pop(),Pe.length>0?FA=Pe[Pe.length-1]:FA=null};function EI(WA,qe,It,lt){if(WA.visible===!1)return;if(WA.layers.test(qe.layers)){if(WA.isGroup)It=WA.renderOrder;else if(WA.isLOD)WA.autoUpdate===!0&&WA.update(qe);else if(WA.isLight)At.pushLight(WA),WA.castShadow&&At.pushShadow(WA);else if(WA.isSprite){if(!WA.frustumCulled||Fr.intersectsSprite(WA)){lt&&to.setFromMatrixPosition(WA.matrixWorld).applyMatrix4(yi);const Ki=bA.update(WA),rn=WA.material;rn.visible&&FA.push(WA,Ki,rn,It,to.z,null)}}else if((WA.isMesh||WA.isLine||WA.isPoints)&&(!WA.frustumCulled||Fr.intersectsObject(WA))){const Ki=bA.update(WA),rn=WA.material;if(lt&&(WA.boundingSphere!==void 0?(WA.boundingSphere===null&&WA.computeBoundingSphere(),to.copy(WA.boundingSphere.center)):(Ki.boundingSphere===null&&Ki.computeBoundingSphere(),to.copy(Ki.boundingSphere.center)),to.applyMatrix4(WA.matrixWorld).applyMatrix4(yi)),Array.isArray(rn)){const gn=Ki.groups;for(let ho=0,uo=gn.length;ho<uo;ho++){const Tn=gn[ho],Vo=rn[Tn.materialIndex];Vo&&Vo.visible&&FA.push(WA,Ki,Vo,It,to.z,Tn)}}else rn.visible&&FA.push(WA,Ki,rn,It,to.z,null)}}const Ii=WA.children;for(let Ki=0,rn=Ii.length;Ki<rn;Ki++)EI(Ii[Ki],qe,It,lt)}function QI(WA,qe,It,lt){const ze=WA.opaque,Ii=WA.transmissive,Ki=WA.transparent;At.setupLightsView(It),an===!0&&ji.setGlobalState(et.clippingPlanes,It),lt&&cn.viewport($t.copy(lt)),ze.length>0&&_C(ze,qe,It),Ii.length>0&&_C(Ii,qe,It),Ki.length>0&&_C(Ki,qe,It),cn.buffers.depth.setTest(!0),cn.buffers.depth.setMask(!0),cn.buffers.color.setMask(!0),cn.setPolygonOffset(!1)}function $B(WA,qe,It,lt){if((It.isScene===!0?It.overrideMaterial:null)!==null)return;At.state.transmissionRenderTarget[lt.id]===void 0&&(At.state.transmissionRenderTarget[lt.id]=new s.WebGLRenderTarget(1,1,{generateMipmaps:!0,type:fn.has("EXT_color_buffer_half_float")||fn.has("EXT_color_buffer_float")?s.HalfFloatType:s.UnsignedByteType,minFilter:s.LinearMipmapLinearFilter,samples:4,stencilBuffer:dA,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:s.ColorManagement.workingColorSpace}));const Ii=At.state.transmissionRenderTarget[lt.id],Ki=lt.viewport||$t;Ii.setSize(Ki.z*et.transmissionResolutionScale,Ki.w*et.transmissionResolutionScale);const rn=et.getRenderTarget();et.setRenderTarget(Ii),et.getClearColor(mi),Jt=et.getClearAlpha(),Jt<1&&et.setClearColor(16777215,.5),et.clear(),bo&&Jn.render(It);const gn=et.toneMapping;et.toneMapping=s.NoToneMapping;const ho=lt.viewport;if(lt.viewport!==void 0&&(lt.viewport=void 0),At.setupLightsView(lt),an===!0&&ji.setGlobalState(et.clippingPlanes,lt),_C(WA,It,lt),qi.updateMultisampleRenderTarget(Ii),qi.updateRenderTargetMipmap(Ii),fn.has("WEBGL_multisampled_render_to_texture")===!1){let uo=!1;for(let Tn=0,Vo=qe.length;Tn<Vo;Tn++){const Dr=qe[Tn],_s=Dr.object,ws=Dr.geometry,rr=Dr.material,wg=Dr.group;if(rr.side===s.DoubleSide&&_s.layers.test(lt.layers)){const Hn=rr.side;rr.side=s.BackSide,rr.needsUpdate=!0,sC(_s,It,lt,ws,rr,wg),rr.side=Hn,rr.needsUpdate=!0,uo=!0}}uo===!0&&(qi.updateMultisampleRenderTarget(Ii),qi.updateRenderTargetMipmap(Ii))}et.setRenderTarget(rn),et.setClearColor(mi,Jt),ho!==void 0&&(lt.viewport=ho),et.toneMapping=gn}function _C(WA,qe,It){const lt=qe.isScene===!0?qe.overrideMaterial:null;for(let ze=0,Ii=WA.length;ze<Ii;ze++){const Ki=WA[ze],rn=Ki.object,gn=Ki.geometry,ho=lt===null?Ki.material:lt,uo=Ki.group;rn.layers.test(It.layers)&&sC(rn,qe,It,gn,ho,uo)}}function sC(WA,qe,It,lt,ze,Ii){WA.onBeforeRender(et,qe,It,lt,ze,Ii),WA.modelViewMatrix.multiplyMatrices(It.matrixWorldInverse,WA.matrixWorld),WA.normalMatrix.getNormalMatrix(WA.modelViewMatrix),ze.onBeforeRender(et,qe,It,lt,WA,Ii),ze.transparent===!0&&ze.side===s.DoubleSide&&ze.forceSinglePass===!1?(ze.side=s.BackSide,ze.needsUpdate=!0,et.renderBufferDirect(It,qe,lt,ze,WA,Ii),ze.side=s.FrontSide,ze.needsUpdate=!0,et.renderBufferDirect(It,qe,lt,ze,WA,Ii),ze.side=s.DoubleSide):et.renderBufferDirect(It,qe,lt,ze,WA,Ii),WA.onAfterRender(et,qe,It,lt,ze,Ii)}function FI(WA,qe,It){qe.isScene!==!0&&(qe=io);const lt=wn.get(WA),ze=At.state.lights,Ii=At.state.shadowsArray,Ki=ze.state.version,rn=ot.getParameters(WA,ze.state,Ii,qe,It),gn=ot.getProgramCacheKey(rn);let ho=lt.programs;lt.environment=WA.isMeshStandardMaterial?qe.environment:null,lt.fog=qe.fog,lt.envMap=(WA.isMeshStandardMaterial?Es:Rn).get(WA.envMap||lt.environment),lt.envMapRotation=lt.environment!==null&&WA.envMap===null?qe.environmentRotation:WA.envMapRotation,ho===void 0&&(WA.addEventListener("dispose",Ui),ho=new Map,lt.programs=ho);let uo=ho.get(gn);if(uo!==void 0){if(lt.currentProgram===uo&&lt.lightsStateVersion===Ki)return gC(WA,rn),uo}else rn.uniforms=ot.getUniforms(WA),WA.onBeforeCompile(rn,et),uo=ot.acquireProgram(rn,gn),ho.set(gn,uo),lt.uniforms=rn.uniforms;const Tn=lt.uniforms;return(!WA.isShaderMaterial&&!WA.isRawShaderMaterial||WA.clipping===!0)&&(Tn.clippingPlanes=ji.uniform),gC(WA,rn),lt.needsLights=AB(WA),lt.lightsStateVersion=Ki,lt.needsLights&&(Tn.ambientLightColor.value=ze.state.ambient,Tn.lightProbe.value=ze.state.probe,Tn.directionalLights.value=ze.state.directional,Tn.directionalLightShadows.value=ze.state.directionalShadow,Tn.spotLights.value=ze.state.spot,Tn.spotLightShadows.value=ze.state.spotShadow,Tn.rectAreaLights.value=ze.state.rectArea,Tn.ltc_1.value=ze.state.rectAreaLTC1,Tn.ltc_2.value=ze.state.rectAreaLTC2,Tn.pointLights.value=ze.state.point,Tn.pointLightShadows.value=ze.state.pointShadow,Tn.hemisphereLights.value=ze.state.hemi,Tn.directionalShadowMap.value=ze.state.directionalShadowMap,Tn.directionalShadowMatrix.value=ze.state.directionalShadowMatrix,Tn.spotShadowMap.value=ze.state.spotShadowMap,Tn.spotLightMatrix.value=ze.state.spotLightMatrix,Tn.spotLightMap.value=ze.state.spotLightMap,Tn.pointShadowMap.value=ze.state.pointShadowMap,Tn.pointShadowMatrix.value=ze.state.pointShadowMatrix),lt.currentProgram=uo,lt.uniformsList=null,uo}function $C(WA){if(WA.uniformsList===null){const qe=WA.currentProgram.getUniforms();WA.uniformsList=zo.seqWithValue(qe.seq,WA.uniforms)}return WA.uniformsList}function gC(WA,qe){const It=wn.get(WA);It.outputColorSpace=qe.outputColorSpace,It.batching=qe.batching,It.batchingColor=qe.batchingColor,It.instancing=qe.instancing,It.instancingColor=qe.instancingColor,It.instancingMorph=qe.instancingMorph,It.skinning=qe.skinning,It.morphTargets=qe.morphTargets,It.morphNormals=qe.morphNormals,It.morphColors=qe.morphColors,It.morphTargetsCount=qe.morphTargetsCount,It.numClippingPlanes=qe.numClippingPlanes,It.numIntersection=qe.numClipIntersection,It.vertexAlphas=qe.vertexAlphas,It.vertexTangents=qe.vertexTangents,It.toneMapping=qe.toneMapping,It.numMultiviewViews=qe.numMultiviewViews}function kg(WA,qe,It,lt,ze){qe.isScene!==!0&&(qe=io),qi.resetTextureUnits();const Ii=qe.fog,Ki=lt.isMeshStandardMaterial?qe.environment:null,rn=ce===null?et.outputColorSpace:ce.isXRRenderTarget===!0?ce.texture.colorSpace:s.LinearSRGBColorSpace,gn=(lt.isMeshStandardMaterial?Es:Rn).get(lt.envMap||Ki),ho=lt.vertexColors===!0&&!!It.attributes.color&&It.attributes.color.itemSize===4,uo=!!It.attributes.tangent&&(!!lt.normalMap||lt.anisotropy>0),Tn=!!It.morphAttributes.position,Vo=!!It.morphAttributes.normal,Dr=!!It.morphAttributes.color;let _s=s.NoToneMapping;lt.toneMapped&&(ce===null||ce.isXRRenderTarget===!0)&&(_s=et.toneMapping);const ws=ce&&ce.isWebGLMultiviewRenderTarget?ce.numViews:0,rr=It.morphAttributes.position||It.morphAttributes.normal||It.morphAttributes.color,wg=rr!==void 0?rr.length:0,Hn=wn.get(lt),XI=At.state.lights;if(an===!0&&(li===!0||WA!==it)){const Ps=WA===it&&lt.id===oe;ji.setState(lt,WA,Ps)}let sr=!1;lt.version===Hn.__version?(Hn.needsLights&&Hn.lightsStateVersion!==XI.state.version||Hn.outputColorSpace!==rn||ze.isBatchedMesh&&Hn.batching===!1||!ze.isBatchedMesh&&Hn.batching===!0||ze.isBatchedMesh&&Hn.batchingColor===!0&&ze.colorTexture===null||ze.isBatchedMesh&&Hn.batchingColor===!1&&ze.colorTexture!==null||ze.isInstancedMesh&&Hn.instancing===!1||!ze.isInstancedMesh&&Hn.instancing===!0||ze.isSkinnedMesh&&Hn.skinning===!1||!ze.isSkinnedMesh&&Hn.skinning===!0||ze.isInstancedMesh&&Hn.instancingColor===!0&&ze.instanceColor===null||ze.isInstancedMesh&&Hn.instancingColor===!1&&ze.instanceColor!==null||ze.isInstancedMesh&&Hn.instancingMorph===!0&&ze.morphTexture===null||ze.isInstancedMesh&&Hn.instancingMorph===!1&&ze.morphTexture!==null||Hn.envMap!==gn||lt.fog===!0&&Hn.fog!==Ii||Hn.numClippingPlanes!==void 0&&(Hn.numClippingPlanes!==ji.numPlanes||Hn.numIntersection!==ji.numIntersection)||Hn.vertexAlphas!==ho||Hn.vertexTangents!==uo||Hn.morphTargets!==Tn||Hn.morphNormals!==Vo||Hn.morphColors!==Dr||Hn.toneMapping!==_s||Hn.morphTargetsCount!==wg||Hn.numMultiviewViews!==ws)&&(sr=!0):(sr=!0,Hn.__version=lt.version);let _g=Hn.currentProgram;sr===!0&&(_g=FI(lt,qe,ze));let ba=!1,za=!1,NI=!1;const vr=_g.getUniforms(),es=Hn.uniforms;if(cn.useProgram(_g.program)&&(ba=!0,za=!0,NI=!0),lt.id!==oe&&(oe=lt.id,za=!0),ba||it!==WA){_g.numMultiviewViews>0?(Yi.updateCameraProjectionMatricesUniform(WA,vr),Yi.updateCameraViewMatricesUniform(WA,vr)):(cn.buffers.depth.getReversed()?(Zt.copy(WA.projectionMatrix),(0,s.toNormalizedProjectionMatrix)(Zt),(0,s.toReversedProjectionMatrix)(Zt),vr.setValue(he,"projectionMatrix",Zt)):vr.setValue(he,"projectionMatrix",WA.projectionMatrix),vr.setValue(he,"viewMatrix",WA.matrixWorldInverse));const Ps=vr.map.cameraPosition;Ps!==void 0&&Ps.setValue(he,Oi.setFromMatrixPosition(WA.matrixWorld)),ko.logarithmicDepthBuffer&&vr.setValue(he,"logDepthBufFC",2/(Math.log(WA.far+1)/Math.LN2)),(lt.isMeshPhongMaterial||lt.isMeshToonMaterial||lt.isMeshLambertMaterial||lt.isMeshBasicMaterial||lt.isMeshStandardMaterial||lt.isShaderMaterial)&&vr.setValue(he,"isOrthographic",WA.isOrthographicCamera===!0),it!==WA&&(it=WA,za=!0,NI=!0)}if(ze.isSkinnedMesh){vr.setOptional(he,ze,"bindMatrix"),vr.setOptional(he,ze,"bindMatrixInverse");const Ps=ze.skeleton;Ps&&(Ps.boneTexture===null&&Ps.computeBoneTexture(),vr.setValue(he,"boneTexture",Ps.boneTexture,qi))}ze.isBatchedMesh&&(vr.setOptional(he,ze,"batchingTexture"),vr.setValue(he,"batchingTexture",ze._matricesTexture,qi),vr.setOptional(he,ze,"batchingIdTexture"),vr.setValue(he,"batchingIdTexture",ze._indirectTexture,qi),vr.setOptional(he,ze,"batchingColorTexture"),ze._colorsTexture!==null&&vr.setValue(he,"batchingColorTexture",ze._colorsTexture,qi));const $a=It.morphAttributes;if(($a.position!==void 0||$a.normal!==void 0||$a.color!==void 0)&&di.update(ze,It,_g),(za||Hn.receiveShadow!==ze.receiveShadow)&&(Hn.receiveShadow=ze.receiveShadow,vr.setValue(he,"receiveShadow",ze.receiveShadow)),lt.isMeshGouraudMaterial&&lt.envMap!==null&&(es.envMap.value=gn,es.flipEnvMap.value=gn.isCubeTexture&&gn.isRenderTargetTexture===!1?-1:1),lt.isMeshStandardMaterial&&lt.envMap===null&&qe.environment!==null&&(es.envMapIntensity.value=qe.environmentIntensity),za&&(vr.setValue(he,"toneMappingExposure",et.toneMappingExposure),Hn.needsLights&&vI(es,NI),Ii&&lt.fog===!0&&Wt.refreshFogUniforms(es,Ii),Wt.refreshMaterialUniforms(es,lt,vt,_t,At.state.transmissionRenderTarget[WA.id]),zo.upload(he,$C(Hn),es,qi)),lt.isShaderMaterial&&lt.uniformsNeedUpdate===!0&&(zo.upload(he,$C(Hn),es,qi),lt.uniformsNeedUpdate=!1),lt.isSpriteMaterial&&vr.setValue(he,"center",ze.center),_g.numMultiviewViews>0?Yi.updateObjectMatricesUniforms(ze,WA,vr):(vr.setValue(he,"modelViewMatrix",ze.modelViewMatrix),vr.setValue(he,"normalMatrix",ze.normalMatrix)),vr.setValue(he,"modelMatrix",ze.matrixWorld),lt.isShaderMaterial||lt.isRawShaderMaterial){const Ps=lt.uniformsGroups;for(let AI=0,ka=Ps.length;AI<ka;AI++){const UI=Ps[AI];ti.update(UI,_g),ti.bind(UI,_g)}}return _g}function vI(WA,qe){WA.ambientLightColor.needsUpdate=qe,WA.lightProbe.needsUpdate=qe,WA.directionalLights.needsUpdate=qe,WA.directionalLightShadows.needsUpdate=qe,WA.pointLights.needsUpdate=qe,WA.pointLightShadows.needsUpdate=qe,WA.spotLights.needsUpdate=qe,WA.spotLightShadows.needsUpdate=qe,WA.rectAreaLights.needsUpdate=qe,WA.hemisphereLights.needsUpdate=qe}function AB(WA){return WA.isMeshLambertMaterial||WA.isMeshToonMaterial||WA.isMeshPhongMaterial||WA.isMeshStandardMaterial||WA.isShadowMaterial||WA.isShaderMaterial&&WA.lights===!0}this.setTexture2D=function(){var WA=!1;return function(It,lt){It&&It.isWebGLRenderTarget&&(WA||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),WA=!0),It=It.texture),qi.setTexture2D(It,lt)}}(),this.getActiveCubeFace=function(){return Bt},this.getActiveMipmapLevel=function(){return Dt},this.getRenderTarget=function(){return ce},this.setRenderTargetTextures=function(WA,qe,It){wn.get(WA.texture).__webglTexture=qe,wn.get(WA.depthTexture).__webglTexture=It;const lt=wn.get(WA);lt.__hasExternalTextures=!0,lt.__autoAllocateDepthBuffer=It===void 0,!lt.__autoAllocateDepthBuffer&&(!ce||!ce.isWebGLMultiviewRenderTarget)&&fn.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),lt.__useRenderToTexture=!1)},this.setRenderTargetFramebuffer=function(WA,qe){const It=wn.get(WA);It.__webglFramebuffer=qe,It.__useDefaultFramebuffer=qe===void 0};const ZI=he.createFramebuffer();this.setRenderTarget=function(WA,qe=0,It=0){WA===null&&this.xr.isPresenting&&(WA=this.xr.getRenderTarget()),ce=WA,Bt=qe,Dt=It;let lt=!0,ze=null,Ii=!1,Ki=!1;if(WA){const gn=wn.get(WA);if(gn.__useDefaultFramebuffer!==void 0)cn.bindFramebuffer(he.FRAMEBUFFER,null),lt=!1;else if(gn.__webglFramebuffer===void 0)qi.setupRenderTarget(WA);else if(gn.__hasExternalTextures)qi.rebindTextures(WA,wn.get(WA.texture).__webglTexture,wn.get(WA.depthTexture).__webglTexture);else if(WA.depthBuffer){const Tn=WA.depthTexture;if(gn.__boundDepthTexture!==Tn){if(Tn!==null&&wn.has(Tn)&&(WA.width!==Tn.image.width||WA.height!==Tn.image.height))throw new Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");qi.setupDepthRenderbuffer(WA)}}const ho=WA.texture;(ho.isData3DTexture||ho.isDataArrayTexture||ho.isCompressedArrayTexture)&&(Ki=!0);const uo=wn.get(WA).__webglFramebuffer;WA.isWebGLCubeRenderTarget?(Array.isArray(uo[qe])?ze=uo[qe][It]:ze=uo[qe],Ii=!0):WA.samples>0&&qi.useMultisampledRTT(WA)===!1?ze=wn.get(WA).__webglMultisampledFramebuffer:Array.isArray(uo)?ze=uo[It]:ze=uo,$t.copy(WA.viewport),ht.copy(WA.scissor),mt=WA.scissorTest}else $t.copy(Gr).multiplyScalar(vt).floor(),ht.copy(co).multiplyScalar(vt).floor(),mt=Ar;if(It!==0&&(ze=ZI),cn.bindFramebuffer(he.FRAMEBUFFER,ze)&&lt&&cn.drawBuffers(WA,ze),cn.viewport($t),cn.scissor(ht),cn.setScissorTest(mt),Ii){const gn=wn.get(WA.texture);he.framebufferTexture2D(he.FRAMEBUFFER,he.COLOR_ATTACHMENT0,he.TEXTURE_CUBE_MAP_POSITIVE_X+qe,gn.__webglTexture,It)}else if(Ki){const gn=wn.get(WA.texture),ho=qe;he.framebufferTextureLayer(he.FRAMEBUFFER,he.COLOR_ATTACHMENT0,gn.__webglTexture,It,ho)}else if(WA!==null&&It!==0){const gn=wn.get(WA.texture);he.framebufferTexture2D(he.FRAMEBUFFER,he.COLOR_ATTACHMENT0,he.TEXTURE_2D,gn.__webglTexture,It)}oe=-1},this.readRenderTargetPixels=function(WA,qe,It,lt,ze,Ii,Ki){if(!(WA&&WA.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let rn=wn.get(WA).__webglFramebuffer;if(WA.isWebGLCubeRenderTarget&&Ki!==void 0&&(rn=rn[Ki]),rn){cn.bindFramebuffer(he.FRAMEBUFFER,rn);try{const gn=WA.texture,ho=gn.format,uo=gn.type;if(!ko.textureFormatReadable(ho)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!ko.textureTypeReadable(uo)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}qe>=0&&qe<=WA.width-lt&&It>=0&&It<=WA.height-ze&&he.readPixels(qe,It,lt,ze,ke.convert(ho),ke.convert(uo),Ii)}finally{const gn=ce!==null?wn.get(ce).__webglFramebuffer:null;cn.bindFramebuffer(he.FRAMEBUFFER,gn)}}},this.readRenderTargetPixelsAsync=async function(WA,qe,It,lt,ze,Ii,Ki){if(!(WA&&WA.isWebGLRenderTarget))throw new Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let rn=wn.get(WA).__webglFramebuffer;if(WA.isWebGLCubeRenderTarget&&Ki!==void 0&&(rn=rn[Ki]),rn){const gn=WA.texture,ho=gn.format,uo=gn.type;if(!ko.textureFormatReadable(ho))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!ko.textureTypeReadable(uo))throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");if(qe>=0&&qe<=WA.width-lt&&It>=0&&It<=WA.height-ze){cn.bindFramebuffer(he.FRAMEBUFFER,rn);const Tn=he.createBuffer();he.bindBuffer(he.PIXEL_PACK_BUFFER,Tn),he.bufferData(he.PIXEL_PACK_BUFFER,Ii.byteLength,he.STREAM_READ),he.readPixels(qe,It,lt,ze,ke.convert(ho),ke.convert(uo),0);const Vo=ce!==null?wn.get(ce).__webglFramebuffer:null;cn.bindFramebuffer(he.FRAMEBUFFER,Vo);const Dr=he.fenceSync(he.SYNC_GPU_COMMANDS_COMPLETE,0);return he.flush(),await(0,s.probeAsync)(he,Dr,4),he.bindBuffer(he.PIXEL_PACK_BUFFER,Tn),he.getBufferSubData(he.PIXEL_PACK_BUFFER,0,Ii),he.deleteBuffer(Tn),he.deleteSync(Dr),Ii}else throw new Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")}},this.copyFramebufferToTexture=function(WA,qe=null,It=0){WA.isTexture!==!0&&((0,s.warnOnce)("WebGLRenderer: copyFramebufferToTexture function signature has changed."),qe=arguments[0]||null,WA=arguments[1]);const lt=Math.pow(2,-It),ze=Math.floor(WA.image.width*lt),Ii=Math.floor(WA.image.height*lt),Ki=qe!==null?qe.x:0,rn=qe!==null?qe.y:0;qi.setTexture2D(WA,0),he.copyTexSubImage2D(he.TEXTURE_2D,It,0,0,Ki,rn,ze,Ii),cn.unbindTexture()};const aC=he.createFramebuffer(),jI=he.createFramebuffer();this.copyTextureToTexture=function(WA,qe,It=null,lt=null,ze=0,Ii=null){WA.isTexture!==!0&&((0,s.warnOnce)("WebGLRenderer: copyTextureToTexture function signature has changed."),lt=arguments[0]||null,WA=arguments[1],qe=arguments[2],Ii=arguments[3]||0,It=null),Ii===null&&(ze!==0?((0,s.warnOnce)("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),Ii=ze,ze=0):Ii=0);let Ki,rn,gn,ho,uo,Tn,Vo,Dr,_s;const ws=WA.isCompressedTexture?WA.mipmaps[Ii]:WA.image;if(It!==null)Ki=It.max.x-It.min.x,rn=It.max.y-It.min.y,gn=It.isBox3?It.max.z-It.min.z:1,ho=It.min.x,uo=It.min.y,Tn=It.isBox3?It.min.z:0;else{const es=Math.pow(2,-ze);Ki=Math.floor(ws.width*es),rn=Math.floor(ws.height*es),WA.isDataArrayTexture?gn=ws.depth:WA.isData3DTexture?gn=Math.floor(ws.depth*es):gn=1,ho=0,uo=0,Tn=0}lt!==null?(Vo=lt.x,Dr=lt.y,_s=lt.z):(Vo=0,Dr=0,_s=0);const rr=ke.convert(qe.format),wg=ke.convert(qe.type);let Hn;qe.isData3DTexture?(qi.setTexture3D(qe,0),Hn=he.TEXTURE_3D):qe.isDataArrayTexture||qe.isCompressedArrayTexture?(qi.setTexture2DArray(qe,0),Hn=he.TEXTURE_2D_ARRAY):(qi.setTexture2D(qe,0),Hn=he.TEXTURE_2D),he.pixelStorei(he.UNPACK_FLIP_Y_WEBGL,qe.flipY),he.pixelStorei(he.UNPACK_PREMULTIPLY_ALPHA_WEBGL,qe.premultiplyAlpha),he.pixelStorei(he.UNPACK_ALIGNMENT,qe.unpackAlignment);const XI=he.getParameter(he.UNPACK_ROW_LENGTH),sr=he.getParameter(he.UNPACK_IMAGE_HEIGHT),_g=he.getParameter(he.UNPACK_SKIP_PIXELS),ba=he.getParameter(he.UNPACK_SKIP_ROWS),za=he.getParameter(he.UNPACK_SKIP_IMAGES);he.pixelStorei(he.UNPACK_ROW_LENGTH,ws.width),he.pixelStorei(he.UNPACK_IMAGE_HEIGHT,ws.height),he.pixelStorei(he.UNPACK_SKIP_PIXELS,ho),he.pixelStorei(he.UNPACK_SKIP_ROWS,uo),he.pixelStorei(he.UNPACK_SKIP_IMAGES,Tn);const NI=WA.isDataArrayTexture||WA.isData3DTexture,vr=qe.isDataArrayTexture||qe.isData3DTexture;if(WA.isDepthTexture){const es=wn.get(WA),$a=wn.get(qe),Ps=wn.get(es.__renderTarget),AI=wn.get($a.__renderTarget);cn.bindFramebuffer(he.READ_FRAMEBUFFER,Ps.__webglFramebuffer),cn.bindFramebuffer(he.DRAW_FRAMEBUFFER,AI.__webglFramebuffer);for(let ka=0;ka<gn;ka++)NI&&(he.framebufferTextureLayer(he.READ_FRAMEBUFFER,he.COLOR_ATTACHMENT0,wn.get(WA).__webglTexture,ze,Tn+ka),he.framebufferTextureLayer(he.DRAW_FRAMEBUFFER,he.COLOR_ATTACHMENT0,wn.get(qe).__webglTexture,Ii,_s+ka)),he.blitFramebuffer(ho,uo,Ki,rn,Vo,Dr,Ki,rn,he.DEPTH_BUFFER_BIT,he.NEAREST);cn.bindFramebuffer(he.READ_FRAMEBUFFER,null),cn.bindFramebuffer(he.DRAW_FRAMEBUFFER,null)}else if(ze!==0||WA.isRenderTargetTexture||wn.has(WA)){const es=wn.get(WA),$a=wn.get(qe);cn.bindFramebuffer(he.READ_FRAMEBUFFER,aC),cn.bindFramebuffer(he.DRAW_FRAMEBUFFER,jI);for(let Ps=0;Ps<gn;Ps++)NI?he.framebufferTextureLayer(he.READ_FRAMEBUFFER,he.COLOR_ATTACHMENT0,es.__webglTexture,ze,Tn+Ps):he.framebufferTexture2D(he.READ_FRAMEBUFFER,he.COLOR_ATTACHMENT0,he.TEXTURE_2D,es.__webglTexture,ze),vr?he.framebufferTextureLayer(he.DRAW_FRAMEBUFFER,he.COLOR_ATTACHMENT0,$a.__webglTexture,Ii,_s+Ps):he.framebufferTexture2D(he.DRAW_FRAMEBUFFER,he.COLOR_ATTACHMENT0,he.TEXTURE_2D,$a.__webglTexture,Ii),ze!==0?he.blitFramebuffer(ho,uo,Ki,rn,Vo,Dr,Ki,rn,he.COLOR_BUFFER_BIT,he.NEAREST):vr?he.copyTexSubImage3D(Hn,Ii,Vo,Dr,_s+Ps,ho,uo,Ki,rn):he.copyTexSubImage2D(Hn,Ii,Vo,Dr,ho,uo,Ki,rn);cn.bindFramebuffer(he.READ_FRAMEBUFFER,null),cn.bindFramebuffer(he.DRAW_FRAMEBUFFER,null)}else vr?WA.isDataTexture||WA.isData3DTexture?he.texSubImage3D(Hn,Ii,Vo,Dr,_s,Ki,rn,gn,rr,wg,ws.data):qe.isCompressedArrayTexture?he.compressedTexSubImage3D(Hn,Ii,Vo,Dr,_s,Ki,rn,gn,rr,ws.data):he.texSubImage3D(Hn,Ii,Vo,Dr,_s,Ki,rn,gn,rr,wg,ws):WA.isDataTexture?he.texSubImage2D(he.TEXTURE_2D,Ii,Vo,Dr,Ki,rn,rr,wg,ws.data):WA.isCompressedTexture?he.compressedTexSubImage2D(he.TEXTURE_2D,Ii,Vo,Dr,ws.width,ws.height,rr,ws.data):he.texSubImage2D(he.TEXTURE_2D,Ii,Vo,Dr,Ki,rn,rr,wg,ws);he.pixelStorei(he.UNPACK_ROW_LENGTH,XI),he.pixelStorei(he.UNPACK_IMAGE_HEIGHT,sr),he.pixelStorei(he.UNPACK_SKIP_PIXELS,_g),he.pixelStorei(he.UNPACK_SKIP_ROWS,ba),he.pixelStorei(he.UNPACK_SKIP_IMAGES,za),Ii===0&&qe.generateMipmaps&&he.generateMipmap(Hn),cn.unbindTexture()},this.copyTextureToTexture3D=function(WA,qe,It=null,lt=null,ze=0){return WA.isTexture!==!0&&((0,s.warnOnce)("WebGLRenderer: copyTextureToTexture3D function signature has changed."),It=arguments[0]||null,lt=arguments[1]||null,WA=arguments[2],qe=arguments[3],ze=arguments[4]||0),(0,s.warnOnce)('WebGLRenderer: copyTextureToTexture3D function has been deprecated. Use "copyTextureToTexture" instead.'),this.copyTextureToTexture(WA,qe,It,lt,ze)},this.initRenderTarget=function(WA){wn.get(WA).__webglFramebuffer===void 0&&qi.setupRenderTarget(WA)},this.initTexture=function(WA){WA.isCubeTexture?qi.setTextureCube(WA,0):WA.isData3DTexture?qi.setTexture3D(WA,0):WA.isDataArrayTexture||WA.isCompressedArrayTexture?qi.setTexture2DArray(WA,0):qi.setTexture2D(WA,0),cn.unbindTexture()},this.resetState=function(){Bt=0,Dt=0,ce=null,cn.reset(),Tt.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return s.WebGLCoordinateSystem}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(J){this._outputColorSpace=J;const F=this.getContext();F.drawingBufferColorspace=s.ColorManagement._getDrawingBufferColorSpace(J),F.unpackColorSpace=s.ColorManagement._getUnpackColorSpace()}}},"./node_modules/three/examples/jsm/libs/ktx-parse.module.js":(_A,O,d)=>{d.r(O),d.d(O,{KHR_DF_CHANNEL_RGBSDA_ALPHA:()=>Ao,KHR_DF_CHANNEL_RGBSDA_BLUE:()=>En,KHR_DF_CHANNEL_RGBSDA_DEPTH:()=>go,KHR_DF_CHANNEL_RGBSDA_GREEN:()=>sn,KHR_DF_CHANNEL_RGBSDA_RED:()=>un,KHR_DF_CHANNEL_RGBSDA_STENCIL:()=>bn,KHR_DF_FLAG_ALPHA_PREMULTIPLIED:()=>x,KHR_DF_FLAG_ALPHA_STRAIGHT:()=>G,KHR_DF_KHR_DESCRIPTORTYPE_BASICFORMAT:()=>v,KHR_DF_MODEL_ASTC:()=>R,KHR_DF_MODEL_ETC1:()=>u,KHR_DF_MODEL_ETC1S:()=>N,KHR_DF_MODEL_ETC2:()=>l,KHR_DF_MODEL_RGBSDA:()=>m,KHR_DF_MODEL_UASTC:()=>Y,KHR_DF_MODEL_UNSPECIFIED:()=>p,KHR_DF_PRIMARIES_ACES:()=>le,KHR_DF_PRIMARIES_ACESCC:()=>Qt,KHR_DF_PRIMARIES_ADOBERGB:()=>hi,KHR_DF_PRIMARIES_BT2020:()=>yA,KHR_DF_PRIMARIES_BT601_EBU:()=>q,KHR_DF_PRIMARIES_BT601_SMPTE:()=>gA,KHR_DF_PRIMARIES_BT709:()=>ct,KHR_DF_PRIMARIES_CIEXYZ:()=>ge,KHR_DF_PRIMARIES_DISPLAYP3:()=>pi,KHR_DF_PRIMARIES_NTSC1953:()=>Ct,KHR_DF_PRIMARIES_PAL525:()=>bt,KHR_DF_PRIMARIES_UNSPECIFIED:()=>Et,KHR_DF_SAMPLE_DATATYPE_EXPONENT:()=>Kt,KHR_DF_SAMPLE_DATATYPE_FLOAT:()=>Kn,KHR_DF_SAMPLE_DATATYPE_LINEAR:()=>xA,KHR_DF_SAMPLE_DATATYPE_SIGNED:()=>_o,KHR_DF_TRANSFER_ACESCC:()=>Oe,KHR_DF_TRANSFER_ACESCCT:()=>ye,KHR_DF_TRANSFER_ADOBERGB:()=>Ye,KHR_DF_TRANSFER_BT1886:()=>TA,KHR_DF_TRANSFER_DCIP3:()=>NA,KHR_DF_TRANSFER_HLG_EOTF:()=>hA,KHR_DF_TRANSFER_HLG_OETF:()=>pA,KHR_DF_TRANSFER_ITU:()=>CA,KHR_DF_TRANSFER_LINEAR:()=>j,KHR_DF_TRANSFER_NTSC:()=>QA,KHR_DF_TRANSFER_PAL625_EOTF:()=>pe,KHR_DF_TRANSFER_PAL_OETF:()=>HA,KHR_DF_TRANSFER_PQ_EOTF:()=>uA,KHR_DF_TRANSFER_PQ_OETF:()=>lA,KHR_DF_TRANSFER_SLOG:()=>SA,KHR_DF_TRANSFER_SLOG2:()=>UA,KHR_DF_TRANSFER_SRGB:()=>Z,KHR_DF_TRANSFER_ST240:()=>He,KHR_DF_TRANSFER_UNSPECIFIED:()=>U,KHR_DF_VENDORID_KHRONOS:()=>D,KHR_DF_VERSION:()=>h,KHR_SUPERCOMPRESSION_BASISLZ:()=>z,KHR_SUPERCOMPRESSION_NONE:()=>s,KHR_SUPERCOMPRESSION_ZLIB:()=>T,KHR_SUPERCOMPRESSION_ZSTD:()=>_,KTX2Container:()=>Ds,VK_FORMAT_A1R5G5B5_UNORM_PACK16:()=>DA,VK_FORMAT_A2B10G10R10_SINT_PACK32:()=>Qn,VK_FORMAT_A2B10G10R10_SNORM_PACK32:()=>xi,VK_FORMAT_A2B10G10R10_UINT_PACK32:()=>Ut,VK_FORMAT_A2B10G10R10_UNORM_PACK32:()=>Pi,VK_FORMAT_A2R10G10B10_SINT_PACK32:()=>ai,VK_FORMAT_A2R10G10B10_SNORM_PACK32:()=>gt,VK_FORMAT_A2R10G10B10_UINT_PACK32:()=>Gt,VK_FORMAT_A2R10G10B10_UNORM_PACK32:()=>ut,VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT:()=>zo,VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT:()=>BI,VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT:()=>qI,VK_FORMAT_ASTC_10x10_SRGB_BLOCK:()=>no,VK_FORMAT_ASTC_10x10_UNORM_BLOCK:()=>gg,VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT:()=>RI,VK_FORMAT_ASTC_10x5_SRGB_BLOCK:()=>qn,VK_FORMAT_ASTC_10x5_UNORM_BLOCK:()=>DI,VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT:()=>Ea,VK_FORMAT_ASTC_10x6_SRGB_BLOCK:()=>yI,VK_FORMAT_ASTC_10x6_UNORM_BLOCK:()=>Ho,VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT:()=>CI,VK_FORMAT_ASTC_10x8_SRGB_BLOCK:()=>Ga,VK_FORMAT_ASTC_10x8_UNORM_BLOCK:()=>$g,VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT:()=>Sr,VK_FORMAT_ASTC_12x10_SRGB_BLOCK:()=>wI,VK_FORMAT_ASTC_12x10_UNORM_BLOCK:()=>aI,VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT:()=>xo,VK_FORMAT_ASTC_12x12_SRGB_BLOCK:()=>Lo,VK_FORMAT_ASTC_12x12_UNORM_BLOCK:()=>rC,VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT:()=>ds,VK_FORMAT_ASTC_4x4_SRGB_BLOCK:()=>Ca,VK_FORMAT_ASTC_4x4_UNORM_BLOCK:()=>fg,VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT:()=>Ba,VK_FORMAT_ASTC_5x4_SRGB_BLOCK:()=>Fs,VK_FORMAT_ASTC_5x4_UNORM_BLOCK:()=>Ra,VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT:()=>SI,VK_FORMAT_ASTC_5x5_SRGB_BLOCK:()=>ls,VK_FORMAT_ASTC_5x5_UNORM_BLOCK:()=>js,VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT:()=>oo,VK_FORMAT_ASTC_6x5_SRGB_BLOCK:()=>Xs,VK_FORMAT_ASTC_6x5_UNORM_BLOCK:()=>br,VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT:()=>Hs,VK_FORMAT_ASTC_6x6_SRGB_BLOCK:()=>mI,VK_FORMAT_ASTC_6x6_UNORM_BLOCK:()=>vs,VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT:()=>vo,VK_FORMAT_ASTC_8x5_SRGB_BLOCK:()=>zs,VK_FORMAT_ASTC_8x5_UNORM_BLOCK:()=>sg,VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT:()=>ag,VK_FORMAT_ASTC_8x6_SRGB_BLOCK:()=>Co,VK_FORMAT_ASTC_8x6_UNORM_BLOCK:()=>Yo,VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT:()=>Va,VK_FORMAT_ASTC_8x8_SRGB_BLOCK:()=>Ns,VK_FORMAT_ASTC_8x8_UNORM_BLOCK:()=>ss,VK_FORMAT_B10G11R11_UFLOAT_PACK32:()=>xg,VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16:()=>Dn,VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16:()=>va,VK_FORMAT_B4G4R4A4_UNORM_PACK16:()=>jA,VK_FORMAT_B5G5R5A1_UNORM_PACK16:()=>k,VK_FORMAT_B5G6R5_UNORM_PACK16:()=>aA,VK_FORMAT_B8G8R8A8_SINT:()=>me,VK_FORMAT_B8G8R8A8_SNORM:()=>Ka,VK_FORMAT_B8G8R8A8_SRGB:()=>We,VK_FORMAT_B8G8R8A8_UINT:()=>XA,VK_FORMAT_B8G8R8A8_UNORM:()=>wa,VK_FORMAT_B8G8R8_SINT:()=>os,VK_FORMAT_B8G8R8_SNORM:()=>ps,VK_FORMAT_B8G8R8_SRGB:()=>Da,VK_FORMAT_B8G8R8_UINT:()=>Wg,VK_FORMAT_B8G8R8_UNORM:()=>Tg,VK_FORMAT_BC1_RGBA_SRGB_BLOCK:()=>xe,VK_FORMAT_BC1_RGBA_UNORM_BLOCK:()=>Fe,VK_FORMAT_BC1_RGB_SRGB_BLOCK:()=>Ie,VK_FORMAT_BC1_RGB_UNORM_BLOCK:()=>ee,VK_FORMAT_BC2_SRGB_BLOCK:()=>Vt,VK_FORMAT_BC2_UNORM_BLOCK:()=>Lt,VK_FORMAT_BC3_SRGB_BLOCK:()=>Qi,VK_FORMAT_BC3_UNORM_BLOCK:()=>Ft,VK_FORMAT_BC4_SNORM_BLOCK:()=>vn,VK_FORMAT_BC4_UNORM_BLOCK:()=>zt,VK_FORMAT_BC5_SNORM_BLOCK:()=>Io,VK_FORMAT_BC5_UNORM_BLOCK:()=>Fo,VK_FORMAT_BC6H_SFLOAT_BLOCK:()=>rs,VK_FORMAT_BC6H_UFLOAT_BLOCK:()=>Lr,VK_FORMAT_BC7_SRGB_BLOCK:()=>Pr,VK_FORMAT_BC7_UNORM_BLOCK:()=>bg,VK_FORMAT_D16_UNORM:()=>eA,VK_FORMAT_D16_UNORM_S8_UINT:()=>Te,VK_FORMAT_D24_UNORM_S8_UINT:()=>Ke,VK_FORMAT_D32_SFLOAT:()=>$A,VK_FORMAT_D32_SFLOAT_S8_UINT:()=>Ue,VK_FORMAT_E5B9G9R9_UFLOAT_PACK32:()=>Wa,VK_FORMAT_EAC_R11G11_SNORM_BLOCK:()=>zg,VK_FORMAT_EAC_R11G11_UNORM_BLOCK:()=>ug,VK_FORMAT_EAC_R11_SNORM_BLOCK:()=>Ja,VK_FORMAT_EAC_R11_UNORM_BLOCK:()=>Yg,VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK:()=>dg,VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK:()=>Gs,VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK:()=>fo,VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK:()=>vi,VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK:()=>Or,VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK:()=>xr,VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16:()=>OI,VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16:()=>Bo,VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG:()=>ms,VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG:()=>Na,VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG:()=>eo,VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG:()=>Ua,VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG:()=>MI,VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG:()=>ea,VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG:()=>ni,VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG:()=>La,VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16:()=>Fa,VK_FORMAT_R10X6G10X6_UNORM_2PACK16:()=>II,VK_FORMAT_R10X6_UNORM_PACK16:()=>Aa,VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16:()=>Ot,VK_FORMAT_R12X4G12X4_UNORM_2PACK16:()=>Bs,VK_FORMAT_R12X4_UNORM_PACK16:()=>fA,VK_FORMAT_R16G16B16A16_SFLOAT:()=>ra,VK_FORMAT_R16G16B16A16_SINT:()=>Fg,VK_FORMAT_R16G16B16A16_SNORM:()=>Hr,VK_FORMAT_R16G16B16A16_UINT:()=>Vg,VK_FORMAT_R16G16B16A16_UNORM:()=>Gg,VK_FORMAT_R16G16B16_SFLOAT:()=>Ug,VK_FORMAT_R16G16B16_SINT:()=>Ng,VK_FORMAT_R16G16B16_SNORM:()=>og,VK_FORMAT_R16G16B16_UINT:()=>Ur,VK_FORMAT_R16G16B16_UNORM:()=>Ys,VK_FORMAT_R16G16_SFLOAT:()=>Go,VK_FORMAT_R16G16_SINT:()=>On,VK_FORMAT_R16G16_SNORM:()=>Yr,VK_FORMAT_R16G16_UINT:()=>$r,VK_FORMAT_R16G16_UNORM:()=>Uo,VK_FORMAT_R16_SFLOAT:()=>ao,VK_FORMAT_R16_SINT:()=>Ro,VK_FORMAT_R16_SNORM:()=>Pn,VK_FORMAT_R16_UINT:()=>pr,VK_FORMAT_R16_UNORM:()=>mn,VK_FORMAT_R32G32B32A32_SFLOAT:()=>Rs,VK_FORMAT_R32G32B32A32_SINT:()=>Lg,VK_FORMAT_R32G32B32A32_UINT:()=>rg,VK_FORMAT_R32G32B32_SFLOAT:()=>lg,VK_FORMAT_R32G32B32_SINT:()=>aa,VK_FORMAT_R32G32B32_UINT:()=>Xg,VK_FORMAT_R32G32_SFLOAT:()=>hg,VK_FORMAT_R32G32_SINT:()=>jg,VK_FORMAT_R32G32_UINT:()=>Zg,VK_FORMAT_R32_SFLOAT:()=>qa,VK_FORMAT_R32_SINT:()=>ga,VK_FORMAT_R32_UINT:()=>sa,VK_FORMAT_R4G4B4A4_UNORM_PACK16:()=>ZA,VK_FORMAT_R4G4_UNORM_PACK8:()=>ie,VK_FORMAT_R5G5B5A1_UNORM_PACK16:()=>H,VK_FORMAT_R5G6B5_UNORM_PACK16:()=>Be,VK_FORMAT_R64G64B64A64_SFLOAT:()=>Jg,VK_FORMAT_R64G64B64A64_SINT:()=>jr,VK_FORMAT_R64G64B64A64_UINT:()=>ii,VK_FORMAT_R64G64B64_SFLOAT:()=>In,VK_FORMAT_R64G64B64_SINT:()=>Sa,VK_FORMAT_R64G64B64_UINT:()=>Cr,VK_FORMAT_R64G64_SFLOAT:()=>gI,VK_FORMAT_R64G64_SINT:()=>Ma,VK_FORMAT_R64G64_UINT:()=>oC,VK_FORMAT_R64_SFLOAT:()=>pI,VK_FORMAT_R64_SINT:()=>sI,VK_FORMAT_R64_UINT:()=>Ia,VK_FORMAT_R8G8B8A8_SINT:()=>ya,VK_FORMAT_R8G8B8A8_SNORM:()=>lr,VK_FORMAT_R8G8B8A8_SRGB:()=>oa,VK_FORMAT_R8G8B8A8_UINT:()=>Nr,VK_FORMAT_R8G8B8A8_UNORM:()=>Kg,VK_FORMAT_R8G8B8_SINT:()=>cg,VK_FORMAT_R8G8B8_SNORM:()=>Ss,VK_FORMAT_R8G8B8_SRGB:()=>ns,VK_FORMAT_R8G8B8_UINT:()=>is,VK_FORMAT_R8G8B8_UNORM:()=>hr,VK_FORMAT_R8G8_SINT:()=>Zr,VK_FORMAT_R8G8_SNORM:()=>nn,VK_FORMAT_R8G8_SRGB:()=>kn,VK_FORMAT_R8G8_UINT:()=>zi,VK_FORMAT_R8G8_UNORM:()=>Si,VK_FORMAT_R8_SINT:()=>si,VK_FORMAT_R8_SNORM:()=>ue,VK_FORMAT_R8_SRGB:()=>Mi,VK_FORMAT_R8_UINT:()=>De,VK_FORMAT_R8_UNORM:()=>YA,VK_FORMAT_S8_UINT:()=>re,VK_FORMAT_UNDEFINED:()=>vA,VK_FORMAT_X8_D24_UNORM_PACK32:()=>LA,read:()=>To,write:()=>Ig});const s=0,z=1,_=2,T=3,v=0,D=0,h=2,p=0,m=1,u=160,l=161,R=162,N=163,Y=166,G=0,x=1,U=0,j=1,Z=2,CA=3,QA=4,SA=5,UA=6,TA=7,pA=8,hA=9,uA=10,lA=11,NA=12,HA=13,pe=14,He=15,Oe=16,ye=17,Ye=18,Et=0,ct=1,q=2,gA=3,yA=4,ge=5,le=6,Qt=7,Ct=8,bt=9,pi=10,hi=11,un=0,sn=1,En=2,bn=13,go=14,Ao=15,Kn=128,_o=64,Kt=32,xA=16,vA=0,ie=1,ZA=2,jA=3,Be=4,aA=5,H=6,k=7,DA=8,YA=9,ue=10,De=13,si=14,Mi=15,Si=16,nn=17,zi=20,Zr=21,kn=22,hr=23,Ss=24,is=27,cg=28,ns=29,Tg=30,ps=31,Wg=34,os=35,Da=36,Kg=37,lr=38,Nr=41,ya=42,oa=43,wa=44,Ka=45,XA=48,me=49,We=50,ut=58,gt=59,Gt=62,ai=63,Pi=64,xi=65,Ut=68,Qn=69,mn=70,Pn=71,pr=74,Ro=75,ao=76,Uo=77,Yr=78,$r=81,On=82,Go=83,Ys=84,og=85,Ur=88,Ng=89,Ug=90,Gg=91,Hr=92,Vg=95,Fg=96,ra=97,sa=98,ga=99,qa=100,Zg=101,jg=102,hg=103,Xg=104,aa=105,lg=106,rg=107,Lg=108,Rs=109,Ia=110,sI=111,pI=112,oC=113,Ma=114,gI=115,Cr=116,Sa=117,In=118,ii=119,jr=120,Jg=121,xg=122,Wa=123,eA=124,LA=125,$A=126,re=127,Te=128,Ke=129,Ue=130,ee=131,Ie=132,Fe=133,xe=134,Lt=135,Vt=136,Ft=137,Qi=138,zt=139,vn=140,Fo=141,Io=142,Lr=143,rs=144,bg=145,Pr=146,xr=147,Or=148,Gs=149,dg=150,vi=151,fo=152,Yg=153,Ja=154,ug=155,zg=156,fg=157,Ca=158,Ra=159,Fs=160,js=161,ls=162,br=163,Xs=164,vs=165,mI=166,sg=167,zs=168,Yo=169,Co=170,ss=171,Ns=172,DI=173,qn=174,Ho=175,yI=176,$g=177,Ga=178,gg=179,no=180,aI=181,wI=182,rC=183,Lo=184,Aa=1000156007,II=1000156008,Fa=1000156009,OI=1000156010,Dn=1000156011,fA=1000156017,Bs=1000156018,Ot=1000156019,Bo=1000156020,va=1000156021,Na=1000054e3,Ua=1000054001,ea=1000054002,La=1000054003,ms=1000054004,eo=1000054005,MI=1000054006,ni=1000054007,ds=1000066e3,Ba=1000066001,SI=1000066002,oo=1000066003,Hs=1000066004,vo=1000066005,ag=1000066006,Va=1000066007,RI=1000066008,Ea=1000066009,CI=1000066010,qI=1000066011,Sr=1000066012,xo=1000066013,BI=100034e4,zo=1000340001;class Ds{constructor(){this.vkFormat=0,this.typeSize=1,this.pixelWidth=0,this.pixelHeight=0,this.pixelDepth=0,this.layerCount=0,this.faceCount=1,this.supercompressionScheme=0,this.levels=[],this.dataFormatDescriptor=[{vendorId:0,descriptorType:0,descriptorBlockSize:0,versionNumber:2,colorModel:0,colorPrimaries:1,transferFunction:2,flags:0,texelBlockDimension:[0,0,0,0],bytesPlane:[0,0,0,0,0,0,0,0],samples:[]}],this.keyValue={},this.globalData=null}}class pg{constructor(Sn,Wn,Po,po){this._dataView=void 0,this._littleEndian=void 0,this._offset=void 0,this._dataView=new DataView(Sn.buffer,Sn.byteOffset+Wn,Po),this._littleEndian=po,this._offset=0}_nextUint8(){const Sn=this._dataView.getUint8(this._offset);return this._offset+=1,Sn}_nextUint16(){const Sn=this._dataView.getUint16(this._offset,this._littleEndian);return this._offset+=2,Sn}_nextUint32(){const Sn=this._dataView.getUint32(this._offset,this._littleEndian);return this._offset+=4,Sn}_nextUint64(){const Sn=this._dataView.getUint32(this._offset,this._littleEndian)+4294967296*this._dataView.getUint32(this._offset+4,this._littleEndian);return this._offset+=8,Sn}_nextInt32(){const Sn=this._dataView.getInt32(this._offset,this._littleEndian);return this._offset+=4,Sn}_nextUint8Array(Sn){const Wn=new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+this._offset,Sn);return this._offset+=Sn,Wn}_skip(Sn){return this._offset+=Sn,this}_scan(Sn,Wn){Wn===void 0&&(Wn=0);const Po=this._offset;let po=0;for(;this._dataView.getUint8(this._offset)!==Wn&&po<Sn;)po++,this._offset++;return po<Sn&&this._offset++,new Uint8Array(this._dataView.buffer,this._dataView.byteOffset+Po,po)}}const mg=new Uint8Array([0]),kr=[171,75,84,88,32,50,48,187,13,10,26,10];function Us(fi){return new TextEncoder().encode(fi)}function Ee(fi){return new TextDecoder().decode(fi)}function Hg(fi){let Sn=0;for(const po of fi)Sn+=po.byteLength;const Wn=new Uint8Array(Sn);let Po=0;for(const po of fi)Wn.set(new Uint8Array(po),Po),Po+=po.byteLength;return Wn}function Za(fi,Sn){return Sn===void 0&&(Sn=4),Math.ceil(fi/Sn)*Sn-fi}function To(fi){const Sn=new Uint8Array(fi.buffer,fi.byteOffset,kr.length);if(Sn[0]!==kr[0]||Sn[1]!==kr[1]||Sn[2]!==kr[2]||Sn[3]!==kr[3]||Sn[4]!==kr[4]||Sn[5]!==kr[5]||Sn[6]!==kr[6]||Sn[7]!==kr[7]||Sn[8]!==kr[8]||Sn[9]!==kr[9]||Sn[10]!==kr[10]||Sn[11]!==kr[11])throw new Error("Missing KTX 2.0 identifier.");const Wn=new Ds,Po=17*Uint32Array.BYTES_PER_ELEMENT,po=new pg(fi,kr.length,Po,!0);Wn.vkFormat=po._nextUint32(),Wn.typeSize=po._nextUint32(),Wn.pixelWidth=po._nextUint32(),Wn.pixelHeight=po._nextUint32(),Wn.pixelDepth=po._nextUint32(),Wn.layerCount=po._nextUint32(),Wn.faceCount=po._nextUint32();const $o=po._nextUint32();Wn.supercompressionScheme=po._nextUint32();const Qe=po._nextUint32(),Ls=po._nextUint32(),Oo=po._nextUint32(),Xr=po._nextUint32(),Br=po._nextUint64(),gs=po._nextUint64(),xs=new pg(fi,kr.length+Po,3*$o*8,!0);for(let ys=0;ys<$o;ys++)Wn.levels.push({levelData:new Uint8Array(fi.buffer,fi.byteOffset+xs._nextUint64(),xs._nextUint64()),uncompressedByteLength:xs._nextUint64()});const Zn=new pg(fi,Qe,Ls,!0),$s={vendorId:Zn._skip(4)._nextUint16(),descriptorType:Zn._nextUint16(),versionNumber:Zn._nextUint16(),descriptorBlockSize:Zn._nextUint16(),colorModel:Zn._nextUint8(),colorPrimaries:Zn._nextUint8(),transferFunction:Zn._nextUint8(),flags:Zn._nextUint8(),texelBlockDimension:[Zn._nextUint8(),Zn._nextUint8(),Zn._nextUint8(),Zn._nextUint8()],bytesPlane:[Zn._nextUint8(),Zn._nextUint8(),Zn._nextUint8(),Zn._nextUint8(),Zn._nextUint8(),Zn._nextUint8(),Zn._nextUint8(),Zn._nextUint8()],samples:[]},qr=($s.descriptorBlockSize/4-6)/4;for(let ys=0;ys<qr;ys++){const Er={bitOffset:Zn._nextUint16(),bitLength:Zn._nextUint8(),channelType:Zn._nextUint8(),samplePosition:[Zn._nextUint8(),Zn._nextUint8(),Zn._nextUint8(),Zn._nextUint8()],sampleLower:-1/0,sampleUpper:1/0};64&Er.channelType?(Er.sampleLower=Zn._nextInt32(),Er.sampleUpper=Zn._nextInt32()):(Er.sampleLower=Zn._nextUint32(),Er.sampleUpper=Zn._nextUint32()),$s.samples[ys]=Er}Wn.dataFormatDescriptor.length=0,Wn.dataFormatDescriptor.push($s);const _r=new pg(fi,Oo,Xr,!0);for(;_r._offset<Xr;){const ys=_r._nextUint32(),Er=_r._scan(ys),eg=Ee(Er);if(Wn.keyValue[eg]=_r._nextUint8Array(ys-Er.byteLength-1),eg.match(/^ktx/i)){const Eo=Ee(Wn.keyValue[eg]);Wn.keyValue[eg]=Eo.substring(0,Eo.lastIndexOf("\0"))}_r._skip(ys%4?4-ys%4:0)}if(gs<=0)return Wn;const mr=new pg(fi,Br,gs,!0),Dg=mr._nextUint16(),dr=mr._nextUint16(),Qo=mr._nextUint32(),Nn=mr._nextUint32(),lo=mr._nextUint32(),Tr=mr._nextUint32(),tn=[];for(let ys=0;ys<$o;ys++)tn.push({imageFlags:mr._nextUint32(),rgbSliceByteOffset:mr._nextUint32(),rgbSliceByteLength:mr._nextUint32(),alphaSliceByteOffset:mr._nextUint32(),alphaSliceByteLength:mr._nextUint32()});const Ag=Br+mr._offset,Kr=Ag+Qo,Rr=Kr+Nn,Cg=Rr+lo,yg=new Uint8Array(fi.buffer,fi.byteOffset+Ag,Qo),Qa=new Uint8Array(fi.buffer,fi.byteOffset+Kr,Nn),as=new Uint8Array(fi.buffer,fi.byteOffset+Rr,lo),ja=new Uint8Array(fi.buffer,fi.byteOffset+Cg,Tr);return Wn.globalData={endpointCount:Dg,selectorCount:dr,imageDescs:tn,endpointsData:yg,selectorsData:Qa,tablesData:as,extendedData:ja},Wn}const ir={keepWriter:!1};function Ig(fi,Sn){Sn===void 0&&(Sn={}),Sn={...ir,...Sn};let Wn=new ArrayBuffer(0);if(fi.globalData){const Qo=new ArrayBuffer(20+5*fi.globalData.imageDescs.length*4),Nn=new DataView(Qo);Nn.setUint16(0,fi.globalData.endpointCount,!0),Nn.setUint16(2,fi.globalData.selectorCount,!0),Nn.setUint32(4,fi.globalData.endpointsData.byteLength,!0),Nn.setUint32(8,fi.globalData.selectorsData.byteLength,!0),Nn.setUint32(12,fi.globalData.tablesData.byteLength,!0),Nn.setUint32(16,fi.globalData.extendedData.byteLength,!0);for(let lo=0;lo<fi.globalData.imageDescs.length;lo++){const Tr=fi.globalData.imageDescs[lo];Nn.setUint32(20+5*lo*4+0,Tr.imageFlags,!0),Nn.setUint32(20+5*lo*4+4,Tr.rgbSliceByteOffset,!0),Nn.setUint32(20+5*lo*4+8,Tr.rgbSliceByteLength,!0),Nn.setUint32(20+5*lo*4+12,Tr.alphaSliceByteOffset,!0),Nn.setUint32(20+5*lo*4+16,Tr.alphaSliceByteLength,!0)}Wn=Hg([Qo,fi.globalData.endpointsData,fi.globalData.selectorsData,fi.globalData.tablesData,fi.globalData.extendedData])}const Po=[];let po=fi.keyValue;Sn.keepWriter||(po={...fi.keyValue,KTXwriter:"KTX-Parse v0.7.1"});for(const Qo in po){const Nn=po[Qo],lo=Us(Qo),Tr=typeof Nn=="string"?Hg([Us(Nn),mg]):Nn,tn=lo.byteLength+1+Tr.byteLength,Ag=Za(tn,4);Po.push(Hg([new Uint32Array([tn]),lo,mg,Tr,new Uint8Array(Ag).fill(0)]))}const $o=Hg(Po);if(fi.dataFormatDescriptor.length!==1||fi.dataFormatDescriptor[0].descriptorType!==0)throw new Error("Only BASICFORMAT Data Format Descriptor output supported.");const Qe=fi.dataFormatDescriptor[0],Ls=new ArrayBuffer(28+16*Qe.samples.length),Oo=new DataView(Ls),Xr=24+16*Qe.samples.length;if(Oo.setUint32(0,Ls.byteLength,!0),Oo.setUint16(4,Qe.vendorId,!0),Oo.setUint16(6,Qe.descriptorType,!0),Oo.setUint16(8,Qe.versionNumber,!0),Oo.setUint16(10,Xr,!0),Oo.setUint8(12,Qe.colorModel),Oo.setUint8(13,Qe.colorPrimaries),Oo.setUint8(14,Qe.transferFunction),Oo.setUint8(15,Qe.flags),!Array.isArray(Qe.texelBlockDimension))throw new Error("texelBlockDimension is now an array. For dimensionality `d`, set `d - 1`.");Oo.setUint8(16,Qe.texelBlockDimension[0]),Oo.setUint8(17,Qe.texelBlockDimension[1]),Oo.setUint8(18,Qe.texelBlockDimension[2]),Oo.setUint8(19,Qe.texelBlockDimension[3]);for(let Qo=0;Qo<8;Qo++)Oo.setUint8(20+Qo,Qe.bytesPlane[Qo]);for(let Qo=0;Qo<Qe.samples.length;Qo++){const Nn=Qe.samples[Qo],lo=28+16*Qo;if(Nn.channelID)throw new Error("channelID has been renamed to channelType.");Oo.setUint16(lo+0,Nn.bitOffset,!0),Oo.setUint8(lo+2,Nn.bitLength),Oo.setUint8(lo+3,Nn.channelType),Oo.setUint8(lo+4,Nn.samplePosition[0]),Oo.setUint8(lo+5,Nn.samplePosition[1]),Oo.setUint8(lo+6,Nn.samplePosition[2]),Oo.setUint8(lo+7,Nn.samplePosition[3]),64&Nn.channelType?(Oo.setInt32(lo+8,Nn.sampleLower,!0),Oo.setInt32(lo+12,Nn.sampleUpper,!0)):(Oo.setUint32(lo+8,Nn.sampleLower,!0),Oo.setUint32(lo+12,Nn.sampleUpper,!0))}const Br=kr.length+68+3*fi.levels.length*8,gs=Br+Ls.byteLength;let xs=Wn.byteLength>0?gs+$o.byteLength:0;xs%8&&(xs+=8-xs%8);const Zn=[],$s=new DataView(new ArrayBuffer(3*fi.levels.length*8)),qr=new Uint32Array(fi.levels.length);let _r=0;fi.supercompressionScheme===0&&(_r=function(Qo,Nn){const lo=Math.max(Qo,4),Tr=Math.min(Qo,4);let tn=lo;for(;tn%Tr!=0;)tn+=lo;return tn}(function(Qo){return Qo.levels[0].levelData.byteLength/function(Nn,lo){let Tr=1;const tn=[Nn.pixelWidth,Nn.pixelHeight,Nn.pixelDepth],Ag=function(Kr){const[Rr,Cg,yg]=Kr.dataFormatDescriptor[0].texelBlockDimension;return[Rr+1,Cg+1,yg+1]}(Nn);for(let Kr=0;Kr<3;Kr++)if(tn[Kr]>0){const Rr=Math.ceil(Math.floor(tn[Kr]*Math.pow(2,-0))/Ag[Kr]);Tr*=Math.max(1,Rr)}return Nn.layerCount>0&&(Tr*=Nn.layerCount),Nn.faceCount>0&&(Tr*=Nn.faceCount),Tr}(Qo)}(fi)));let mr=(xs||gs+$o.byteLength)+Wn.byteLength;for(let Qo=fi.levels.length-1;Qo>=0;Qo--){if(mr%_r){const lo=Za(mr,_r);Zn.push(new Uint8Array(lo)),mr+=lo}const Nn=fi.levels[Qo];Zn.push(Nn.levelData),qr[Qo]=mr,mr+=Nn.levelData.byteLength}for(let Qo=0;Qo<fi.levels.length;Qo++){const Nn=fi.levels[Qo];$s.setBigUint64(24*Qo+0,BigInt(qr[Qo]),!0),$s.setBigUint64(24*Qo+8,BigInt(Nn.levelData.byteLength),!0),$s.setBigUint64(24*Qo+16,BigInt(Nn.uncompressedByteLength),!0)}const Dg=new ArrayBuffer(68),dr=new DataView(Dg);return dr.setUint32(0,fi.vkFormat,!0),dr.setUint32(4,fi.typeSize,!0),dr.setUint32(8,fi.pixelWidth,!0),dr.setUint32(12,fi.pixelHeight,!0),dr.setUint32(16,fi.pixelDepth,!0),dr.setUint32(20,fi.layerCount,!0),dr.setUint32(24,fi.faceCount,!0),dr.setUint32(28,fi.levels.length,!0),dr.setUint32(32,fi.supercompressionScheme,!0),dr.setUint32(36,Br,!0),dr.setUint32(40,Ls.byteLength,!0),dr.setUint32(44,gs,!0),dr.setUint32(48,$o.byteLength,!0),dr.setBigUint64(52,BigInt(Wn.byteLength>0?xs:0),!0),dr.setBigUint64(60,BigInt(Wn.byteLength),!0),new Uint8Array(Hg([new Uint8Array(kr).buffer,Dg,$s.buffer,Ls,$o,xs>0?new ArrayBuffer(xs-(gs+$o.byteLength)):new ArrayBuffer(0),Wn,...Zn]))}},"./node_modules/three/examples/jsm/libs/zstddec.module.js":(_A,O,d)=>{d.r(O),d.d(O,{ZSTDDecoder:()=>D});var s=d("./node_modules/buffer/index.js").Buffer;let z,_,T;const v={env:{emscripten_notify_memory_growth:function(p){T=new Uint8Array(_.exports.memory.buffer)}}};class D{init(){return z||(z=typeof fetch<"u"?fetch("data:application/wasm;base64,"+h).then(m=>m.arrayBuffer()).then(m=>WebAssembly.instantiate(m,v)).then(this._init):WebAssembly.instantiate(s.from(h,"base64"),v).then(this._init),z)}_init(m){_=m.instance,v.env.emscripten_notify_memory_growth(0)}decode(m,u=0){if(!_)throw new Error("ZSTDDecoder: Await .init() before decoding.");const l=m.byteLength,R=_.exports.malloc(l);T.set(m,R),u=u||Number(_.exports.ZSTD_findDecompressedSize(R,l));const N=_.exports.malloc(u),Y=_.exports.ZSTD_decompress(N,u,R,l),G=T.slice(N,N+Y);return _.exports.free(R),_.exports.free(N),G}}const h="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IAMNACAEQQNxBEADQCACRQ0FIAAgAkF/aiICaiIDIAEgAmotAAA6AAAgA0EDcQ0ACwsgAkEDTQ0AA0AgACACQXxqIgJqIAEgAmooAgA2AgAgAkEDSw0ACwsgAkUNAgNAIAAgAkF/aiICaiABIAJqLQAAOgAAIAINAAsMAgsgAkEDTQ0AIAIhBANAIAMgASgCADYCACABQQRqIQEgA0EEaiEDIARBfGoiBEEDSw0ACyACQQNxIQILIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQX9qIgINAAsLIAAL8wICAn8BfgJAIAJFDQAgACACaiIDQX9qIAE6AAAgACABOgAAIAJBA0kNACADQX5qIAE6AAAgACABOgABIANBfWogAToAACAAIAE6AAIgAkEHSQ0AIANBfGogAToAACAAIAE6AAMgAkEJSQ0AIABBACAAa0EDcSIEaiIDIAFB/wFxQYGChAhsIgE2AgAgAyACIARrQXxxIgRqIgJBfGogATYCACAEQQlJDQAgAyABNgIIIAMgATYCBCACQXhqIAE2AgAgAkF0aiABNgIAIARBGUkNACADIAE2AhggAyABNgIUIAMgATYCECADIAE2AgwgAkFwaiABNgIAIAJBbGogATYCACACQWhqIAE2AgAgAkFkaiABNgIAIAQgA0EEcUEYciIEayICQSBJDQAgAa0iBUIghiAFhCEFIAMgBGohAQNAIAEgBTcDGCABIAU3AxAgASAFNwMIIAEgBTcDACABQSBqIQEgAkFgaiICQR9LDQALCyAACy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAIajYCACADCy8BAn8gACgCBCAAKAIAQQJ0aiICLQACIQMgACACLwEAIAEgAi0AAxAFajYCACADCx8AIAAgASACKAIEEAg2AgAgARAEGiAAIAJBCGo2AgQLCAAgAGdBH3MLugUBDX8jAEEQayIKJAACfyAEQQNNBEAgCkEANgIMIApBDGogAyAEEAsaIAAgASACIApBDGpBBBAVIgBBbCAAEAMbIAAgACAESxsMAQsgAEEAIAEoAgBBAXRBAmoQECENQVQgAygAACIGQQ9xIgBBCksNABogAiAAQQVqNgIAIAMgBGoiAkF8aiEMIAJBeWohDiACQXtqIRAgAEEGaiELQQQh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ASIDNgLE4AEgACgCvOABIQQgACABNgK84AEgACABIAJqNgK44AEgACABIAQgA2tqNgLA4AELpgEBAX8gACAAKALs4QEQFjYCyOABIABCADcD+OABIABCADcDuOABIABBwOABakIANwMAIABBqNAAaiIBQYyAgOAANgIAIABBADYCmOIBIABCADcDiOEBIABCAzcDgOEBIABBrNABakHgEikCADcCACAAQbTQAWpB6BIoAgA2AgAgACABNgIMIAAgAEGYIGo2AgggACAAQaAwajYCBCAAIABBEGo2AgALYQEBf0G4fyEDAkAgAUEDSQ0AIAIgABAhIgFBA3YiADYCCCACIAFBAXE2AgQgAiABQQF2QQNxIgM2AgACQCADQX9qIgFBAksNAAJAIAFBAWsOAgEAAgtBbA8LIAAhAwsgAwsMACAAIAEgAkEAEC4LiAQCA38CfiADEBYhBCAAQQBBKBAQIQAgBCACSwRAIAQPCyABRQRAQX8PCwJAAkAgA0EBRg0AIAEoAAAiBkGo6r5pRg0AQXYhAyAGQXBxQdDUtMIBRw0BQQghAyACQQhJDQEgAEEAQSgQECEAIAEoAAQhASAAQQE2AhQgACABrTcDAEEADwsgASACIAMQLyIDIAJLDQAgACADNgIYQXIhAyABIARqIgVBf2otAAAiAkEIcQ0AIAJBIHEiBkUEQEFwIQMgBS0AACIFQacBSw0BIAVBB3GtQgEgBUEDdkEKaq2GIgdCA4h+IAd8IQggBEEBaiEECyACQQZ2IQMgAkECdiEFAkAgAkEDcUF/aiICQQJLBEBBACECDAELAkACQAJAIAJBAWsOAgECAAsgASAEai0AACECIARBAWohBAwCCyABIARqLwAAIQIgBEECaiEEDAELIAEgBGooAAAhAiAEQQRqIQQLIAVBAXEhBQJ+AkACQAJAIANBf2oiA0ECTQRAIANBAWsOAgIDAQtCfyAGRQ0DGiABIARqMQAADAMLIAEgBGovAACtQoACfAwCCyABIARqKAAArQwBCyABIARqKQAACyEHIAAgBTYCICAAIAI2AhwgACAHNwMAQQAhAyAAQQA2AhQgACAHIAggBhsiBzcDCCAAIAdCgIAIIAdCgIAIVBs+AhALIAMLWwEBf0G4fyEDIAIQFiICIAFNBH8gACACakF/ai0AACIAQQNxQQJ0QaAeaigC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C0Egak8NAQsgByAHKQNoNwMQIAcgBykDYDcDCCAEIA0gB0EIaiAHQdwAaiAPIA4gESAQEB4hCwwBCyACIARqIQggBCAKEAcgAkERTwRAIARBEGohAgNAIAIgCkEQaiIKEAcgAkEQaiICIAhJDQALCyAIIAlrIQIgByATNgJcIAkgCCAOa0sEQCAJIAggEWtLBEBBbCELDAILIBAgAiAOayICaiIKIANqIBBNBEAgCCAKIAMQDxoMAgsgCCAKQQAgAmsQDyEIIAcgAiADaiIDNgJkIAggAmshCCAOIQILIAlBEE8EQCADIAhqIQMDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALDAELAkAgCUEHTQRAIAggAi0AADoAACAIIAItAAE6AAEgCCACLQACOgACIAggAi0AAzoAAyAIQQRqIAIgCUECdCIDQcAeaigCAGoiAhAXIAIgA0HgHmooAgBrIQIgBygCZCEDDAELIAggAhAMCyADQQlJDQAgAyAIaiEDIAhBCGoiCCACQQhqIgJrQQ9MBEADQCAIIAIQDCACQQhqIQIgCEEIaiIIIANJDQAMAgALAAsDQCAIIAIQByACQRBqIQIgCEEQaiIIIANJDQALCyAHQRhqEAQaIAsgDCALEAMiAhshDCAEIAQgC2ogAhshBCAFQX9qIgUNAAsgDBADDQFBbCEMIAdBGGoQBEECSQ0BQQAhCANAIAhBA0cEQCAAIAhBAnQiAmpBrNABaiACIAdqKAJENgIAIAhBAWohCAwBCwsgBygCXCEIC0G6fyEMIA8gCGsiACANIARrSw0AIAQEfyAEIAggABALIABqBUEACyABayEMCyAHQfAAaiQAIAwLkRcCFn8FfiMAQdABayIHJAAgByAAKALw4QEiCDYCvAEgASACaiESIAggACgCgOIBaiETAkACQCAFRQRAIAEhAwwBCyAAKALE4AEhESAAKALA4AEhFSAAKAK84AEhDyAAQQE2AozhAUEAIQgDQCAIQQNHBEAgByAIQQJ0IgJqIAAgAmpBrNABaigCADYCVCAIQQFqIQgMAQsLIAcgETYCZCAHIA82AmAgByABIA9rNgJoQWwhECAHQShqIAMgBBAGEAMNASAFQQQgBUEESBshFyAHQTxqIAdBKGogACgCABATIAdBxABqIAdBKGogACgCCBATIAdBzABqIAdB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IAdB0AFqJAAgEAslACAAQgA3AgAgAEEAOwEIIABBADoACyAAIAE2AgwgACACOgAKC7QFAQN/IwBBMGsiBCQAIABB/wFqIgVBfWohBgJAIAMvAQIEQCAEQRhqIAEgAhAGIgIQAw0BIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahASOgAAIAMgBEEIaiAEQRhqEBI6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0FIAEgBEEQaiAEQRhqEBI6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBSABIARBCGogBEEYahASOgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEjoAACABIAJqIABrIQIMAwsgAyAEQRBqIARBGGoQEjoAAiADIARBCGogBEEYahASOgADIANBBGohAwwAAAsACyAEQRhqIAEgAhAGIgIQAw0AIARBEGogBEEYaiADEBwgBEEIaiAEQRhqIAMQHCAAIQMDQAJAIARBGGoQBCADIAZPckUEQCADIARBEGogBEEYahAROgAAIAMgBEEIaiAEQRhqEBE6AAEgBEEYahAERQ0BIANBAmohAwsgBUF+aiEFAn8DQEG6fyECIAMiASAFSw0EIAEgBEEQaiAEQRhqEBE6AAAgAUEBaiEDIARBGGoQBEEDRgRAQQIhAiAEQQhqDAILIAMgBUsNBCABIARBCGogBEEYahAROgABIAFBAmohA0EDIQIgBEEYahAEQQNHDQALIARBEGoLIQUgAyAFIARBGGoQEToAACABIAJqIABrIQIMAgsgAyAEQRBqIARBGGoQEToAAiADIARBCGogBEEYahAROgADIANBBGohAwwAAAsACyAEQTBqJAAgAgtpAQF/An8CQAJAIAJBB00NACABKAAAQbfIwuF+Rw0AIAAgASgABDYCmOIBQWIgAEEQaiABIAIQPiIDEAMNAhogAEKBgICAEDcDiOEBIAAgASADaiACIANrECoMAQsgACABIAIQKgtBAAsLrQMBBn8jAEGAAWsiAyQAQWIhCAJAIAJBCUkNACAAQZjQAGogAUEIaiIEIAJBeGogAEGY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wOABCwutAgIEfwF+IwBBQGoiBCQAAkACQCACQQhJDQAgASgAAEFwcUHQ1LTCAUcNACABIAIQIiEBIABCADcDCCAAQQA2AgQgACABNgIADAELIARBGGogASACEC0iAxADBEAgACADEBoMAQsgAwRAIABBuH8QGgwBCyACIAQoAjAiA2shAiABIANqIQMDQAJAIAAgAyACIARBCGoQLCIFEAMEfyAFBSACIAVBA2oiBU8NAUG4fwsQGgwCCyAGQQFqIQYgAiAFayECIAMgBWohAyAEKAIMRQ0ACyAEKAI4BEAgAkEDTQRAIABBuH8QGgwCCyADQQRqIQMLIAQoAighAiAEKQMYIQcgAEEANgIEIAAgAyABazYCACAAIAIgBmytIAcgB0J/URs3AwgLIARBQGskAAslAQF/IwBBEGsiAiQAIAIgACABEFEgAigCACEAIAJBEGokACAAC30BBH8jAEGQBGsiBCQAIARB/wE2AggCQCAEQRBqIARBCGogBEEMaiABIAIQFSIGEAMEQCAGIQUMAQtBVCEFIAQoAgwiB0EGSw0AIAMgBEEQaiAEKAIIIAcQQSIFEAMNACAAIAEgBmogAiAGayADEDwhBQsgBEGQBGokACAFC4cBAgJ/An5BABAWIQMCQANAIAEgA08EQAJAIAAoAABBcHFB0NS0wgFGBEAgACABECIiAhADRQ0BQn4PCyAAIAEQVSIEQn1WDQMgBCAFfCIFIARUIQJCfiEEIAINAyAAIAEQUiICEAMNAwsgASACayEBIAAgAmohAAwBCwtCfiAFIAEbIQQLIAQLPwIBfwF+IwBBMGsiAiQAAn5CfiACQQhqIAAgARAtDQAaQgAgAigCHEEBRg0AGiACKQMICyEDIAJBMGokACADC40BAQJ/IwBBMGsiASQAAkAgAEUNACAAKAKI4gENACABIABB/OEBaigCADYCKCABIAApAvThATcDICAAEDAgACgCqOIBIQIgASABKAIoNgIYIAEgASkDIDcDECACIAFBEGoQGyAAQQA2AqjiASABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALKgECfyMAQRBrIgAkACAAQQA2AgggAEIANwMAIAAQWCEBIABBEGokACABC4cBAQN/IwBBEGsiAiQAAkAgACgCAEUgACgCBEVzDQAgAiAAKAIINgIIIAIgACkCADcDAAJ/IAIoAgAiAQRAIAIoAghBqOMJIAERBQAMAQtBqOMJECgLIgFFDQAgASAAKQIANwL04QEgAUH84QFqIAAoAgg2AgAgARBZIAEhAwsgAkEQaiQAIAMLywEBAn8jAEEgayIBJAAgAEGBgIDAADYCtOIBIABBADYCiOIBIABBADYC7OEBIABCADcDkOIBIABBADYCpOMJIABBADYC3OIBIABCADcCzOIBIABBADYCvOIBIABBADYCxOABIABCADcCnOIBIABBpOIBakIANwIAIABBrOIBakEANgIAIAFCADcCECABQgA3AhggASABKQMYNwMIIAEgASkDEDcDACABKAIIQQh2QQFxIQIgAEEANgLg4gEgACACNgKM4gEgAUEgaiQAC3YBA38jAEEwayIBJAAgAARAIAEgAEHE0AFqIgIoAgA2AiggASAAKQK80AE3AyAgACgCACEDIAEgAigCADYCGCABIAApArzQATcDECADIAFBEGoQGyABIAEoAig2AgggASABKQMgNwMAIAAgARAbCyABQTBqJAALzAEBAX8gACABKAK00AE2ApjiASAAIAEoAgQiAjYCwOABIAAgAjYCvOABIAAgAiABKAIIaiICNgK44AEgACACNgLE4AEgASgCuNABBEAgAEKBgICAEDcDiOEBIAAgAUGk0ABqNgIMIAAgAUGUIGo2AgggACABQZwwajYCBCAAIAFBDGo2AgAgAEGs0AFqIAFBqNABaigCADYCACAAQbDQAWogAUGs0AFqKAIANgIAIABBtNABaiABQbDQAWooAgA2AgAPCyAAQgA3A4jhAQs7ACACRQRAQbp/DwsgBEUEQEFsDwsgAiAEEGAEQCAAIAEgAiADIAQgBRBhDwsgACABIAIgAyAEIAUQZQtGAQF/IwBBEGsiBSQAIAVBCGogBBAOAn8gBS0ACQRAIAAgASACIAMgBBAyDAELIAAgASACIAMgBBA0CyEAIAVBEGokACAACzQAIAAgAyAEIAUQNiIFEAMEQCAFDwsgBSAESQR/IAEgAiADIAVqIAQgBWsgABA1BUG4fwsLRgEBfyMAQRBrIgUkACAFQQhqIAQQDgJ/IAUtAAkEQCAAIAEgAiADIAQQYgwBCyAAIAEgAiADIAQQNQshACAFQRBqJAAgAAtZAQF/QQ8hAiABIABJBEAgAUEE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"},"./node_modules/three/examples/jsm/lights/LightProbeGenerator.js":(_A,O,d)=>{d.r(O),d.d(O,{LightProbeGenerator:()=>z});var s=d("./node_modules/three/build/three.core.js");class z{static fromCubeTexture(v){let D=0;const h=new s.Vector3,p=new s.Vector3,m=new s.Color,u=[0,0,0,0,0,0,0,0,0],l=new s.SphericalHarmonics3,R=l.coefficients;for(let Y=0;Y<6;Y++){const G=v.image[Y],x=G.width,U=G.height,j=document.createElement("canvas");j.width=x,j.height=U;const Z=j.getContext("2d");Z.drawImage(G,0,0,x,U);const CA=Z.getImageData(0,0,x,U),QA=CA.data,SA=CA.width,UA=2/SA;for(let TA=0,pA=QA.length;TA<pA;TA+=4){m.setRGB(QA[TA]/255,QA[TA+1]/255,QA[TA+2]/255),_(m,v.colorSpace);const hA=TA/4,uA=-1+(hA%SA+.5)*UA,lA=1-(Math.floor(hA/SA)+.5)*UA;switch(Y){case 0:h.set(-1,lA,-uA);break;case 1:h.set(1,lA,uA);break;case 2:h.set(-uA,1,-lA);break;case 3:h.set(-uA,-1,lA);break;case 4:h.set(-uA,lA,1);break;case 5:h.set(uA,lA,-1);break}const NA=h.lengthSq(),HA=4/(Math.sqrt(NA)*NA);D+=HA,p.copy(h).normalize(),s.SphericalHarmonics3.getBasisAt(p,u);for(let pe=0;pe<9;pe++)R[pe].x+=u[pe]*m.r*HA,R[pe].y+=u[pe]*m.g*HA,R[pe].z+=u[pe]*m.b*HA}}const N=4*Math.PI/D;for(let Y=0;Y<9;Y++)R[Y].x*=N,R[Y].y*=N,R[Y].z*=N;return new s.LightProbe(l)}static async fromCubeRenderTarget(v,D){const h=v.coordinateSystem===s.WebGLCoordinateSystem?-1:1;let p=0;const m=new s.Vector3,u=new s.Vector3,l=new s.Color,R=[0,0,0,0,0,0,0,0,0],N=new s.SphericalHarmonics3,Y=N.coefficients,G=D.texture.type,x=D.width;let U;v.isWebGLRenderer&&(G===s.HalfFloatType?U=new Uint16Array(x*x*4):U=new Uint8Array(x*x*4));for(let Z=0;Z<6;Z++){v.isWebGLRenderer?await v.readRenderTargetPixelsAsync(D,0,0,x,x,U,Z):U=await v.readRenderTargetPixelsAsync(D,0,0,x,x,0,Z);const CA=2/x;for(let QA=0,SA=U.length;QA<SA;QA+=4){let UA,TA,pA;G===s.HalfFloatType?(UA=s.DataUtils.fromHalfFloat(U[QA]),TA=s.DataUtils.fromHalfFloat(U[QA+1]),pA=s.DataUtils.fromHalfFloat(U[QA+2])):(UA=U[QA]/255,TA=U[QA+1]/255,pA=U[QA+2]/255),l.setRGB(UA,TA,pA),_(l,D.texture.colorSpace);const hA=QA/4,uA=(1-(hA%x+.5)*CA)*h,lA=1-(Math.floor(hA/x)+.5)*CA;switch(Z){case 0:m.set(-1*h,lA,uA*h);break;case 1:m.set(1*h,lA,-uA*h);break;case 2:m.set(uA,1,-lA);break;case 3:m.set(uA,-1,lA);break;case 4:m.set(uA,lA,1);break;case 5:m.set(-uA,lA,-1);break}const NA=m.lengthSq(),HA=4/(Math.sqrt(NA)*NA);p+=HA,u.copy(m).normalize(),s.SphericalHarmonics3.getBasisAt(u,R);for(let pe=0;pe<9;pe++)Y[pe].x+=R[pe]*l.r*HA,Y[pe].y+=R[pe]*l.g*HA,Y[pe].z+=R[pe]*l.b*HA}}const j=4*Math.PI/p;for(let Z=0;Z<9;Z++)Y[Z].x*=j,Y[Z].y*=j,Y[Z].z*=j;return new s.LightProbe(N)}}function _(T,v){switch(v){case s.SRGBColorSpace:T.convertSRGBToLinear();break;case s.LinearSRGBColorSpace:case s.NoColorSpace:break;default:console.warn("WARNING: LightProbeGenerator convertColorToLinear() encountered an unsupported color space.");break}return T}},"./node_modules/three/examples/jsm/loaders/DRACOLoader.js":(_A,O,d)=>{d.r(O),d.d(O,{DRACOLoader:()=>_});var s=d("./node_modules/three/build/three.core.js");const z=new WeakMap;class _ extends s.Loader{constructor(D){super(D),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"}}setDecoderPath(D){return this.decoderPath=D,this}setDecoderConfig(D){return this.decoderConfig=D,this}setWorkerLimit(D){return this.workerLimit=D,this}load(D,h,p,m){const u=new s.FileLoader(this.manager);u.setPath(this.path),u.setResponseType("arraybuffer"),u.setRequestHeader(this.requestHeader),u.setWithCredentials(this.withCredentials),u.load(D,l=>{this.parse(l,h,m)},p,m)}parse(D,h,p=()=>{}){this.decodeDracoFile(D,h,null,null,s.SRGBColorSpace,p).catch(p)}decodeDracoFile(D,h,p,m,u=s.LinearSRGBColorSpace,l=()=>{}){const R={attributeIDs:p||this.defaultAttributeIDs,attributeTypes:m||this.defaultAttributeTypes,useUniqueIDs:!!p,vertexColorSpace:u};return this.decodeGeometry(D,R).then(h).catch(l)}decodeGeometry(D,h){const p=JSON.stringify(h);if(z.has(D)){const N=z.get(D);if(N.key===p)return N.promise;if(D.byteLength===0)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let m;const u=this.workerNextTaskID++,l=D.byteLength,R=this._getWorker(u,l).then(N=>(m=N,new Promise((Y,G)=>{m._callbacks[u]={resolve:Y,reject:G},m.postMessage({type:"decode",id:u,taskConfig:h,buffer:D},[D])}))).then(N=>this._createGeometry(N.geometry));return R.catch(()=>!0).then(()=>{m&&u&&this._releaseTask(m,u)}),z.set(D,{key:p,promise:R}),R}_createGeometry(D){const h=new s.BufferGeometry;D.index&&h.setIndex(new s.BufferAttribute(D.index.array,1));for(let p=0;p<D.attributes.length;p++){const m=D.attributes[p],u=m.name,l=m.array,R=m.itemSize,N=new s.BufferAttribute(l,R);u==="color"&&(this._assignVertexColorSpace(N,m.vertexColorSpace),N.normalized=!(l instanceof Float32Array)),h.setAttribute(u,N)}return h}_assignVertexColorSpace(D,h){if(h!==s.SRGBColorSpace)return;const p=new s.Color;for(let m=0,u=D.count;m<u;m++)p.fromBufferAttribute(D,m),s.ColorManagement.toWorkingColorSpace(p,s.SRGBColorSpace),D.setXYZ(m,p.r,p.g,p.b)}_loadLibrary(D,h){const p=new s.FileLoader(this.manager);return p.setPath(this.decoderPath),p.setResponseType(h),p.setWithCredentials(this.withCredentials),new Promise((m,u)=>{p.load(D,m,void 0,u)})}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;const D=typeof WebAssembly!="object"||this.decoderConfig.type==="js",h=[];return D?h.push(this._loadLibrary("draco_decoder.js","text")):(h.push(this._loadLibrary("draco_wasm_wrapper.js","text")),h.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(h).then(p=>{const m=p[0];D||(this.decoderConfig.wasmBinary=p[1]);const u=T.toString(),l=["/* draco decoder */",m,"","/* worker */",u.substring(u.indexOf("{")+1,u.lastIndexOf("}"))].join(`
`);this.workerSourceURL=URL.createObjectURL(new Blob([l]))}),this.decoderPending}_getWorker(D,h){return this._initDecoder().then(()=>{if(this.workerPool.length<this.workerLimit){const m=new Worker(this.workerSourceURL);m._callbacks={},m._taskCosts={},m._taskLoad=0,m.postMessage({type:"init",decoderConfig:this.decoderConfig}),m.onmessage=function(u){const l=u.data;switch(l.type){case"decode":m._callbacks[l.id].resolve(l);break;case"error":m._callbacks[l.id].reject(l);break;default:console.error('THREE.DRACOLoader: Unexpected message, "'+l.type+'"')}},this.workerPool.push(m)}else this.workerPool.sort(function(m,u){return m._taskLoad>u._taskLoad?-1:1});const p=this.workerPool[this.workerPool.length-1];return p._taskCosts[D]=h,p._taskLoad+=h,p})}_releaseTask(D,h){D._taskLoad-=D._taskCosts[h],delete D._callbacks[h],delete D._taskCosts[h]}debug(){console.log("Task load: ",this.workerPool.map(D=>D._taskLoad))}dispose(){for(let D=0;D<this.workerPool.length;++D)this.workerPool[D].terminate();return this.workerPool.length=0,this.workerSourceURL!==""&&URL.revokeObjectURL(this.workerSourceURL),this}}function T(){let v,D;onmessage=function(l){const R=l.data;switch(R.type){case"init":v=R.decoderConfig,D=new Promise(function(G){v.onModuleLoaded=function(x){G({draco:x})},DracoDecoderModule(v)});break;case"decode":const N=R.buffer,Y=R.taskConfig;D.then(G=>{const x=G.draco,U=new x.Decoder;try{const j=h(x,U,new Int8Array(N),Y),Z=j.attributes.map(CA=>CA.array.buffer);j.index&&Z.push(j.index.array.buffer),self.postMessage({type:"decode",id:R.id,geometry:j},Z)}catch(j){console.error(j),self.postMessage({type:"error",id:R.id,error:j.message})}finally{x.destroy(U)}});break}};function h(l,R,N,Y){const G=Y.attributeIDs,x=Y.attributeTypes;let U,j;const Z=R.GetEncodedGeometryType(N);if(Z===l.TRIANGULAR_MESH)U=new l.Mesh,j=R.DecodeArrayToMesh(N,N.byteLength,U);else if(Z===l.POINT_CLOUD)U=new l.PointCloud,j=R.DecodeArrayToPointCloud(N,N.byteLength,U);else throw new Error("THREE.DRACOLoader: Unexpected geometry type.");if(!j.ok()||U.ptr===0)throw new Error("THREE.DRACOLoader: Decoding failed: "+j.error_msg());const CA={index:null,attributes:[]};for(const QA in G){const SA=self[x[QA]];let UA,TA;if(Y.useUniqueIDs)TA=G[QA],UA=R.GetAttributeByUniqueId(U,TA);else{if(TA=R.GetAttributeId(U,l[G[QA]]),TA===-1)continue;UA=R.GetAttribute(U,TA)}const pA=m(l,R,U,QA,SA,UA);QA==="color"&&(pA.vertexColorSpace=Y.vertexColorSpace),CA.attributes.push(pA)}return Z===l.TRIANGULAR_MESH&&(CA.index=p(l,R,U)),l.destroy(U),CA}function p(l,R,N){const G=N.num_faces()*3,x=G*4,U=l._malloc(x);R.GetTrianglesUInt32Array(N,x,U);const j=new Uint32Array(l.HEAPF32.buffer,U,G).slice();return l._free(U),{array:j,itemSize:1}}function m(l,R,N,Y,G,x){const U=x.num_components(),Z=N.num_points()*U,CA=Z*G.BYTES_PER_ELEMENT,QA=u(l,G),SA=l._malloc(CA);R.GetAttributeDataArrayForAllPoints(N,x,QA,CA,SA);const UA=new G(l.HEAPF32.buffer,SA,Z).slice();return l._free(SA),{name:Y,array:UA,itemSize:U}}function u(l,R){switch(R){case Float32Array:return l.DT_FLOAT32;case Int8Array:return l.DT_INT8;case Int16Array:return l.DT_INT16;case Int32Array:return l.DT_INT32;case Uint8Array:return l.DT_UINT8;case Uint16Array:return l.DT_UINT16;case Uint32Array:return l.DT_UINT32}}}},"./node_modules/three/examples/jsm/loaders/GLTFLoader.js":(_A,O,d)=>{d.r(O),d.d(O,{GLTFLoader:()=>_});var s=d("./node_modules/three/build/three.core.js"),z=d("./node_modules/three/examples/jsm/utils/BufferGeometryUtils.js");class _ extends s.Loader{constructor(xA){super(xA),this.dracoLoader=null,this.ktx2Loader=null,this.meshoptDecoder=null,this.pluginCallbacks=[],this.register(function(vA){return new m(vA)}),this.register(function(vA){return new u(vA)}),this.register(function(vA){return new Z(vA)}),this.register(function(vA){return new CA(vA)}),this.register(function(vA){return new QA(vA)}),this.register(function(vA){return new R(vA)}),this.register(function(vA){return new N(vA)}),this.register(function(vA){return new Y(vA)}),this.register(function(vA){return new G(vA)}),this.register(function(vA){return new p(vA)}),this.register(function(vA){return new x(vA)}),this.register(function(vA){return new l(vA)}),this.register(function(vA){return new j(vA)}),this.register(function(vA){return new U(vA)}),this.register(function(vA){return new D(vA)}),this.register(function(vA){return new SA(vA)}),this.register(function(vA){return new UA(vA)})}load(xA,vA,ie,ZA){const jA=this;let Be;if(this.resourcePath!=="")Be=this.resourcePath;else if(this.path!==""){const k=s.LoaderUtils.extractUrlBase(xA);Be=s.LoaderUtils.resolveURL(k,this.path)}else Be=s.LoaderUtils.extractUrlBase(xA);this.manager.itemStart(xA);const aA=function(k){ZA?ZA(k):console.error(k),jA.manager.itemError(xA),jA.manager.itemEnd(xA)},H=new s.FileLoader(this.manager);H.setPath(this.path),H.setResponseType("arraybuffer"),H.setRequestHeader(this.requestHeader),H.setWithCredentials(this.withCredentials),H.load(xA,function(k){try{jA.parse(k,Be,function(DA){vA(DA),jA.manager.itemEnd(xA)},aA)}catch(DA){aA(DA)}},ie,aA)}setDRACOLoader(xA){return this.dracoLoader=xA,this}setKTX2Loader(xA){return this.ktx2Loader=xA,this}setMeshoptDecoder(xA){return this.meshoptDecoder=xA,this}register(xA){return this.pluginCallbacks.indexOf(xA)===-1&&this.pluginCallbacks.push(xA),this}unregister(xA){return this.pluginCallbacks.indexOf(xA)!==-1&&this.pluginCallbacks.splice(this.pluginCallbacks.indexOf(xA),1),this}parse(xA,vA,ie,ZA){let jA;const Be={},aA={},H=new TextDecoder;if(typeof xA=="string")jA=JSON.parse(xA);else if(xA instanceof ArrayBuffer)if(H.decode(new Uint8Array(xA,0,4))===TA){try{Be[v.KHR_BINARY_GLTF]=new uA(xA)}catch(YA){ZA&&ZA(YA);return}jA=JSON.parse(Be[v.KHR_BINARY_GLTF].content)}else jA=JSON.parse(H.decode(xA));else jA=xA;if(jA.asset===void 0||jA.asset.version[0]<2){ZA&&ZA(new Error("THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported."));return}const k=new Ao(jA,{path:vA||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});k.fileLoader.setRequestHeader(this.requestHeader);for(let DA=0;DA<this.pluginCallbacks.length;DA++){const YA=this.pluginCallbacks[DA](k);YA.name||console.error("THREE.GLTFLoader: Invalid plugin found: missing name"),aA[YA.name]=YA,Be[YA.name]=!0}if(jA.extensionsUsed)for(let DA=0;DA<jA.extensionsUsed.length;++DA){const YA=jA.extensionsUsed[DA],ue=jA.extensionsRequired||[];switch(YA){case v.KHR_MATERIALS_UNLIT:Be[YA]=new h;break;case v.KHR_DRACO_MESH_COMPRESSION:Be[YA]=new lA(jA,this.dracoLoader);break;case v.KHR_TEXTURE_TRANSFORM:Be[YA]=new NA;break;case v.KHR_MESH_QUANTIZATION:Be[YA]=new HA;break;default:ue.indexOf(YA)>=0&&aA[YA]===void 0&&console.warn('THREE.GLTFLoader: Unknown extension "'+YA+'".')}}k.setExtensions(Be),k.setPlugins(aA),k.parse(ie,ZA)}parseAsync(xA,vA){const ie=this;return new Promise(function(ZA,jA){ie.parse(xA,vA,ZA,jA)})}}function T(){let Kt={};return{get:function(xA){return Kt[xA]},add:function(xA,vA){Kt[xA]=vA},remove:function(xA){delete Kt[xA]},removeAll:function(){Kt={}}}}const v={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 D{constructor(xA){this.parser=xA,this.name=v.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){const xA=this.parser,vA=this.parser.json.nodes||[];for(let ie=0,ZA=vA.length;ie<ZA;ie++){const jA=vA[ie];jA.extensions&&jA.extensions[this.name]&&jA.extensions[this.name].light!==void 0&&xA._addNodeRef(this.cache,jA.extensions[this.name].light)}}_loadLight(xA){const vA=this.parser,ie="light:"+xA;let ZA=vA.cache.get(ie);if(ZA)return ZA;const jA=vA.json,H=((jA.extensions&&jA.extensions[this.name]||{}).lights||[])[xA];let k;const DA=new s.Color(16777215);H.color!==void 0&&DA.setRGB(H.color[0],H.color[1],H.color[2],s.LinearSRGBColorSpace);const YA=H.range!==void 0?H.range:0;switch(H.type){case"directional":k=new s.DirectionalLight(DA),k.target.position.set(0,0,-1),k.add(k.target);break;case"point":k=new s.PointLight(DA),k.distance=YA;break;case"spot":k=new s.SpotLight(DA),k.distance=YA,H.spot=H.spot||{},H.spot.innerConeAngle=H.spot.innerConeAngle!==void 0?H.spot.innerConeAngle:0,H.spot.outerConeAngle=H.spot.outerConeAngle!==void 0?H.spot.outerConeAngle:Math.PI/4,k.angle=H.spot.outerConeAngle,k.penumbra=1-H.spot.innerConeAngle/H.spot.outerConeAngle,k.target.position.set(0,0,-1),k.add(k.target);break;default:throw new Error("THREE.GLTFLoader: Unexpected light type: "+H.type)}return k.position.set(0,0,0),bt(k,H),H.intensity!==void 0&&(k.intensity=H.intensity),k.name=vA.createUniqueName(H.name||"light_"+xA),ZA=Promise.resolve(k),vA.cache.add(ie,ZA),ZA}getDependency(xA,vA){if(xA==="light")return this._loadLight(vA)}createNodeAttachment(xA){const vA=this,ie=this.parser,jA=ie.json.nodes[xA],aA=(jA.extensions&&jA.extensions[this.name]||{}).light;return aA===void 0?null:this._loadLight(aA).then(function(H){return ie._getNodeRef(vA.cache,aA,H)})}}class h{constructor(){this.name=v.KHR_MATERIALS_UNLIT}getMaterialType(){return s.MeshBasicMaterial}extendParams(xA,vA,ie){const ZA=[];xA.color=new s.Color(1,1,1),xA.opacity=1;const jA=vA.pbrMetallicRoughness;if(jA){if(Array.isArray(jA.baseColorFactor)){const Be=jA.baseColorFactor;xA.color.setRGB(Be[0],Be[1],Be[2],s.LinearSRGBColorSpace),xA.opacity=Be[3]}jA.baseColorTexture!==void 0&&ZA.push(ie.assignTexture(xA,"map",jA.baseColorTexture,s.SRGBColorSpace))}return Promise.all(ZA)}}class p{constructor(xA){this.parser=xA,this.name=v.KHR_MATERIALS_EMISSIVE_STRENGTH}extendMaterialParams(xA,vA){const ZA=this.parser.json.materials[xA];if(!ZA.extensions||!ZA.extensions[this.name])return Promise.resolve();const jA=ZA.extensions[this.name].emissiveStrength;return jA!==void 0&&(vA.emissiveIntensity=jA),Promise.resolve()}}class m{constructor(xA){this.parser=xA,this.name=v.KHR_MATERIALS_CLEARCOAT}getMaterialType(xA){const ie=this.parser.json.materials[xA];return!ie.extensions||!ie.extensions[this.name]?null:s.MeshPhysicalMaterial}extendMaterialParams(xA,vA){const ie=this.parser,ZA=ie.json.materials[xA];if(!ZA.extensions||!ZA.extensions[this.name])return Promise.resolve();const jA=[],Be=ZA.extensions[this.name];if(Be.clearcoatFactor!==void 0&&(vA.clearcoat=Be.clearcoatFactor),Be.clearcoatTexture!==void 0&&jA.push(ie.assignTexture(vA,"clearcoatMap",Be.clearcoatTexture)),Be.clearcoatRoughnessFactor!==void 0&&(vA.clearcoatRoughness=Be.clearcoatRoughnessFactor),Be.clearcoatRoughnessTexture!==void 0&&jA.push(ie.assignTexture(vA,"clearcoatRoughnessMap",Be.clearcoatRoughnessTexture)),Be.clearcoatNormalTexture!==void 0&&(jA.push(ie.assignTexture(vA,"clearcoatNormalMap",Be.clearcoatNormalTexture)),Be.clearcoatNormalTexture.scale!==void 0)){const aA=Be.clearcoatNormalTexture.scale;vA.clearcoatNormalScale=new s.Vector2(aA,aA)}return Promise.all(jA)}}class u{constructor(xA){this.parser=xA,this.name=v.KHR_MATERIALS_DISPERSION}getMaterialType(xA){const ie=this.parser.json.materials[xA];return!ie.extensions||!ie.extensions[this.name]?null:s.MeshPhysicalMaterial}extendMaterialParams(xA,vA){const ZA=this.parser.json.materials[xA];if(!ZA.extensions||!ZA.extensions[this.name])return Promise.resolve();const jA=ZA.extensions[this.name];return vA.dispersion=jA.dispersion!==void 0?jA.dispersion:0,Promise.resolve()}}class l{constructor(xA){this.parser=xA,this.name=v.KHR_MATERIALS_IRIDESCENCE}getMaterialType(xA){const ie=this.parser.json.materials[xA];return!ie.extensions||!ie.extensions[this.name]?null:s.MeshPhysicalMaterial}extendMaterialParams(xA,vA){const ie=this.parser,ZA=ie.json.materials[xA];if(!ZA.extensions||!ZA.extensions[this.name])return Promise.resolve();const jA=[],Be=ZA.extensions[this.name];return Be.iridescenceFactor!==void 0&&(vA.iridescence=Be.iridescenceFactor),Be.iridescenceTexture!==void 0&&jA.push(ie.assignTexture(vA,"iridescenceMap",Be.iridescenceTexture)),Be.iridescenceIor!==void 0&&(vA.iridescenceIOR=Be.iridescenceIor),vA.iridescenceThicknessRange===void 0&&(vA.iridescenceThicknessRange=[100,400]),Be.iridescenceThicknessMinimum!==void 0&&(vA.iridescenceThicknessRange[0]=Be.iridescenceThicknessMinimum),Be.iridescenceThicknessMaximum!==void 0&&(vA.iridescenceThicknessRange[1]=Be.iridescenceThicknessMaximum),Be.iridescenceThicknessTexture!==void 0&&jA.push(ie.assignTexture(vA,"iridescenceThicknessMap",Be.iridescenceThicknessTexture)),Promise.all(jA)}}class R{constructor(xA){this.parser=xA,this.name=v.KHR_MATERIALS_SHEEN}getMaterialType(xA){const ie=this.parser.json.materials[xA];return!ie.extensions||!ie.extensions[this.name]?null:s.MeshPhysicalMaterial}extendMaterialParams(xA,vA){const ie=this.parser,ZA=ie.json.materials[xA];if(!ZA.extensions||!ZA.extensions[this.name])return Promise.resolve();const jA=[];vA.sheenColor=new s.Color(0,0,0),vA.sheenRoughness=0,vA.sheen=1;const Be=ZA.extensions[this.name];if(Be.sheenColorFactor!==void 0){const aA=Be.sheenColorFactor;vA.sheenColor.setRGB(aA[0],aA[1],aA[2],s.LinearSRGBColorSpace)}return Be.sheenRoughnessFactor!==void 0&&(vA.sheenRoughness=Be.sheenRoughnessFactor),Be.sheenColorTexture!==void 0&&jA.push(ie.assignTexture(vA,"sheenColorMap",Be.sheenColorTexture,s.SRGBColorSpace)),Be.sheenRoughnessTexture!==void 0&&jA.push(ie.assignTexture(vA,"sheenRoughnessMap",Be.sheenRoughnessTexture)),Promise.all(jA)}}class N{constructor(xA){this.parser=xA,this.name=v.KHR_MATERIALS_TRANSMISSION}getMaterialType(xA){const ie=this.parser.json.materials[xA];return!ie.extensions||!ie.extensions[this.name]?null:s.MeshPhysicalMaterial}extendMaterialParams(xA,vA){const ie=this.parser,ZA=ie.json.materials[xA];if(!ZA.extensions||!ZA.extensions[this.name])return Promise.resolve();const jA=[],Be=ZA.extensions[this.name];return Be.transmissionFactor!==void 0&&(vA.transmission=Be.transmissionFactor),Be.transmissionTexture!==void 0&&jA.push(ie.assignTexture(vA,"transmissionMap",Be.transmissionTexture)),Promise.all(jA)}}class Y{constructor(xA){this.parser=xA,this.name=v.KHR_MATERIALS_VOLUME}getMaterialType(xA){const ie=this.parser.json.materials[xA];return!ie.extensions||!ie.extensions[this.name]?null:s.MeshPhysicalMaterial}extendMaterialParams(xA,vA){const ie=this.parser,ZA=ie.json.materials[xA];if(!ZA.extensions||!ZA.extensions[this.name])return Promise.resolve();const jA=[],Be=ZA.extensions[this.name];vA.thickness=Be.thicknessFactor!==void 0?Be.thicknessFactor:0,Be.thicknessTexture!==void 0&&jA.push(ie.assignTexture(vA,"thicknessMap",Be.thicknessTexture)),vA.attenuationDistance=Be.attenuationDistance||1/0;const aA=Be.attenuationColor||[1,1,1];return vA.attenuationColor=new s.Color().setRGB(aA[0],aA[1],aA[2],s.LinearSRGBColorSpace),Promise.all(jA)}}class G{constructor(xA){this.parser=xA,this.name=v.KHR_MATERIALS_IOR}getMaterialType(xA){const ie=this.parser.json.materials[xA];return!ie.extensions||!ie.extensions[this.name]?null:s.MeshPhysicalMaterial}extendMaterialParams(xA,vA){const ZA=this.parser.json.materials[xA];if(!ZA.extensions||!ZA.extensions[this.name])return Promise.resolve();const jA=ZA.extensions[this.name];return vA.ior=jA.ior!==void 0?jA.ior:1.5,Promise.resolve()}}class x{constructor(xA){this.parser=xA,this.name=v.KHR_MATERIALS_SPECULAR}getMaterialType(xA){const ie=this.parser.json.materials[xA];return!ie.extensions||!ie.extensions[this.name]?null:s.MeshPhysicalMaterial}extendMaterialParams(xA,vA){const ie=this.parser,ZA=ie.json.materials[xA];if(!ZA.extensions||!ZA.extensions[this.name])return Promise.resolve();const jA=[],Be=ZA.extensions[this.name];vA.specularIntensity=Be.specularFactor!==void 0?Be.specularFactor:1,Be.specularTexture!==void 0&&jA.push(ie.assignTexture(vA,"specularIntensityMap",Be.specularTexture));const aA=Be.specularColorFactor||[1,1,1];return vA.specularColor=new s.Color().setRGB(aA[0],aA[1],aA[2],s.LinearSRGBColorSpace),Be.specularColorTexture!==void 0&&jA.push(ie.assignTexture(vA,"specularColorMap",Be.specularColorTexture,s.SRGBColorSpace)),Promise.all(jA)}}class U{constructor(xA){this.parser=xA,this.name=v.EXT_MATERIALS_BUMP}getMaterialType(xA){const ie=this.parser.json.materials[xA];return!ie.extensions||!ie.extensions[this.name]?null:s.MeshPhysicalMaterial}extendMaterialParams(xA,vA){const ie=this.parser,ZA=ie.json.materials[xA];if(!ZA.extensions||!ZA.extensions[this.name])return Promise.resolve();const jA=[],Be=ZA.extensions[this.name];return vA.bumpScale=Be.bumpFactor!==void 0?Be.bumpFactor:1,Be.bumpTexture!==void 0&&jA.push(ie.assignTexture(vA,"bumpMap",Be.bumpTexture)),Promise.all(jA)}}class j{constructor(xA){this.parser=xA,this.name=v.KHR_MATERIALS_ANISOTROPY}getMaterialType(xA){const ie=this.parser.json.materials[xA];return!ie.extensions||!ie.extensions[this.name]?null:s.MeshPhysicalMaterial}extendMaterialParams(xA,vA){const ie=this.parser,ZA=ie.json.materials[xA];if(!ZA.extensions||!ZA.extensions[this.name])return Promise.resolve();const jA=[],Be=ZA.extensions[this.name];return Be.anisotropyStrength!==void 0&&(vA.anisotropy=Be.anisotropyStrength),Be.anisotropyRotation!==void 0&&(vA.anisotropyRotation=Be.anisotropyRotation),Be.anisotropyTexture!==void 0&&jA.push(ie.assignTexture(vA,"anisotropyMap",Be.anisotropyTexture)),Promise.all(jA)}}class Z{constructor(xA){this.parser=xA,this.name=v.KHR_TEXTURE_BASISU}loadTexture(xA){const vA=this.parser,ie=vA.json,ZA=ie.textures[xA];if(!ZA.extensions||!ZA.extensions[this.name])return null;const jA=ZA.extensions[this.name],Be=vA.options.ktx2Loader;if(!Be){if(ie.extensionsRequired&&ie.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return vA.loadTextureImage(xA,jA.source,Be)}}class CA{constructor(xA){this.parser=xA,this.name=v.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(xA){const vA=this.name,ie=this.parser,ZA=ie.json,jA=ZA.textures[xA];if(!jA.extensions||!jA.extensions[vA])return null;const Be=jA.extensions[vA],aA=ZA.images[Be.source];let H=ie.textureLoader;if(aA.uri){const k=ie.options.manager.getHandler(aA.uri);k!==null&&(H=k)}return this.detectSupport().then(function(k){if(k)return ie.loadTextureImage(xA,Be.source,H);if(ZA.extensionsRequired&&ZA.extensionsRequired.indexOf(vA)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return ie.loadTexture(xA)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(xA){const vA=new Image;vA.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",vA.onload=vA.onerror=function(){xA(vA.height===1)}})),this.isSupported}}class QA{constructor(xA){this.parser=xA,this.name=v.EXT_TEXTURE_AVIF,this.isSupported=null}loadTexture(xA){const vA=this.name,ie=this.parser,ZA=ie.json,jA=ZA.textures[xA];if(!jA.extensions||!jA.extensions[vA])return null;const Be=jA.extensions[vA],aA=ZA.images[Be.source];let H=ie.textureLoader;if(aA.uri){const k=ie.options.manager.getHandler(aA.uri);k!==null&&(H=k)}return this.detectSupport().then(function(k){if(k)return ie.loadTextureImage(xA,Be.source,H);if(ZA.extensionsRequired&&ZA.extensionsRequired.indexOf(vA)>=0)throw new Error("THREE.GLTFLoader: AVIF required by asset but unsupported.");return ie.loadTexture(xA)})}detectSupport(){return this.isSupported||(this.isSupported=new Promise(function(xA){const vA=new Image;vA.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAABcAAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAEAAAABAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQAMAAAAABNjb2xybmNseAACAAIABoAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAAB9tZGF0EgAKCBgABogQEDQgMgkQAAAAB8dSLfI=",vA.onload=vA.onerror=function(){xA(vA.height===1)}})),this.isSupported}}class SA{constructor(xA){this.name=v.EXT_MESHOPT_COMPRESSION,this.parser=xA}loadBufferView(xA){const vA=this.parser.json,ie=vA.bufferViews[xA];if(ie.extensions&&ie.extensions[this.name]){const ZA=ie.extensions[this.name],jA=this.parser.getDependency("buffer",ZA.buffer),Be=this.parser.options.meshoptDecoder;if(!Be||!Be.supported){if(vA.extensionsRequired&&vA.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return jA.then(function(aA){const H=ZA.byteOffset||0,k=ZA.byteLength||0,DA=ZA.count,YA=ZA.byteStride,ue=new Uint8Array(aA,H,k);return Be.decodeGltfBufferAsync?Be.decodeGltfBufferAsync(DA,YA,ue,ZA.mode,ZA.filter).then(function(De){return De.buffer}):Be.ready.then(function(){const De=new ArrayBuffer(DA*YA);return Be.decodeGltfBuffer(new Uint8Array(De),DA,YA,ue,ZA.mode,ZA.filter),De})})}else return null}}class UA{constructor(xA){this.name=v.EXT_MESH_GPU_INSTANCING,this.parser=xA}createNodeMesh(xA){const vA=this.parser.json,ie=vA.nodes[xA];if(!ie.extensions||!ie.extensions[this.name]||ie.mesh===void 0)return null;const ZA=vA.meshes[ie.mesh];for(const k of ZA.primitives)if(k.mode!==ye.TRIANGLES&&k.mode!==ye.TRIANGLE_STRIP&&k.mode!==ye.TRIANGLE_FAN&&k.mode!==void 0)return null;const Be=ie.extensions[this.name].attributes,aA=[],H={};for(const k in Be)aA.push(this.parser.getDependency("accessor",Be[k]).then(DA=>(H[k]=DA,H[k])));return aA.length<1?null:(aA.push(this.parser.createNodeMesh(xA)),Promise.all(aA).then(k=>{const DA=k.pop(),YA=DA.isGroup?DA.children:[DA],ue=k[0].count,De=[];for(const si of YA){const Mi=new s.Matrix4,Si=new s.Vector3,nn=new s.Quaternion,zi=new s.Vector3(1,1,1),Zr=new s.InstancedMesh(si.geometry,si.material,ue);for(let kn=0;kn<ue;kn++)H.TRANSLATION&&Si.fromBufferAttribute(H.TRANSLATION,kn),H.ROTATION&&nn.fromBufferAttribute(H.ROTATION,kn),H.SCALE&&zi.fromBufferAttribute(H.SCALE,kn),Zr.setMatrixAt(kn,Mi.compose(Si,nn,zi));for(const kn in H)if(kn==="_COLOR_0"){const hr=H[kn];Zr.instanceColor=new s.InstancedBufferAttribute(hr.array,hr.itemSize,hr.normalized)}else kn!=="TRANSLATION"&&kn!=="ROTATION"&&kn!=="SCALE"&&si.geometry.setAttribute(kn,H[kn]);s.Object3D.prototype.copy.call(Zr,si),this.parser.assignFinalMaterial(Zr),De.push(Zr)}return DA.isGroup?(DA.clear(),DA.add(...De),DA):De[0]}))}}const TA="glTF",pA=12,hA={JSON:1313821514,BIN:5130562};class uA{constructor(xA){this.name=v.KHR_BINARY_GLTF,this.content=null,this.body=null;const vA=new DataView(xA,0,pA),ie=new TextDecoder;if(this.header={magic:ie.decode(new Uint8Array(xA.slice(0,4))),version:vA.getUint32(4,!0),length:vA.getUint32(8,!0)},this.header.magic!==TA)throw new Error("THREE.GLTFLoader: Unsupported glTF-Binary header.");if(this.header.version<2)throw new Error("THREE.GLTFLoader: Legacy binary file detected.");const ZA=this.header.length-pA,jA=new DataView(xA,pA);let Be=0;for(;Be<ZA;){const aA=jA.getUint32(Be,!0);Be+=4;const H=jA.getUint32(Be,!0);if(Be+=4,H===hA.JSON){const k=new Uint8Array(xA,pA+Be,aA);this.content=ie.decode(k)}else if(H===hA.BIN){const k=pA+Be;this.body=xA.slice(k,k+aA)}Be+=aA}if(this.content===null)throw new Error("THREE.GLTFLoader: JSON content not found.")}}class lA{constructor(xA,vA){if(!vA)throw new Error("THREE.GLTFLoader: No DRACOLoader instance provided.");this.name=v.KHR_DRACO_MESH_COMPRESSION,this.json=xA,this.dracoLoader=vA,this.dracoLoader.preload()}decodePrimitive(xA,vA){const ie=this.json,ZA=this.dracoLoader,jA=xA.extensions[this.name].bufferView,Be=xA.extensions[this.name].attributes,aA={},H={},k={};for(const DA in Be){const YA=gA[DA]||DA.toLowerCase();aA[YA]=Be[DA]}for(const DA in xA.attributes){const YA=gA[DA]||DA.toLowerCase();if(Be[DA]!==void 0){const ue=ie.accessors[xA.attributes[DA]],De=Ye[ue.componentType];k[YA]=De.name,H[YA]=ue.normalized===!0}}return vA.getDependency("bufferView",jA).then(function(DA){return new Promise(function(YA,ue){ZA.decodeDracoFile(DA,function(De){for(const si in De.attributes){const Mi=De.attributes[si],Si=H[si];Si!==void 0&&(Mi.normalized=Si)}YA(De)},aA,k,s.LinearSRGBColorSpace,ue)})})}}class NA{constructor(){this.name=v.KHR_TEXTURE_TRANSFORM}extendTexture(xA,vA){return(vA.texCoord===void 0||vA.texCoord===xA.channel)&&vA.offset===void 0&&vA.rotation===void 0&&vA.scale===void 0||(xA=xA.clone(),vA.texCoord!==void 0&&(xA.channel=vA.texCoord),vA.offset!==void 0&&xA.offset.fromArray(vA.offset),vA.rotation!==void 0&&(xA.rotation=vA.rotation),vA.scale!==void 0&&xA.repeat.fromArray(vA.scale),xA.needsUpdate=!0),xA}}class HA{constructor(){this.name=v.KHR_MESH_QUANTIZATION}}class pe extends s.Interpolant{constructor(xA,vA,ie,ZA){super(xA,vA,ie,ZA)}copySampleValue_(xA){const vA=this.resultBuffer,ie=this.sampleValues,ZA=this.valueSize,jA=xA*ZA*3+ZA;for(let Be=0;Be!==ZA;Be++)vA[Be]=ie[jA+Be];return vA}interpolate_(xA,vA,ie,ZA){const jA=this.resultBuffer,Be=this.sampleValues,aA=this.valueSize,H=aA*2,k=aA*3,DA=ZA-vA,YA=(ie-vA)/DA,ue=YA*YA,De=ue*YA,si=xA*k,Mi=si-k,Si=-2*De+3*ue,nn=De-ue,zi=1-Si,Zr=nn-ue+YA;for(let kn=0;kn!==aA;kn++){const hr=Be[Mi+kn+aA],Ss=Be[Mi+kn+H]*DA,is=Be[si+kn+aA],cg=Be[si+kn]*DA;jA[kn]=zi*hr+Zr*Ss+Si*is+nn*cg}return jA}}const He=new s.Quaternion;class Oe extends pe{interpolate_(xA,vA,ie,ZA){const jA=super.interpolate_(xA,vA,ie,ZA);return He.fromArray(jA).normalize().toArray(jA),jA}}const ye={POINTS:0,LINES:1,LINE_LOOP:2,LINE_STRIP:3,TRIANGLES:4,TRIANGLE_STRIP:5,TRIANGLE_FAN:6},Ye={5120:Int8Array,5121:Uint8Array,5122:Int16Array,5123:Uint16Array,5125:Uint32Array,5126:Float32Array},Et={9728:s.NearestFilter,9729:s.LinearFilter,9984:s.NearestMipmapNearestFilter,9985:s.LinearMipmapNearestFilter,9986:s.NearestMipmapLinearFilter,9987:s.LinearMipmapLinearFilter},ct={33071:s.ClampToEdgeWrapping,33648:s.MirroredRepeatWrapping,10497:s.RepeatWrapping},q={SCALAR:1,VEC2:2,VEC3:3,VEC4:4,MAT2:4,MAT3:9,MAT4:16},gA={POSITION:"position",NORMAL:"normal",TANGENT:"tangent",TEXCOORD_0:"uv",TEXCOORD_1:"uv1",TEXCOORD_2:"uv2",TEXCOORD_3:"uv3",COLOR_0:"color",WEIGHTS_0:"skinWeight",JOINTS_0:"skinIndex"},yA={scale:"scale",translation:"position",rotation:"quaternion",weights:"morphTargetInfluences"},ge={CUBICSPLINE:void 0,LINEAR:s.InterpolateLinear,STEP:s.InterpolateDiscrete},le={OPAQUE:"OPAQUE",MASK:"MASK",BLEND:"BLEND"};function Qt(Kt){return Kt.DefaultMaterial===void 0&&(Kt.DefaultMaterial=new s.MeshStandardMaterial({color:16777215,emissive:0,metalness:1,roughness:1,transparent:!1,depthTest:!0,side:s.FrontSide})),Kt.DefaultMaterial}function Ct(Kt,xA,vA){for(const ie in vA.extensions)Kt[ie]===void 0&&(xA.userData.gltfExtensions=xA.userData.gltfExtensions||{},xA.userData.gltfExtensions[ie]=vA.extensions[ie])}function bt(Kt,xA){xA.extras!==void 0&&(typeof xA.extras=="object"?Object.assign(Kt.userData,xA.extras):console.warn("THREE.GLTFLoader: Ignoring primitive type .extras, "+xA.extras))}function pi(Kt,xA,vA){let ie=!1,ZA=!1,jA=!1;for(let k=0,DA=xA.length;k<DA;k++){const YA=xA[k];if(YA.POSITION!==void 0&&(ie=!0),YA.NORMAL!==void 0&&(ZA=!0),YA.COLOR_0!==void 0&&(jA=!0),ie&&ZA&&jA)break}if(!ie&&!ZA&&!jA)return Promise.resolve(Kt);const Be=[],aA=[],H=[];for(let k=0,DA=xA.length;k<DA;k++){const YA=xA[k];if(ie){const ue=YA.POSITION!==void 0?vA.getDependency("accessor",YA.POSITION):Kt.attributes.position;Be.push(ue)}if(ZA){const ue=YA.NORMAL!==void 0?vA.getDependency("accessor",YA.NORMAL):Kt.attributes.normal;aA.push(ue)}if(jA){const ue=YA.COLOR_0!==void 0?vA.getDependency("accessor",YA.COLOR_0):Kt.attributes.color;H.push(ue)}}return Promise.all([Promise.all(Be),Promise.all(aA),Promise.all(H)]).then(function(k){const DA=k[0],YA=k[1],ue=k[2];return ie&&(Kt.morphAttributes.position=DA),ZA&&(Kt.morphAttributes.normal=YA),jA&&(Kt.morphAttributes.color=ue),Kt.morphTargetsRelative=!0,Kt})}function hi(Kt,xA){if(Kt.updateMorphTargets(),xA.weights!==void 0)for(let vA=0,ie=xA.weights.length;vA<ie;vA++)Kt.morphTargetInfluences[vA]=xA.weights[vA];if(xA.extras&&Array.isArray(xA.extras.targetNames)){const vA=xA.extras.targetNames;if(Kt.morphTargetInfluences.length===vA.length){Kt.morphTargetDictionary={};for(let ie=0,ZA=vA.length;ie<ZA;ie++)Kt.morphTargetDictionary[vA[ie]]=ie}else console.warn("THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.")}}function un(Kt){let xA;const vA=Kt.extensions&&Kt.extensions[v.KHR_DRACO_MESH_COMPRESSION];if(vA?xA="draco:"+vA.bufferView+":"+vA.indices+":"+sn(vA.attributes):xA=Kt.indices+":"+sn(Kt.attributes)+":"+Kt.mode,Kt.targets!==void 0)for(let ie=0,ZA=Kt.targets.length;ie<ZA;ie++)xA+=":"+sn(Kt.targets[ie]);return xA}function sn(Kt){let xA="";const vA=Object.keys(Kt).sort();for(let ie=0,ZA=vA.length;ie<ZA;ie++)xA+=vA[ie]+":"+Kt[vA[ie]]+";";return xA}function En(Kt){switch(Kt){case Int8Array:return .007874015748031496;case Uint8Array:return .00392156862745098;case Int16Array:return 3051850947599719e-20;case Uint16Array:return 15259021896696422e-21;default:throw new Error("THREE.GLTFLoader: Unsupported normalized accessor component type.")}}function bn(Kt){return Kt.search(/\.jpe?g($|\?)/i)>0||Kt.search(/^data\:image\/jpeg/)===0?"image/jpeg":Kt.search(/\.webp($|\?)/i)>0||Kt.search(/^data\:image\/webp/)===0?"image/webp":Kt.search(/\.ktx2($|\?)/i)>0||Kt.search(/^data\:image\/ktx2/)===0?"image/ktx2":"image/png"}const go=new s.Matrix4;class Ao{constructor(xA={},vA={}){this.json=xA,this.extensions={},this.plugins={},this.options=vA,this.cache=new T,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 ie=!1,ZA=-1,jA=!1,Be=-1;if(typeof navigator<"u"){const aA=navigator.userAgent;ie=/^((?!chrome|android).)*safari/i.test(aA)===!0;const H=aA.match(/Version\/(\d+)/);ZA=ie&&H?parseInt(H[1],10):-1,jA=aA.indexOf("Firefox")>-1,Be=jA?aA.match(/Firefox\/([0-9]+)\./)[1]:-1}typeof createImageBitmap>"u"||ie&&ZA<17||jA&&Be<98?this.textureLoader=new s.TextureLoader(this.options.manager):this.textureLoader=new s.ImageBitmapLoader(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new s.FileLoader(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),this.options.crossOrigin==="use-credentials"&&this.fileLoader.setWithCredentials(!0)}setExtensions(xA){this.extensions=xA}setPlugins(xA){this.plugins=xA}parse(xA,vA){const ie=this,ZA=this.json,jA=this.extensions;this.cache.removeAll(),this.nodeCache={},this._invokeAll(function(Be){return Be._markDefs&&Be._markDefs()}),Promise.all(this._invokeAll(function(Be){return Be.beforeRoot&&Be.beforeRoot()})).then(function(){return Promise.all([ie.getDependencies("scene"),ie.getDependencies("animation"),ie.getDependencies("camera")])}).then(function(Be){const aA={scene:Be[0][ZA.scene||0],scenes:Be[0],animations:Be[1],cameras:Be[2],asset:ZA.asset,parser:ie,userData:{}};return Ct(jA,aA,ZA),bt(aA,ZA),Promise.all(ie._invokeAll(function(H){return H.afterRoot&&H.afterRoot(aA)})).then(function(){for(const H of aA.scenes)H.updateMatrixWorld();xA(aA)})}).catch(vA)}_markDefs(){const xA=this.json.nodes||[],vA=this.json.skins||[],ie=this.json.meshes||[];for(let ZA=0,jA=vA.length;ZA<jA;ZA++){const Be=vA[ZA].joints;for(let aA=0,H=Be.length;aA<H;aA++)xA[Be[aA]].isBone=!0}for(let ZA=0,jA=xA.length;ZA<jA;ZA++){const Be=xA[ZA];Be.mesh!==void 0&&(this._addNodeRef(this.meshCache,Be.mesh),Be.skin!==void 0&&(ie[Be.mesh].isSkinnedMesh=!0)),Be.camera!==void 0&&this._addNodeRef(this.cameraCache,Be.camera)}}_addNodeRef(xA,vA){vA!==void 0&&(xA.refs[vA]===void 0&&(xA.refs[vA]=xA.uses[vA]=0),xA.refs[vA]++)}_getNodeRef(xA,vA,ie){if(xA.refs[vA]<=1)return ie;const ZA=ie.clone(),jA=(Be,aA)=>{const H=this.associations.get(Be);H!=null&&this.associations.set(aA,H);for(const[k,DA]of Be.children.entries())jA(DA,aA.children[k])};return jA(ie,ZA),ZA.name+="_instance_"+xA.uses[vA]++,ZA}_invokeOne(xA){const vA=Object.values(this.plugins);vA.push(this);for(let ie=0;ie<vA.length;ie++){const ZA=xA(vA[ie]);if(ZA)return ZA}return null}_invokeAll(xA){const vA=Object.values(this.plugins);vA.unshift(this);const ie=[];for(let ZA=0;ZA<vA.length;ZA++){const jA=xA(vA[ZA]);jA&&ie.push(jA)}return ie}getDependency(xA,vA){const ie=xA+":"+vA;let ZA=this.cache.get(ie);if(!ZA){switch(xA){case"scene":ZA=this.loadScene(vA);break;case"node":ZA=this._invokeOne(function(jA){return jA.loadNode&&jA.loadNode(vA)});break;case"mesh":ZA=this._invokeOne(function(jA){return jA.loadMesh&&jA.loadMesh(vA)});break;case"accessor":ZA=this.loadAccessor(vA);break;case"bufferView":ZA=this._invokeOne(function(jA){return jA.loadBufferView&&jA.loadBufferView(vA)});break;case"buffer":ZA=this.loadBuffer(vA);break;case"material":ZA=this._invokeOne(function(jA){return jA.loadMaterial&&jA.loadMaterial(vA)});break;case"texture":ZA=this._invokeOne(function(jA){return jA.loadTexture&&jA.loadTexture(vA)});break;case"skin":ZA=this.loadSkin(vA);break;case"animation":ZA=this._invokeOne(function(jA){return jA.loadAnimation&&jA.loadAnimation(vA)});break;case"camera":ZA=this.loadCamera(vA);break;default:if(ZA=this._invokeOne(function(jA){return jA!=this&&jA.getDependency&&jA.getDependency(xA,vA)}),!ZA)throw new Error("Unknown type: "+xA);break}this.cache.add(ie,ZA)}return ZA}getDependencies(xA){let vA=this.cache.get(xA);if(!vA){const ie=this,ZA=this.json[xA+(xA==="mesh"?"es":"s")]||[];vA=Promise.all(ZA.map(function(jA,Be){return ie.getDependency(xA,Be)})),this.cache.add(xA,vA)}return vA}loadBuffer(xA){const vA=this.json.buffers[xA],ie=this.fileLoader;if(vA.type&&vA.type!=="arraybuffer")throw new Error("THREE.GLTFLoader: "+vA.type+" buffer type is not supported.");if(vA.uri===void 0&&xA===0)return Promise.resolve(this.extensions[v.KHR_BINARY_GLTF].body);const ZA=this.options;return new Promise(function(jA,Be){ie.load(s.LoaderUtils.resolveURL(vA.uri,ZA.path),jA,void 0,function(){Be(new Error('THREE.GLTFLoader: Failed to load buffer "'+vA.uri+'".'))})})}loadBufferView(xA){const vA=this.json.bufferViews[xA];return this.getDependency("buffer",vA.buffer).then(function(ie){const ZA=vA.byteLength||0,jA=vA.byteOffset||0;return ie.slice(jA,jA+ZA)})}loadAccessor(xA){const vA=this,ie=this.json,ZA=this.json.accessors[xA];if(ZA.bufferView===void 0&&ZA.sparse===void 0){const Be=q[ZA.type],aA=Ye[ZA.componentType],H=ZA.normalized===!0,k=new aA(ZA.count*Be);return Promise.resolve(new s.BufferAttribute(k,Be,H))}const jA=[];return ZA.bufferView!==void 0?jA.push(this.getDependency("bufferView",ZA.bufferView)):jA.push(null),ZA.sparse!==void 0&&(jA.push(this.getDependency("bufferView",ZA.sparse.indices.bufferView)),jA.push(this.getDependency("bufferView",ZA.sparse.values.bufferView))),Promise.all(jA).then(function(Be){const aA=Be[0],H=q[ZA.type],k=Ye[ZA.componentType],DA=k.BYTES_PER_ELEMENT,YA=DA*H,ue=ZA.byteOffset||0,De=ZA.bufferView!==void 0?ie.bufferViews[ZA.bufferView].byteStride:void 0,si=ZA.normalized===!0;let Mi,Si;if(De&&De!==YA){const nn=Math.floor(ue/De),zi="InterleavedBuffer:"+ZA.bufferView+":"+ZA.componentType+":"+nn+":"+ZA.count;let Zr=vA.cache.get(zi);Zr||(Mi=new k(aA,nn*De,ZA.count*De/DA),Zr=new s.InterleavedBuffer(Mi,De/DA),vA.cache.add(zi,Zr)),Si=new s.InterleavedBufferAttribute(Zr,H,ue%De/DA,si)}else aA===null?Mi=new k(ZA.count*H):Mi=new k(aA,ue,ZA.count*H),Si=new s.BufferAttribute(Mi,H,si);if(ZA.sparse!==void 0){const nn=q.SCALAR,zi=Ye[ZA.sparse.indices.componentType],Zr=ZA.sparse.indices.byteOffset||0,kn=ZA.sparse.values.byteOffset||0,hr=new zi(Be[1],Zr,ZA.sparse.count*nn),Ss=new k(Be[2],kn,ZA.sparse.count*H);aA!==null&&(Si=new s.BufferAttribute(Si.array.slice(),Si.itemSize,Si.normalized)),Si.normalized=!1;for(let is=0,cg=hr.length;is<cg;is++){const ns=hr[is];if(Si.setX(ns,Ss[is*H]),H>=2&&Si.setY(ns,Ss[is*H+1]),H>=3&&Si.setZ(ns,Ss[is*H+2]),H>=4&&Si.setW(ns,Ss[is*H+3]),H>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}Si.normalized=si}return Si})}loadTexture(xA){const vA=this.json,ie=this.options,jA=vA.textures[xA].source,Be=vA.images[jA];let aA=this.textureLoader;if(Be.uri){const H=ie.manager.getHandler(Be.uri);H!==null&&(aA=H)}return this.loadTextureImage(xA,jA,aA)}loadTextureImage(xA,vA,ie){const ZA=this,jA=this.json,Be=jA.textures[xA],aA=jA.images[vA],H=(aA.uri||aA.bufferView)+":"+Be.sampler;if(this.textureCache[H])return this.textureCache[H];const k=this.loadImageSource(vA,ie).then(function(DA){DA.flipY=!1,DA.name=Be.name||aA.name||"",DA.name===""&&typeof aA.uri=="string"&&aA.uri.startsWith("data:image/")===!1&&(DA.name=aA.uri);const ue=(jA.samplers||{})[Be.sampler]||{};return DA.magFilter=Et[ue.magFilter]||s.LinearFilter,DA.minFilter=Et[ue.minFilter]||s.LinearMipmapLinearFilter,DA.wrapS=ct[ue.wrapS]||s.RepeatWrapping,DA.wrapT=ct[ue.wrapT]||s.RepeatWrapping,DA.generateMipmaps=!DA.isCompressedTexture&&DA.minFilter!==s.NearestFilter&&DA.minFilter!==s.LinearFilter,ZA.associations.set(DA,{textures:xA}),DA}).catch(function(){return null});return this.textureCache[H]=k,k}loadImageSource(xA,vA){const ie=this,ZA=this.json,jA=this.options;if(this.sourceCache[xA]!==void 0)return this.sourceCache[xA].then(YA=>YA.clone());const Be=ZA.images[xA],aA=self.URL||self.webkitURL;let H=Be.uri||"",k=!1;if(Be.bufferView!==void 0)H=ie.getDependency("bufferView",Be.bufferView).then(function(YA){k=!0;const ue=new Blob([YA],{type:Be.mimeType});return H=aA.createObjectURL(ue),H});else if(Be.uri===void 0)throw new Error("THREE.GLTFLoader: Image "+xA+" is missing URI and bufferView");const DA=Promise.resolve(H).then(function(YA){return new Promise(function(ue,De){let si=ue;vA.isImageBitmapLoader===!0&&(si=function(Mi){const Si=new s.Texture(Mi);Si.needsUpdate=!0,ue(Si)}),vA.load(s.LoaderUtils.resolveURL(YA,jA.path),si,void 0,De)})}).then(function(YA){return k===!0&&aA.revokeObjectURL(H),bt(YA,Be),YA.userData.mimeType=Be.mimeType||bn(Be.uri),YA}).catch(function(YA){throw console.error("THREE.GLTFLoader: Couldn't load texture",H),YA});return this.sourceCache[xA]=DA,DA}assignTexture(xA,vA,ie,ZA){const jA=this;return this.getDependency("texture",ie.index).then(function(Be){if(!Be)return null;if(ie.texCoord!==void 0&&ie.texCoord>0&&(Be=Be.clone(),Be.channel=ie.texCoord),jA.extensions[v.KHR_TEXTURE_TRANSFORM]){const aA=ie.extensions!==void 0?ie.extensions[v.KHR_TEXTURE_TRANSFORM]:void 0;if(aA){const H=jA.associations.get(Be);Be=jA.extensions[v.KHR_TEXTURE_TRANSFORM].extendTexture(Be,aA),jA.associations.set(Be,H)}}return ZA!==void 0&&(Be.colorSpace=ZA),xA[vA]=Be,Be})}assignFinalMaterial(xA){const vA=xA.geometry;let ie=xA.material;const ZA=vA.attributes.tangent===void 0,jA=vA.attributes.color!==void 0,Be=vA.attributes.normal===void 0;if(xA.isPoints){const aA="PointsMaterial:"+ie.uuid;let H=this.cache.get(aA);H||(H=new s.PointsMaterial,s.Material.prototype.copy.call(H,ie),H.color.copy(ie.color),H.map=ie.map,H.sizeAttenuation=!1,this.cache.add(aA,H)),ie=H}else if(xA.isLine){const aA="LineBasicMaterial:"+ie.uuid;let H=this.cache.get(aA);H||(H=new s.LineBasicMaterial,s.Material.prototype.copy.call(H,ie),H.color.copy(ie.color),H.map=ie.map,this.cache.add(aA,H)),ie=H}if(ZA||jA||Be){let aA="ClonedMaterial:"+ie.uuid+":";ZA&&(aA+="derivative-tangents:"),jA&&(aA+="vertex-colors:"),Be&&(aA+="flat-shading:");let H=this.cache.get(aA);H||(H=ie.clone(),jA&&(H.vertexColors=!0),Be&&(H.flatShading=!0),ZA&&(H.normalScale&&(H.normalScale.y*=-1),H.clearcoatNormalScale&&(H.clearcoatNormalScale.y*=-1)),this.cache.add(aA,H),this.associations.set(H,this.associations.get(ie))),ie=H}xA.material=ie}getMaterialType(){return s.MeshStandardMaterial}loadMaterial(xA){const vA=this,ie=this.json,ZA=this.extensions,jA=ie.materials[xA];let Be;const aA={},H=jA.extensions||{},k=[];if(H[v.KHR_MATERIALS_UNLIT]){const YA=ZA[v.KHR_MATERIALS_UNLIT];Be=YA.getMaterialType(),k.push(YA.extendParams(aA,jA,vA))}else{const YA=jA.pbrMetallicRoughness||{};if(aA.color=new s.Color(1,1,1),aA.opacity=1,Array.isArray(YA.baseColorFactor)){const ue=YA.baseColorFactor;aA.color.setRGB(ue[0],ue[1],ue[2],s.LinearSRGBColorSpace),aA.opacity=ue[3]}YA.baseColorTexture!==void 0&&k.push(vA.assignTexture(aA,"map",YA.baseColorTexture,s.SRGBColorSpace)),aA.metalness=YA.metallicFactor!==void 0?YA.metallicFactor:1,aA.roughness=YA.roughnessFactor!==void 0?YA.roughnessFactor:1,YA.metallicRoughnessTexture!==void 0&&(k.push(vA.assignTexture(aA,"metalnessMap",YA.metallicRoughnessTexture)),k.push(vA.assignTexture(aA,"roughnessMap",YA.metallicRoughnessTexture))),Be=this._invokeOne(function(ue){return ue.getMaterialType&&ue.getMaterialType(xA)}),k.push(Promise.all(this._invokeAll(function(ue){return ue.extendMaterialParams&&ue.extendMaterialParams(xA,aA)})))}jA.doubleSided===!0&&(aA.side=s.DoubleSide);const DA=jA.alphaMode||le.OPAQUE;if(DA===le.BLEND?(aA.transparent=!0,aA.depthWrite=!1):(aA.transparent=!1,DA===le.MASK&&(aA.alphaTest=jA.alphaCutoff!==void 0?jA.alphaCutoff:.5)),jA.normalTexture!==void 0&&Be!==s.MeshBasicMaterial&&(k.push(vA.assignTexture(aA,"normalMap",jA.normalTexture)),aA.normalScale=new s.Vector2(1,1),jA.normalTexture.scale!==void 0)){const YA=jA.normalTexture.scale;aA.normalScale.set(YA,YA)}if(jA.occlusionTexture!==void 0&&Be!==s.MeshBasicMaterial&&(k.push(vA.assignTexture(aA,"aoMap",jA.occlusionTexture)),jA.occlusionTexture.strength!==void 0&&(aA.aoMapIntensity=jA.occlusionTexture.strength)),jA.emissiveFactor!==void 0&&Be!==s.MeshBasicMaterial){const YA=jA.emissiveFactor;aA.emissive=new s.Color().setRGB(YA[0],YA[1],YA[2],s.LinearSRGBColorSpace)}return jA.emissiveTexture!==void 0&&Be!==s.MeshBasicMaterial&&k.push(vA.assignTexture(aA,"emissiveMap",jA.emissiveTexture,s.SRGBColorSpace)),Promise.all(k).then(function(){const YA=new Be(aA);return jA.name&&(YA.name=jA.name),bt(YA,jA),vA.associations.set(YA,{materials:xA}),jA.extensions&&Ct(ZA,YA,jA),YA})}createUniqueName(xA){const vA=s.PropertyBinding.sanitizeNodeName(xA||"");return vA in this.nodeNamesUsed?vA+"_"+ ++this.nodeNamesUsed[vA]:(this.nodeNamesUsed[vA]=0,vA)}loadGeometries(xA){const vA=this,ie=this.extensions,ZA=this.primitiveCache;function jA(aA){return ie[v.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(aA,vA).then(function(H){return _o(H,aA,vA)})}const Be=[];for(let aA=0,H=xA.length;aA<H;aA++){const k=xA[aA],DA=un(k),YA=ZA[DA];if(YA)Be.push(YA.promise);else{let ue;k.extensions&&k.extensions[v.KHR_DRACO_MESH_COMPRESSION]?ue=jA(k):ue=_o(new s.BufferGeometry,k,vA),ZA[DA]={primitive:k,promise:ue},Be.push(ue)}}return Promise.all(Be)}loadMesh(xA){const vA=this,ie=this.json,ZA=this.extensions,jA=ie.meshes[xA],Be=jA.primitives,aA=[];for(let H=0,k=Be.length;H<k;H++){const DA=Be[H].material===void 0?Qt(this.cache):this.getDependency("material",Be[H].material);aA.push(DA)}return aA.push(vA.loadGeometries(Be)),Promise.all(aA).then(function(H){const k=H.slice(0,H.length-1),DA=H[H.length-1],YA=[];for(let De=0,si=DA.length;De<si;De++){const Mi=DA[De],Si=Be[De];let nn;const zi=k[De];if(Si.mode===ye.TRIANGLES||Si.mode===ye.TRIANGLE_STRIP||Si.mode===ye.TRIANGLE_FAN||Si.mode===void 0)nn=jA.isSkinnedMesh===!0?new s.SkinnedMesh(Mi,zi):new s.Mesh(Mi,zi),nn.isSkinnedMesh===!0&&nn.normalizeSkinWeights(),Si.mode===ye.TRIANGLE_STRIP?nn.geometry=(0,z.toTrianglesDrawMode)(nn.geometry,s.TriangleStripDrawMode):Si.mode===ye.TRIANGLE_FAN&&(nn.geometry=(0,z.toTrianglesDrawMode)(nn.geometry,s.TriangleFanDrawMode));else if(Si.mode===ye.LINES)nn=new s.LineSegments(Mi,zi);else if(Si.mode===ye.LINE_STRIP)nn=new s.Line(Mi,zi);else if(Si.mode===ye.LINE_LOOP)nn=new s.LineLoop(Mi,zi);else if(Si.mode===ye.POINTS)nn=new s.Points(Mi,zi);else throw new Error("THREE.GLTFLoader: Primitive mode unsupported: "+Si.mode);Object.keys(nn.geometry.morphAttributes).length>0&&hi(nn,jA),nn.name=vA.createUniqueName(jA.name||"mesh_"+xA),bt(nn,jA),Si.extensions&&Ct(ZA,nn,Si),vA.assignFinalMaterial(nn),YA.push(nn)}for(let De=0,si=YA.length;De<si;De++)vA.associations.set(YA[De],{meshes:xA,primitives:De});if(YA.length===1)return jA.extensions&&Ct(ZA,YA[0],jA),YA[0];const ue=new s.Group;jA.extensions&&Ct(ZA,ue,jA),vA.associations.set(ue,{meshes:xA});for(let De=0,si=YA.length;De<si;De++)ue.add(YA[De]);return ue})}loadCamera(xA){let vA;const ie=this.json.cameras[xA],ZA=ie[ie.type];if(!ZA){console.warn("THREE.GLTFLoader: Missing camera parameters.");return}return ie.type==="perspective"?vA=new s.PerspectiveCamera(s.MathUtils.radToDeg(ZA.yfov),ZA.aspectRatio||1,ZA.znear||1,ZA.zfar||2e6):ie.type==="orthographic"&&(vA=new s.OrthographicCamera(-ZA.xmag,ZA.xmag,ZA.ymag,-ZA.ymag,ZA.znear,ZA.zfar)),ie.name&&(vA.name=this.createUniqueName(ie.name)),bt(vA,ie),Promise.resolve(vA)}loadSkin(xA){const vA=this.json.skins[xA],ie=[];for(let ZA=0,jA=vA.joints.length;ZA<jA;ZA++)ie.push(this._loadNodeShallow(vA.joints[ZA]));return vA.inverseBindMatrices!==void 0?ie.push(this.getDependency("accessor",vA.inverseBindMatrices)):ie.push(null),Promise.all(ie).then(function(ZA){const jA=ZA.pop(),Be=ZA,aA=[],H=[];for(let k=0,DA=Be.length;k<DA;k++){const YA=Be[k];if(YA){aA.push(YA);const ue=new s.Matrix4;jA!==null&&ue.fromArray(jA.array,k*16),H.push(ue)}else console.warn('THREE.GLTFLoader: Joint "%s" could not be found.',vA.joints[k])}return new s.Skeleton(aA,H)})}loadAnimation(xA){const vA=this.json,ie=this,ZA=vA.animations[xA],jA=ZA.name?ZA.name:"animation_"+xA,Be=[],aA=[],H=[],k=[],DA=[];for(let YA=0,ue=ZA.channels.length;YA<ue;YA++){const De=ZA.channels[YA],si=ZA.samplers[De.sampler],Mi=De.target,Si=Mi.node,nn=ZA.parameters!==void 0?ZA.parameters[si.input]:si.input,zi=ZA.parameters!==void 0?ZA.parameters[si.output]:si.output;Mi.node!==void 0&&(Be.push(this.getDependency("node",Si)),aA.push(this.getDependency("accessor",nn)),H.push(this.getDependency("accessor",zi)),k.push(si),DA.push(Mi))}return Promise.all([Promise.all(Be),Promise.all(aA),Promise.all(H),Promise.all(k),Promise.all(DA)]).then(function(YA){const ue=YA[0],De=YA[1],si=YA[2],Mi=YA[3],Si=YA[4],nn=[];for(let zi=0,Zr=ue.length;zi<Zr;zi++){const kn=ue[zi],hr=De[zi],Ss=si[zi],is=Mi[zi],cg=Si[zi];if(kn===void 0)continue;kn.updateMatrix&&kn.updateMatrix();const ns=ie._createAnimationTracks(kn,hr,Ss,is,cg);if(ns)for(let Tg=0;Tg<ns.length;Tg++)nn.push(ns[Tg])}return new s.AnimationClip(jA,void 0,nn)})}createNodeMesh(xA){const vA=this.json,ie=this,ZA=vA.nodes[xA];return ZA.mesh===void 0?null:ie.getDependency("mesh",ZA.mesh).then(function(jA){const Be=ie._getNodeRef(ie.meshCache,ZA.mesh,jA);return ZA.weights!==void 0&&Be.traverse(function(aA){if(aA.isMesh)for(let H=0,k=ZA.weights.length;H<k;H++)aA.morphTargetInfluences[H]=ZA.weights[H]}),Be})}loadNode(xA){const vA=this.json,ie=this,ZA=vA.nodes[xA],jA=ie._loadNodeShallow(xA),Be=[],aA=ZA.children||[];for(let k=0,DA=aA.length;k<DA;k++)Be.push(ie.getDependency("node",aA[k]));const H=ZA.skin===void 0?Promise.resolve(null):ie.getDependency("skin",ZA.skin);return Promise.all([jA,Promise.all(Be),H]).then(function(k){const DA=k[0],YA=k[1],ue=k[2];ue!==null&&DA.traverse(function(De){De.isSkinnedMesh&&De.bind(ue,go)});for(let De=0,si=YA.length;De<si;De++)DA.add(YA[De]);return DA})}_loadNodeShallow(xA){const vA=this.json,ie=this.extensions,ZA=this;if(this.nodeCache[xA]!==void 0)return this.nodeCache[xA];const jA=vA.nodes[xA],Be=jA.name?ZA.createUniqueName(jA.name):"",aA=[],H=ZA._invokeOne(function(k){return k.createNodeMesh&&k.createNodeMesh(xA)});return H&&aA.push(H),jA.camera!==void 0&&aA.push(ZA.getDependency("camera",jA.camera).then(function(k){return ZA._getNodeRef(ZA.cameraCache,jA.camera,k)})),ZA._invokeAll(function(k){return k.createNodeAttachment&&k.createNodeAttachment(xA)}).forEach(function(k){aA.push(k)}),this.nodeCache[xA]=Promise.all(aA).then(function(k){let DA;if(jA.isBone===!0?DA=new s.Bone:k.length>1?DA=new s.Group:k.length===1?DA=k[0]:DA=new s.Object3D,DA!==k[0])for(let YA=0,ue=k.length;YA<ue;YA++)DA.add(k[YA]);if(jA.name&&(DA.userData.name=jA.name,DA.name=Be),bt(DA,jA),jA.extensions&&Ct(ie,DA,jA),jA.matrix!==void 0){const YA=new s.Matrix4;YA.fromArray(jA.matrix),DA.applyMatrix4(YA)}else jA.translation!==void 0&&DA.position.fromArray(jA.translation),jA.rotation!==void 0&&DA.quaternion.fromArray(jA.rotation),jA.scale!==void 0&&DA.scale.fromArray(jA.scale);return ZA.associations.has(DA)||ZA.associations.set(DA,{}),ZA.associations.get(DA).nodes=xA,DA}),this.nodeCache[xA]}loadScene(xA){const vA=this.extensions,ie=this.json.scenes[xA],ZA=this,jA=new s.Group;ie.name&&(jA.name=ZA.createUniqueName(ie.name)),bt(jA,ie),ie.extensions&&Ct(vA,jA,ie);const Be=ie.nodes||[],aA=[];for(let H=0,k=Be.length;H<k;H++)aA.push(ZA.getDependency("node",Be[H]));return Promise.all(aA).then(function(H){for(let DA=0,YA=H.length;DA<YA;DA++)jA.add(H[DA]);const k=DA=>{const YA=new Map;for(const[ue,De]of ZA.associations)(ue instanceof s.Material||ue instanceof s.Texture)&&YA.set(ue,De);return DA.traverse(ue=>{const De=ZA.associations.get(ue);De!=null&&YA.set(ue,De)}),YA};return ZA.associations=k(jA),jA})}_createAnimationTracks(xA,vA,ie,ZA,jA){const Be=[],aA=xA.name?xA.name:xA.uuid,H=[];yA[jA.path]===yA.weights?xA.traverse(function(ue){ue.morphTargetInfluences&&H.push(ue.name?ue.name:ue.uuid)}):H.push(aA);let k;switch(yA[jA.path]){case yA.weights:k=s.NumberKeyframeTrack;break;case yA.rotation:k=s.QuaternionKeyframeTrack;break;case yA.position:case yA.scale:k=s.VectorKeyframeTrack;break;default:switch(ie.itemSize){case 1:k=s.NumberKeyframeTrack;break;case 2:case 3:default:k=s.VectorKeyframeTrack;break}break}const DA=ZA.interpolation!==void 0?ge[ZA.interpolation]:s.InterpolateLinear,YA=this._getArrayFromAccessor(ie);for(let ue=0,De=H.length;ue<De;ue++){const si=new k(H[ue]+"."+yA[jA.path],vA.array,YA,DA);ZA.interpolation==="CUBICSPLINE"&&this._createCubicSplineTrackInterpolant(si),Be.push(si)}return Be}_getArrayFromAccessor(xA){let vA=xA.array;if(xA.normalized){const ie=En(vA.constructor),ZA=new Float32Array(vA.length);for(let jA=0,Be=vA.length;jA<Be;jA++)ZA[jA]=vA[jA]*ie;vA=ZA}return vA}_createCubicSplineTrackInterpolant(xA){xA.createInterpolant=function(ie){const ZA=this instanceof s.QuaternionKeyframeTrack?Oe:pe;return new ZA(this.times,this.values,this.getValueSize()/3,ie)},xA.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline=!0}}function Kn(Kt,xA,vA){const ie=xA.attributes,ZA=new s.Box3;if(ie.POSITION!==void 0){const aA=vA.json.accessors[ie.POSITION],H=aA.min,k=aA.max;if(H!==void 0&&k!==void 0){if(ZA.set(new s.Vector3(H[0],H[1],H[2]),new s.Vector3(k[0],k[1],k[2])),aA.normalized){const DA=En(Ye[aA.componentType]);ZA.min.multiplyScalar(DA),ZA.max.multiplyScalar(DA)}}else{console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");return}}else return;const jA=xA.targets;if(jA!==void 0){const aA=new s.Vector3,H=new s.Vector3;for(let k=0,DA=jA.length;k<DA;k++){const YA=jA[k];if(YA.POSITION!==void 0){const ue=vA.json.accessors[YA.POSITION],De=ue.min,si=ue.max;if(De!==void 0&&si!==void 0){if(H.setX(Math.max(Math.abs(De[0]),Math.abs(si[0]))),H.setY(Math.max(Math.abs(De[1]),Math.abs(si[1]))),H.setZ(Math.max(Math.abs(De[2]),Math.abs(si[2]))),ue.normalized){const Mi=En(Ye[ue.componentType]);H.multiplyScalar(Mi)}aA.max(H)}else console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.")}}ZA.expandByVector(aA)}Kt.boundingBox=ZA;const Be=new s.Sphere;ZA.getCenter(Be.center),Be.radius=ZA.min.distanceTo(ZA.max)/2,Kt.boundingSphere=Be}function _o(Kt,xA,vA){const ie=xA.attributes,ZA=[];function jA(Be,aA){return vA.getDependency("accessor",Be).then(function(H){Kt.setAttribute(aA,H)})}for(const Be in ie){const aA=gA[Be]||Be.toLowerCase();aA in Kt.attributes||ZA.push(jA(ie[Be],aA))}if(xA.indices!==void 0&&!Kt.index){const Be=vA.getDependency("accessor",xA.indices).then(function(aA){Kt.setIndex(aA)});ZA.push(Be)}return s.ColorManagement.workingColorSpace!==s.LinearSRGBColorSpace&&"COLOR_0"in ie&&console.warn(`THREE.GLTFLoader: Converting vertex colors from "srgb-linear" to "${s.ColorManagement.workingColorSpace}" not supported.`),bt(Kt,xA),Kn(Kt,xA,vA),Promise.all(ZA).then(function(){return xA.targets!==void 0?pi(Kt,xA.targets,vA):Kt})}},"./node_modules/three/examples/jsm/loaders/KTX2Loader.js":(_A,O,d)=>{d.r(O),d.d(O,{KTX2Loader:()=>m});var s=d("./node_modules/three/build/three.core.js"),z=d("./node_modules/three/examples/jsm/utils/WorkerPool.js"),_=d("./node_modules/three/examples/jsm/libs/ktx-parse.module.js"),T=d("./node_modules/three/examples/jsm/libs/zstddec.module.js"),v=d("./node_modules/three/examples/jsm/math/ColorSpaces.js");const D=new WeakMap;let h=0,p;class m extends s.Loader{constructor(x){super(x),this.transcoderPath="",this.transcoderBinary=null,this.transcoderPending=null,this.workerPool=new z.WorkerPool,this.workerSourceURL="",this.workerConfig=null,typeof MSC_TRANSCODER<"u"&&console.warn('THREE.KTX2Loader: Please update to latest "basis_transcoder". "msc_basis_transcoder" is no longer supported in three.js r125+.')}setTranscoderPath(x){return this.transcoderPath=x,this}setWorkerLimit(x){return this.workerPool.setWorkerLimit(x),this}async detectSupportAsync(x){return this.workerConfig={astcSupported:await x.hasFeatureAsync("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:await x.hasFeatureAsync("texture-compression-etc1"),etc2Supported:await x.hasFeatureAsync("texture-compression-etc2"),dxtSupported:await x.hasFeatureAsync("texture-compression-bc"),bptcSupported:await x.hasFeatureAsync("texture-compression-bptc"),pvrtcSupported:await x.hasFeatureAsync("texture-compression-pvrtc")},this}detectSupport(x){return x.isWebGPURenderer===!0?this.workerConfig={astcSupported:x.hasFeature("texture-compression-astc"),astcHDRSupported:!1,etc1Supported:x.hasFeature("texture-compression-etc1"),etc2Supported:x.hasFeature("texture-compression-etc2"),dxtSupported:x.hasFeature("texture-compression-bc"),bptcSupported:x.hasFeature("texture-compression-bptc"),pvrtcSupported:x.hasFeature("texture-compression-pvrtc")}:this.workerConfig={astcSupported:x.extensions.has("WEBGL_compressed_texture_astc"),astcHDRSupported:x.extensions.has("WEBGL_compressed_texture_astc")&&x.extensions.get("WEBGL_compressed_texture_astc").getSupportedProfiles().includes("hdr"),etc1Supported:x.extensions.has("WEBGL_compressed_texture_etc1"),etc2Supported:x.extensions.has("WEBGL_compressed_texture_etc"),dxtSupported:x.extensions.has("WEBGL_compressed_texture_s3tc"),bptcSupported:x.extensions.has("EXT_texture_compression_bptc"),pvrtcSupported:x.extensions.has("WEBGL_compressed_texture_pvrtc")||x.extensions.has("WEBKIT_WEBGL_compressed_texture_pvrtc")},this}init(){if(!this.transcoderPending){const x=new s.FileLoader(this.manager);x.setPath(this.transcoderPath),x.setWithCredentials(this.withCredentials);const U=x.loadAsync("basis_transcoder.js"),j=new s.FileLoader(this.manager);j.setPath(this.transcoderPath),j.setResponseType("arraybuffer"),j.setWithCredentials(this.withCredentials);const Z=j.loadAsync("basis_transcoder.wasm");this.transcoderPending=Promise.all([U,Z]).then(([CA,QA])=>{const SA=m.BasisWorker.toString(),UA=["/* constants */","let _EngineFormat = "+JSON.stringify(m.EngineFormat),"let _EngineType = "+JSON.stringify(m.EngineType),"let _TranscoderFormat = "+JSON.stringify(m.TranscoderFormat),"let _BasisFormat = "+JSON.stringify(m.BasisFormat),"/* basis_transcoder.js */",CA,"/* worker */",SA.substring(SA.indexOf("{")+1,SA.lastIndexOf("}"))].join(`
`);this.workerSourceURL=URL.createObjectURL(new Blob([UA])),this.transcoderBinary=QA,this.workerPool.setWorkerCreator(()=>{const TA=new Worker(this.workerSourceURL),pA=this.transcoderBinary.slice(0);return TA.postMessage({type:"init",config:this.workerConfig,transcoderBinary:pA},[pA]),TA})}),h>0&&console.warn("THREE.KTX2Loader: Multiple active KTX2 loaders may cause performance issues. Use a single KTX2Loader instance, or call .dispose() on old instances."),h++}return this.transcoderPending}load(x,U,j,Z){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");const CA=new s.FileLoader(this.manager);CA.setResponseType("arraybuffer"),CA.setWithCredentials(this.withCredentials),CA.load(x,QA=>{this.parse(QA,U,Z)},j,Z)}parse(x,U,j){if(this.workerConfig===null)throw new Error("THREE.KTX2Loader: Missing initialization with `.detectSupport( renderer )`.");if(D.has(x))return D.get(x).promise.then(U).catch(j);this._createTexture(x).then(Z=>U?U(Z):null).catch(j)}_createTextureFrom(x,U){const{type:j,error:Z,data:{faces:CA,width:QA,height:SA,format:UA,type:TA,dfdFlags:pA}}=x;if(j==="error")return Promise.reject(Z);let hA;if(U.faceCount===6)hA=new s.CompressedCubeTexture(CA,UA,TA);else{const uA=CA[0].mipmaps;hA=U.layerCount>1?new s.CompressedArrayTexture(uA,QA,SA,U.layerCount,UA,TA):new s.CompressedTexture(uA,QA,SA,UA,TA)}return hA.minFilter=CA[0].mipmaps.length===1?s.LinearFilter:s.LinearMipmapLinearFilter,hA.magFilter=s.LinearFilter,hA.generateMipmaps=!1,hA.needsUpdate=!0,hA.colorSpace=Y(U),hA.premultiplyAlpha=!!(pA&_.KHR_DF_FLAG_ALPHA_PREMULTIPLIED),hA}async _createTexture(x,U={}){const j=(0,_.read)(new Uint8Array(x)),Z=j.vkFormat===_.VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT&&j.dataFormatDescriptor[0].colorModel===167;if(!(j.vkFormat===_.VK_FORMAT_UNDEFINED||Z&&!this.workerConfig.astcHDRSupported))return N(j);const QA=U,SA=this.init().then(()=>this.workerPool.postMessage({type:"transcode",buffer:x,taskConfig:QA},[x])).then(UA=>this._createTextureFrom(UA.data,j));return D.set(x,{promise:SA}),SA}dispose(){return this.workerPool.dispose(),this.workerSourceURL&&URL.revokeObjectURL(this.workerSourceURL),h--,this}}m.BasisFormat={ETC1S:0,UASTC:1,UASTC_HDR:2},m.TranscoderFormat={ETC1:0,ETC2:1,BC1:2,BC3:3,BC4:4,BC5:5,BC7_M6_OPAQUE_ONLY:6,BC7_M5:7,PVRTC1_4_RGB:8,PVRTC1_4_RGBA:9,ASTC_4x4:10,ATC_RGB:11,ATC_RGBA_INTERPOLATED_ALPHA:12,RGBA32:13,RGB565:14,BGR565:15,RGBA4444:16,BC6H:22,RGB_HALF:24,RGBA_HALF:25},m.EngineFormat={RGBAFormat:s.RGBAFormat,RGBA_ASTC_4x4_Format:s.RGBA_ASTC_4x4_Format,RGB_BPTC_UNSIGNED_Format:s.RGB_BPTC_UNSIGNED_Format,RGBA_BPTC_Format:s.RGBA_BPTC_Format,RGBA_ETC2_EAC_Format:s.RGBA_ETC2_EAC_Format,RGBA_PVRTC_4BPPV1_Format:s.RGBA_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT5_Format:s.RGBA_S3TC_DXT5_Format,RGB_ETC1_Format:s.RGB_ETC1_Format,RGB_ETC2_Format:s.RGB_ETC2_Format,RGB_PVRTC_4BPPV1_Format:s.RGB_PVRTC_4BPPV1_Format,RGBA_S3TC_DXT1_Format:s.RGBA_S3TC_DXT1_Format},m.EngineType={UnsignedByteType:s.UnsignedByteType,HalfFloatType:s.HalfFloatType,FloatType:s.FloatType},m.BasisWorker=function(){let G,x,U;const j=_EngineFormat,Z=_EngineType,CA=_TranscoderFormat,QA=_BasisFormat;self.addEventListener("message",function(NA){const HA=NA.data;switch(HA.type){case"init":G=HA.config,SA(HA.transcoderBinary);break;case"transcode":x.then(()=>{try{const{faces:pe,buffers:He,width:Oe,height:ye,hasAlpha:Ye,format:Et,type:ct,dfdFlags:q}=UA(HA.buffer);self.postMessage({type:"transcode",id:HA.id,data:{faces:pe,width:Oe,height:ye,hasAlpha:Ye,format:Et,type:ct,dfdFlags:q}},He)}catch(pe){console.error(pe),self.postMessage({type:"error",id:HA.id,error:pe.message})}});break}});function SA(NA){x=new Promise(HA=>{U={wasmBinary:NA,onRuntimeInitialized:HA},BASIS(U)}).then(()=>{U.initializeBasis(),U.KTX2File===void 0&&console.warn("THREE.KTX2Loader: Please update Basis Universal transcoder.")})}function UA(NA){const HA=new U.KTX2File(new Uint8Array(NA));function pe(){HA.close(),HA.delete()}if(!HA.isValid())throw pe(),new Error("THREE.KTX2Loader: Invalid or unsupported .ktx2 file");let He;if(HA.isUASTC())He=QA.UASTC;else if(HA.isETC1S())He=QA.ETC1S;else if(HA.isHDR())He=QA.UASTC_HDR;else throw new Error("THREE.KTX2Loader: Unknown Basis encoding");const Oe=HA.getWidth(),ye=HA.getHeight(),Ye=HA.getLayers()||1,Et=HA.getLevels(),ct=HA.getFaces(),q=HA.getHasAlpha(),gA=HA.getDFDFlags(),{transcoderFormat:yA,engineFormat:ge,engineType:le}=hA(He,Oe,ye,q);if(!Oe||!ye||!Et)throw pe(),new Error("THREE.KTX2Loader: Invalid texture");if(!HA.startTranscoding())throw pe(),new Error("THREE.KTX2Loader: .startTranscoding failed");const Qt=[],Ct=[];for(let bt=0;bt<ct;bt++){const pi=[];for(let hi=0;hi<Et;hi++){const un=[];let sn,En;for(let go=0;go<Ye;go++){const Ao=HA.getImageLevelInfo(hi,go,bt);bt===0&&hi===0&&go===0&&(Ao.origWidth%4!==0||Ao.origHeight%4!==0)&&console.warn("THREE.KTX2Loader: ETC1S and UASTC textures should use multiple-of-four dimensions."),Et>1?(sn=Ao.origWidth,En=Ao.origHeight):(sn=Ao.width,En=Ao.height);let Kn=new Uint8Array(HA.getImageTranscodedSizeInBytes(hi,go,0,yA));const _o=HA.transcodeImage(Kn,hi,go,bt,yA,0,-1,-1);if(le===Z.HalfFloatType&&(Kn=new Uint16Array(Kn.buffer,Kn.byteOffset,Kn.byteLength/Uint16Array.BYTES_PER_ELEMENT)),!_o)throw pe(),new Error("THREE.KTX2Loader: .transcodeImage failed.");un.push(Kn)}const bn=lA(un);pi.push({data:bn,width:sn,height:En}),Ct.push(bn.buffer)}Qt.push({mipmaps:pi,width:Oe,height:ye,format:ge,type:le})}return pe(),{faces:Qt,buffers:Ct,width:Oe,height:ye,hasAlpha:q,dfdFlags:gA,format:ge,type:le}}const TA=[{if:"astcSupported",basisFormat:[QA.UASTC],transcoderFormat:[CA.ASTC_4x4,CA.ASTC_4x4],engineFormat:[j.RGBA_ASTC_4x4_Format,j.RGBA_ASTC_4x4_Format],engineType:[Z.UnsignedByteType],priorityETC1S:1/0,priorityUASTC:1,needsPowerOfTwo:!1},{if:"bptcSupported",basisFormat:[QA.ETC1S,QA.UASTC],transcoderFormat:[CA.BC7_M5,CA.BC7_M5],engineFormat:[j.RGBA_BPTC_Format,j.RGBA_BPTC_Format],engineType:[Z.UnsignedByteType],priorityETC1S:3,priorityUASTC:2,needsPowerOfTwo:!1},{if:"dxtSupported",basisFormat:[QA.ETC1S,QA.UASTC],transcoderFormat:[CA.BC1,CA.BC3],engineFormat:[j.RGBA_S3TC_DXT1_Format,j.RGBA_S3TC_DXT5_Format],engineType:[Z.UnsignedByteType],priorityETC1S:4,priorityUASTC:5,needsPowerOfTwo:!1},{if:"etc2Supported",basisFormat:[QA.ETC1S,QA.UASTC],transcoderFormat:[CA.ETC1,CA.ETC2],engineFormat:[j.RGB_ETC2_Format,j.RGBA_ETC2_EAC_Format],engineType:[Z.UnsignedByteType],priorityETC1S:1,priorityUASTC:3,needsPowerOfTwo:!1},{if:"etc1Supported",basisFormat:[QA.ETC1S,QA.UASTC],transcoderFormat:[CA.ETC1],engineFormat:[j.RGB_ETC1_Format],engineType:[Z.UnsignedByteType],priorityETC1S:2,priorityUASTC:4,needsPowerOfTwo:!1},{if:"pvrtcSupported",basisFormat:[QA.ETC1S,QA.UASTC],transcoderFormat:[CA.PVRTC1_4_RGB,CA.PVRTC1_4_RGBA],engineFormat:[j.RGB_PVRTC_4BPPV1_Format,j.RGBA_PVRTC_4BPPV1_Format],engineType:[Z.UnsignedByteType],priorityETC1S:5,priorityUASTC:6,needsPowerOfTwo:!0},{if:"bptcSupported",basisFormat:[QA.UASTC_HDR],transcoderFormat:[CA.BC6H],engineFormat:[j.RGB_BPTC_UNSIGNED_Format],engineType:[Z.HalfFloatType],priorityHDR:1,needsPowerOfTwo:!1},{basisFormat:[QA.ETC1S,QA.UASTC],transcoderFormat:[CA.RGBA32,CA.RGBA32],engineFormat:[j.RGBAFormat,j.RGBAFormat],engineType:[Z.UnsignedByteType,Z.UnsignedByteType],priorityETC1S:100,priorityUASTC:100,needsPowerOfTwo:!1},{basisFormat:[QA.UASTC_HDR],transcoderFormat:[CA.RGBA_HALF],engineFormat:[j.RGBAFormat],engineType:[Z.HalfFloatType],priorityHDR:100,needsPowerOfTwo:!1}],pA={[QA.ETC1S]:TA.filter(NA=>NA.basisFormat.includes(QA.ETC1S)).sort((NA,HA)=>NA.priorityUASTC-HA.priorityUASTC),[QA.UASTC]:TA.filter(NA=>NA.basisFormat.includes(QA.UASTC)).sort((NA,HA)=>NA.priorityUASTC-HA.priorityUASTC),[QA.UASTC_HDR]:TA.filter(NA=>NA.basisFormat.includes(QA.UASTC_HDR)).sort((NA,HA)=>NA.priorityHDR-HA.priorityHDR)};function hA(NA,HA,pe,He){const Oe=pA[NA];for(let ye=0;ye<Oe.length;ye++){const Ye=Oe[ye];if(Ye.if&&!G[Ye.if]||!Ye.basisFormat.includes(NA)||He&&Ye.transcoderFormat.length<2||Ye.needsPowerOfTwo&&!(uA(HA)&&uA(pe)))continue;const Et=Ye.transcoderFormat[He?1:0],ct=Ye.engineFormat[He?1:0],q=Ye.engineType[0];return{transcoderFormat:Et,engineFormat:ct,engineType:q}}throw new Error("THREE.KTX2Loader: Failed to identify transcoding target.")}function uA(NA){return NA<=2?!0:(NA&NA-1)===0&&NA!==0}function lA(NA){if(NA.length===1)return NA[0];let HA=0;for(let Oe=0;Oe<NA.length;Oe++){const ye=NA[Oe];HA+=ye.byteLength}const pe=new Uint8Array(HA);let He=0;for(let Oe=0;Oe<NA.length;Oe++){const ye=NA[Oe];pe.set(ye,He),He+=ye.byteLength}return pe}};const u=new Set([s.RGBAFormat,s.RGFormat,s.RedFormat]),l={[_.VK_FORMAT_R32G32B32A32_SFLOAT]:s.RGBAFormat,[_.VK_FORMAT_R16G16B16A16_SFLOAT]:s.RGBAFormat,[_.VK_FORMAT_R8G8B8A8_UNORM]:s.RGBAFormat,[_.VK_FORMAT_R8G8B8A8_SRGB]:s.RGBAFormat,[_.VK_FORMAT_R32G32_SFLOAT]:s.RGFormat,[_.VK_FORMAT_R16G16_SFLOAT]:s.RGFormat,[_.VK_FORMAT_R8G8_UNORM]:s.RGFormat,[_.VK_FORMAT_R8G8_SRGB]:s.RGFormat,[_.VK_FORMAT_R32_SFLOAT]:s.RedFormat,[_.VK_FORMAT_R16_SFLOAT]:s.RedFormat,[_.VK_FORMAT_R8_SRGB]:s.RedFormat,[_.VK_FORMAT_R8_UNORM]:s.RedFormat,[_.VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT]:s.RGBA_ASTC_4x4_Format,[_.VK_FORMAT_ASTC_6x6_SRGB_BLOCK]:s.RGBA_ASTC_6x6_Format,[_.VK_FORMAT_ASTC_6x6_UNORM_BLOCK]:s.RGBA_ASTC_6x6_Format},R={[_.VK_FORMAT_R32G32B32A32_SFLOAT]:s.FloatType,[_.VK_FORMAT_R16G16B16A16_SFLOAT]:s.HalfFloatType,[_.VK_FORMAT_R8G8B8A8_UNORM]:s.UnsignedByteType,[_.VK_FORMAT_R8G8B8A8_SRGB]:s.UnsignedByteType,[_.VK_FORMAT_R32G32_SFLOAT]:s.FloatType,[_.VK_FORMAT_R16G16_SFLOAT]:s.HalfFloatType,[_.VK_FORMAT_R8G8_UNORM]:s.UnsignedByteType,[_.VK_FORMAT_R8G8_SRGB]:s.UnsignedByteType,[_.VK_FORMAT_R32_SFLOAT]:s.FloatType,[_.VK_FORMAT_R16_SFLOAT]:s.HalfFloatType,[_.VK_FORMAT_R8_SRGB]:s.UnsignedByteType,[_.VK_FORMAT_R8_UNORM]:s.UnsignedByteType,[_.VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT]:s.HalfFloatType,[_.VK_FORMAT_ASTC_6x6_SRGB_BLOCK]:s.UnsignedByteType,[_.VK_FORMAT_ASTC_6x6_UNORM_BLOCK]:s.UnsignedByteType};async function N(G){const{vkFormat:x}=G;if(l[x]===void 0)throw new Error("THREE.KTX2Loader: Unsupported vkFormat.");let U;G.supercompressionScheme===_.KHR_SUPERCOMPRESSION_ZSTD&&(p||(p=new Promise(async CA=>{const QA=new T.ZSTDDecoder;await QA.init(),CA(QA)})),U=await p);const j=[];for(let CA=0;CA<G.levels.length;CA++){const QA=Math.max(1,G.pixelWidth>>CA),SA=Math.max(1,G.pixelHeight>>CA),UA=G.pixelDepth?Math.max(1,G.pixelDepth>>CA):0,TA=G.levels[CA];let pA;if(G.supercompressionScheme===_.KHR_SUPERCOMPRESSION_NONE)pA=TA.levelData;else if(G.supercompressionScheme===_.KHR_SUPERCOMPRESSION_ZSTD)pA=U.decode(TA.levelData,TA.uncompressedByteLength);else throw new Error("THREE.KTX2Loader: Unsupported supercompressionScheme.");let hA;R[x]===s.FloatType?hA=new Float32Array(pA.buffer,pA.byteOffset,pA.byteLength/Float32Array.BYTES_PER_ELEMENT):R[x]===s.HalfFloatType?hA=new Uint16Array(pA.buffer,pA.byteOffset,pA.byteLength/Uint16Array.BYTES_PER_ELEMENT):hA=pA,j.push({data:hA,width:QA,height:SA,depth:UA})}let Z;if(u.has(l[x]))Z=G.pixelDepth===0?new s.DataTexture(j[0].data,G.pixelWidth,G.pixelHeight):new s.Data3DTexture(j[0].data,G.pixelWidth,G.pixelHeight,G.pixelDepth);else{if(G.pixelDepth>0)throw new Error("THREE.KTX2Loader: Unsupported pixelDepth.");Z=new s.CompressedTexture(j,G.pixelWidth,G.pixelHeight),Z.minFilter=j.length===1?s.LinearFilter:s.LinearMipmapLinearFilter,Z.magFilter=s.LinearFilter}return Z.mipmaps=j,Z.type=R[x],Z.format=l[x],Z.colorSpace=Y(G),Z.needsUpdate=!0,Promise.resolve(Z)}function Y(G){const x=G.dataFormatDescriptor[0];return x.colorPrimaries===_.KHR_DF_PRIMARIES_BT709?x.transferFunction===_.KHR_DF_TRANSFER_SRGB?s.SRGBColorSpace:s.LinearSRGBColorSpace:x.colorPrimaries===_.KHR_DF_PRIMARIES_DISPLAYP3?x.transferFunction===_.KHR_DF_TRANSFER_SRGB?v.DisplayP3ColorSpace:v.LinearDisplayP3ColorSpace:(x.colorPrimaries===_.KHR_DF_PRIMARIES_UNSPECIFIED||console.warn(`THREE.KTX2Loader: Unsupported color primaries, "${x.colorPrimaries}"`),s.NoColorSpace)}},"./node_modules/three/examples/jsm/loaders/MTLLoader.js":(_A,O,d)=>{d.r(O),d.d(O,{MTLLoader:()=>z});var s=d("./node_modules/three/build/three.core.js");class z extends s.Loader{constructor(v){super(v)}load(v,D,h,p){const m=this,u=this.path===""?s.LoaderUtils.extractUrlBase(v):this.path,l=new s.FileLoader(this.manager);l.setPath(this.path),l.setRequestHeader(this.requestHeader),l.setWithCredentials(this.withCredentials),l.load(v,function(R){try{D(m.parse(R,u))}catch(N){p?p(N):console.error(N),m.manager.itemError(v)}},h,p)}setMaterialOptions(v){return this.materialOptions=v,this}parse(v,D){const h=v.split(`
`);let p={};const m=/\s+/,u={};for(let R=0;R<h.length;R++){let N=h[R];if(N=N.trim(),N.length===0||N.charAt(0)==="#")continue;const Y=N.indexOf(" ");let G=Y>=0?N.substring(0,Y):N;G=G.toLowerCase();let x=Y>=0?N.substring(Y+1):"";if(x=x.trim(),G==="newmtl")p={name:x},u[x]=p;else if(G==="ka"||G==="kd"||G==="ks"||G==="ke"){const U=x.split(m,3);p[G]=[parseFloat(U[0]),parseFloat(U[1]),parseFloat(U[2])]}else p[G]=x}const l=new _(this.resourcePath||D,this.materialOptions);return l.setCrossOrigin(this.crossOrigin),l.setManager(this.manager),l.setMaterials(u),l}}class _{constructor(v="",D={}){this.baseUrl=v,this.options=D,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin="anonymous",this.side=this.options.side!==void 0?this.options.side:s.FrontSide,this.wrap=this.options.wrap!==void 0?this.options.wrap:s.RepeatWrapping}setCrossOrigin(v){return this.crossOrigin=v,this}setManager(v){this.manager=v}setMaterials(v){this.materialsInfo=this.convert(v),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(v){if(!this.options)return v;const D={};for(const h in v){const p=v[h],m={};D[h]=m;for(const u in p){let l=!0,R=p[u];const N=u.toLowerCase();switch(N){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(R=[R[0]/255,R[1]/255,R[2]/255]),this.options&&this.options.ignoreZeroRGBs&&R[0]===0&&R[1]===0&&R[2]===0&&(l=!1);break}l&&(m[N]=R)}}return D}preload(){for(const v in this.materialsInfo)this.create(v)}getIndex(v){return this.nameLookup[v]}getAsArray(){let v=0;for(const D in this.materialsInfo)this.materialsArray[v]=this.create(D),this.nameLookup[D]=v,v++;return this.materialsArray}create(v){return this.materials[v]===void 0&&this.createMaterial_(v),this.materials[v]}createMaterial_(v){const D=this,h=this.materialsInfo[v],p={name:v,side:this.side};function m(l,R){return typeof R!="string"||R===""?"":/^https?:\/\//i.test(R)?R:l+R}function u(l,R){if(p[l])return;const N=D.getTextureParams(R,p),Y=D.loadTexture(m(D.baseUrl,N.url));Y.repeat.copy(N.scale),Y.offset.copy(N.offset),Y.wrapS=D.wrap,Y.wrapT=D.wrap,(l==="map"||l==="emissiveMap")&&(Y.colorSpace=s.SRGBColorSpace),p[l]=Y}for(const l in h){const R=h[l];let N;if(R!=="")switch(l.toLowerCase()){case"kd":p.color=s.ColorManagement.toWorkingColorSpace(new s.Color().fromArray(R),s.SRGBColorSpace);break;case"ks":p.specular=s.ColorManagement.toWorkingColorSpace(new s.Color().fromArray(R),s.SRGBColorSpace);break;case"ke":p.emissive=s.ColorManagement.toWorkingColorSpace(new s.Color().fromArray(R),s.SRGBColorSpace);break;case"map_kd":u("map",R);break;case"map_ks":u("specularMap",R);break;case"map_ke":u("emissiveMap",R);break;case"norm":u("normalMap",R);break;case"map_bump":case"bump":u("bumpMap",R);break;case"map_d":u("alphaMap",R),p.transparent=!0;break;case"ns":p.shininess=parseFloat(R);break;case"d":N=parseFloat(R),N<1&&(p.opacity=N,p.transparent=!0);break;case"tr":N=parseFloat(R),this.options&&this.options.invertTrProperty&&(N=1-N),N>0&&(p.opacity=1-N,p.transparent=!0);break}}return this.materials[v]=new s.MeshPhongMaterial(p),this.materials[v]}getTextureParams(v,D){const h={scale:new s.Vector2(1,1),offset:new s.Vector2(0,0)},p=v.split(/\s+/);let m;return m=p.indexOf("-bm"),m>=0&&(D.bumpScale=parseFloat(p[m+1]),p.splice(m,2)),m=p.indexOf("-s"),m>=0&&(h.scale.set(parseFloat(p[m+1]),parseFloat(p[m+2])),p.splice(m,4)),m=p.indexOf("-o"),m>=0&&(h.offset.set(parseFloat(p[m+1]),parseFloat(p[m+2])),p.splice(m,4)),h.url=p.join(" ").trim(),h}loadTexture(v,D,h,p,m){const u=this.manager!==void 0?this.manager:s.DefaultLoadingManager;let l=u.getHandler(v);l===null&&(l=new s.TextureLoader(u)),l.setCrossOrigin&&l.setCrossOrigin(this.crossOrigin);const R=l.load(v,h,p,m);return D!==void 0&&(R.mapping=D),R}}},"./node_modules/three/examples/jsm/loaders/OBJLoader.js":(_A,O,d)=>{d.r(O),d.d(O,{OBJLoader:()=>Y});var s=d("./node_modules/three/build/three.core.js");const z=/^[og]\s*(.+)?/,_=/^mtllib /,T=/^usemtl /,v=/^usemap /,D=/\s+/,h=new s.Vector3,p=new s.Vector3,m=new s.Vector3,u=new s.Vector3,l=new s.Vector3,R=new s.Color;function N(){const G={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(x,U){if(this.object&&this.object.fromDeclaration===!1){this.object.name=x,this.object.fromDeclaration=U!==!1;return}const j=this.object&&typeof this.object.currentMaterial=="function"?this.object.currentMaterial():void 0;if(this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0),this.object={name:x||"",fromDeclaration:U!==!1,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(Z,CA){const QA=this._finalize(!1);QA&&(QA.inherited||QA.groupCount<=0)&&this.materials.splice(QA.index,1);const SA={index:this.materials.length,name:Z||"",mtllib:Array.isArray(CA)&&CA.length>0?CA[CA.length-1]:"",smooth:QA!==void 0?QA.smooth:this.smooth,groupStart:QA!==void 0?QA.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(UA){const TA={index:typeof UA=="number"?UA:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return TA.clone=this.clone.bind(TA),TA}};return this.materials.push(SA),SA},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(Z){const CA=this.currentMaterial();if(CA&&CA.groupEnd===-1&&(CA.groupEnd=this.geometry.vertices.length/3,CA.groupCount=CA.groupEnd-CA.groupStart,CA.inherited=!1),Z&&this.materials.length>1)for(let QA=this.materials.length-1;QA>=0;QA--)this.materials[QA].groupCount<=0&&this.materials.splice(QA,1);return Z&&this.materials.length===0&&this.materials.push({name:"",smooth:this.smooth}),CA}},j&&j.name&&typeof j.clone=="function"){const Z=j.clone(0);Z.inherited=!0,this.object.materials.push(Z)}this.objects.push(this.object)},finalize:function(){this.object&&typeof this.object._finalize=="function"&&this.object._finalize(!0)},parseVertexIndex:function(x,U){const j=parseInt(x,10);return(j>=0?j-1:j+U/3)*3},parseNormalIndex:function(x,U){const j=parseInt(x,10);return(j>=0?j-1:j+U/3)*3},parseUVIndex:function(x,U){const j=parseInt(x,10);return(j>=0?j-1:j+U/2)*2},addVertex:function(x,U,j){const Z=this.vertices,CA=this.object.geometry.vertices;CA.push(Z[x+0],Z[x+1],Z[x+2]),CA.push(Z[U+0],Z[U+1],Z[U+2]),CA.push(Z[j+0],Z[j+1],Z[j+2])},addVertexPoint:function(x){const U=this.vertices;this.object.geometry.vertices.push(U[x+0],U[x+1],U[x+2])},addVertexLine:function(x){const U=this.vertices;this.object.geometry.vertices.push(U[x+0],U[x+1],U[x+2])},addNormal:function(x,U,j){const Z=this.normals,CA=this.object.geometry.normals;CA.push(Z[x+0],Z[x+1],Z[x+2]),CA.push(Z[U+0],Z[U+1],Z[U+2]),CA.push(Z[j+0],Z[j+1],Z[j+2])},addFaceNormal:function(x,U,j){const Z=this.vertices,CA=this.object.geometry.normals;h.fromArray(Z,x),p.fromArray(Z,U),m.fromArray(Z,j),l.subVectors(m,p),u.subVectors(h,p),l.cross(u),l.normalize(),CA.push(l.x,l.y,l.z),CA.push(l.x,l.y,l.z),CA.push(l.x,l.y,l.z)},addColor:function(x,U,j){const Z=this.colors,CA=this.object.geometry.colors;Z[x]!==void 0&&CA.push(Z[x+0],Z[x+1],Z[x+2]),Z[U]!==void 0&&CA.push(Z[U+0],Z[U+1],Z[U+2]),Z[j]!==void 0&&CA.push(Z[j+0],Z[j+1],Z[j+2])},addUV:function(x,U,j){const Z=this.uvs,CA=this.object.geometry.uvs;CA.push(Z[x+0],Z[x+1]),CA.push(Z[U+0],Z[U+1]),CA.push(Z[j+0],Z[j+1])},addDefaultUV:function(){const x=this.object.geometry.uvs;x.push(0,0),x.push(0,0),x.push(0,0)},addUVLine:function(x){const U=this.uvs;this.object.geometry.uvs.push(U[x+0],U[x+1])},addFace:function(x,U,j,Z,CA,QA,SA,UA,TA){const pA=this.vertices.length;let hA=this.parseVertexIndex(x,pA),uA=this.parseVertexIndex(U,pA),lA=this.parseVertexIndex(j,pA);if(this.addVertex(hA,uA,lA),this.addColor(hA,uA,lA),SA!==void 0&&SA!==""){const NA=this.normals.length;hA=this.parseNormalIndex(SA,NA),uA=this.parseNormalIndex(UA,NA),lA=this.parseNormalIndex(TA,NA),this.addNormal(hA,uA,lA)}else this.addFaceNormal(hA,uA,lA);if(Z!==void 0&&Z!==""){const NA=this.uvs.length;hA=this.parseUVIndex(Z,NA),uA=this.parseUVIndex(CA,NA),lA=this.parseUVIndex(QA,NA),this.addUV(hA,uA,lA),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(x){this.object.geometry.type="Points";const U=this.vertices.length;for(let j=0,Z=x.length;j<Z;j++){const CA=this.parseVertexIndex(x[j],U);this.addVertexPoint(CA),this.addColor(CA)}},addLineGeometry:function(x,U){this.object.geometry.type="Line";const j=this.vertices.length,Z=this.uvs.length;for(let CA=0,QA=x.length;CA<QA;CA++)this.addVertexLine(this.parseVertexIndex(x[CA],j));for(let CA=0,QA=U.length;CA<QA;CA++)this.addUVLine(this.parseUVIndex(U[CA],Z))}};return G.startObject("",!1),G}class Y extends s.Loader{constructor(x){super(x),this.materials=null}load(x,U,j,Z){const CA=this,QA=new s.FileLoader(this.manager);QA.setPath(this.path),QA.setRequestHeader(this.requestHeader),QA.setWithCredentials(this.withCredentials),QA.load(x,function(SA){try{U(CA.parse(SA))}catch(UA){Z?Z(UA):console.error(UA),CA.manager.itemError(x)}},j,Z)}setMaterials(x){return this.materials=x,this}parse(x){const U=new N;x.indexOf(`\r
`)!==-1&&(x=x.replace(/\r\n/g,`
`)),x.indexOf(`\\
`)!==-1&&(x=x.replace(/\\\n/g,""));const j=x.split(`
`);let Z=[];for(let SA=0,UA=j.length;SA<UA;SA++){const TA=j[SA].trimStart();if(TA.length===0)continue;const pA=TA.charAt(0);if(pA!=="#")if(pA==="v"){const hA=TA.split(D);switch(hA[0]){case"v":U.vertices.push(parseFloat(hA[1]),parseFloat(hA[2]),parseFloat(hA[3])),hA.length>=7?(R.setRGB(parseFloat(hA[4]),parseFloat(hA[5]),parseFloat(hA[6]),s.SRGBColorSpace),U.colors.push(R.r,R.g,R.b)):U.colors.push(void 0,void 0,void 0);break;case"vn":U.normals.push(parseFloat(hA[1]),parseFloat(hA[2]),parseFloat(hA[3]));break;case"vt":U.uvs.push(parseFloat(hA[1]),parseFloat(hA[2]));break}}else if(pA==="f"){const uA=TA.slice(1).trim().split(D),lA=[];for(let HA=0,pe=uA.length;HA<pe;HA++){const He=uA[HA];if(He.length>0){const Oe=He.split("/");lA.push(Oe)}}const NA=lA[0];for(let HA=1,pe=lA.length-1;HA<pe;HA++){const He=lA[HA],Oe=lA[HA+1];U.addFace(NA[0],He[0],Oe[0],NA[1],He[1],Oe[1],NA[2],He[2],Oe[2])}}else if(pA==="l"){const hA=TA.substring(1).trim().split(" ");let uA=[];const lA=[];if(TA.indexOf("/")===-1)uA=hA;else for(let NA=0,HA=hA.length;NA<HA;NA++){const pe=hA[NA].split("/");pe[0]!==""&&uA.push(pe[0]),pe[1]!==""&&lA.push(pe[1])}U.addLineGeometry(uA,lA)}else if(pA==="p"){const uA=TA.slice(1).trim().split(" ");U.addPointGeometry(uA)}else if((Z=z.exec(TA))!==null){const hA=(" "+Z[0].slice(1).trim()).slice(1);U.startObject(hA)}else if(T.test(TA))U.object.startMaterial(TA.substring(7).trim(),U.materialLibraries);else if(_.test(TA))U.materialLibraries.push(TA.substring(7).trim());else if(v.test(TA))console.warn('THREE.OBJLoader: Rendering identifier "usemap" not supported. Textures must be defined in MTL files.');else if(pA==="s"){if(Z=TA.split(" "),Z.length>1){const uA=Z[1].trim().toLowerCase();U.object.smooth=uA!=="0"&&uA!=="off"}else U.object.smooth=!0;const hA=U.object.currentMaterial();hA&&(hA.smooth=U.object.smooth)}else{if(TA==="\0")continue;console.warn('THREE.OBJLoader: Unexpected line: "'+TA+'"')}}U.finalize();const CA=new s.Group;if(CA.materialLibraries=[].concat(U.materialLibraries),!(U.objects.length===1&&U.objects[0].geometry.vertices.length===0)===!0)for(let SA=0,UA=U.objects.length;SA<UA;SA++){const TA=U.objects[SA],pA=TA.geometry,hA=TA.materials,uA=pA.type==="Line",lA=pA.type==="Points";let NA=!1;if(pA.vertices.length===0)continue;const HA=new s.BufferGeometry;HA.setAttribute("position",new s.Float32BufferAttribute(pA.vertices,3)),pA.normals.length>0&&HA.setAttribute("normal",new s.Float32BufferAttribute(pA.normals,3)),pA.colors.length>0&&(NA=!0,HA.setAttribute("color",new s.Float32BufferAttribute(pA.colors,3))),pA.hasUVIndices===!0&&HA.setAttribute("uv",new s.Float32BufferAttribute(pA.uvs,2));const pe=[];for(let Oe=0,ye=hA.length;Oe<ye;Oe++){const Ye=hA[Oe],Et=Ye.name+"_"+Ye.smooth+"_"+NA;let ct=U.materials[Et];if(this.materials!==null){if(ct=this.materials.create(Ye.name),uA&&ct&&!(ct instanceof s.LineBasicMaterial)){const q=new s.LineBasicMaterial;s.Material.prototype.copy.call(q,ct),q.color.copy(ct.color),ct=q}else if(lA&&ct&&!(ct instanceof s.PointsMaterial)){const q=new s.PointsMaterial({size:10,sizeAttenuation:!1});s.Material.prototype.copy.call(q,ct),q.color.copy(ct.color),q.map=ct.map,ct=q}}ct===void 0&&(uA?ct=new s.LineBasicMaterial:lA?ct=new s.PointsMaterial({size:1,sizeAttenuation:!1}):ct=new s.MeshPhongMaterial,ct.name=Ye.name,ct.flatShading=!Ye.smooth,ct.vertexColors=NA,U.materials[Et]=ct),pe.push(ct)}let He;if(pe.length>1){for(let Oe=0,ye=hA.length;Oe<ye;Oe++){const Ye=hA[Oe];HA.addGroup(Ye.groupStart,Ye.groupCount,Oe)}uA?He=new s.LineSegments(HA,pe):lA?He=new s.Points(HA,pe):He=new s.Mesh(HA,pe)}else uA?He=new s.LineSegments(HA,pe[0]):lA?He=new s.Points(HA,pe[0]):He=new s.Mesh(HA,pe[0]);He.name=TA.name,CA.add(He)}else if(U.vertices.length>0){const SA=new s.PointsMaterial({size:1,sizeAttenuation:!1}),UA=new s.BufferGeometry;UA.setAttribute("position",new s.Float32BufferAttribute(U.vertices,3)),U.colors.length>0&&U.colors[0]!==void 0&&(UA.setAttribute("color",new s.Float32BufferAttribute(U.colors,3)),SA.vertexColors=!0);const TA=new s.Points(UA,SA);CA.add(TA)}return CA}}},"./node_modules/three/examples/jsm/math/ColorSpaces.js":(_A,O,d)=>{d.r(O),d.d(O,{DisplayP3ColorSpace:()=>m,DisplayP3ColorSpaceImpl:()=>l,LinearDisplayP3ColorSpace:()=>u,LinearDisplayP3ColorSpaceImpl:()=>R,LinearRec2020ColorSpace:()=>G,LinearRec2020ColorSpaceImpl:()=>x});var s=d("./node_modules/three/build/three.core.js");const z=[.68,.32,.265,.69,.15,.06],_=[.2289,.6917,.0793],T=[.708,.292,.17,.797,.131,.046],v=[.2627,.678,.0593],D=[.3127,.329],h=new s.Matrix3().set(.4865709,.2656677,.1982173,.2289746,.6917385,.0792869,0,.0451134,1.0439444),p=new s.Matrix3().set(2.4934969,-.9313836,-.4027108,-.829489,1.7626641,.0236247,.0358458,-.0761724,.9568845),m="display-p3",u="display-p3-linear",l={primaries:z,whitePoint:D,transfer:s.SRGBTransfer,toXYZ:h,fromXYZ:p,luminanceCoefficients:_,outputColorSpaceConfig:{drawingBufferColorSpace:m}},R={primaries:z,whitePoint:D,transfer:s.LinearTransfer,toXYZ:h,fromXYZ:p,luminanceCoefficients:_,workingColorSpaceConfig:{unpackColorSpace:m},outputColorSpaceConfig:{drawingBufferColorSpace:m}},N=new s.Matrix3().set(.636958,.1446169,.168881,.2627002,.6779981,.0593017,0,.0280727,1.0609851),Y=new s.Matrix3().set(1.7166512,-.3556708,-.2533663,-.6666844,1.6164812,.0157685,.0176399,-.0427706,.9421031),G="rec2020-linear",x={primaries:T,whitePoint:D,transfer:s.LinearTransfer,toXYZ:N,fromXYZ:Y,luminanceCoefficients:v}},"./node_modules/three/examples/jsm/math/OBB.js":(_A,O,d)=>{d.r(O),d.d(O,{OBB:()=>j});var s=d("./node_modules/three/build/three.core.js");const z={c:null,u:[new s.Vector3,new s.Vector3,new s.Vector3],e:[]},_={c:null,u:[new s.Vector3,new s.Vector3,new s.Vector3],e:[]},T=[[],[],[]],v=[[],[],[]],D=[],h=new s.Vector3,p=new s.Vector3,m=new s.Vector3,u=new s.Vector3,l=new s.Vector3,R=new s.Vector3,N=new s.Matrix3,Y=new s.Box3,G=new s.Matrix4,x=new s.Matrix4,U=new s.Ray;class j{constructor(QA=new s.Vector3,SA=new s.Vector3,UA=new s.Matrix3){this.center=QA,this.halfSize=SA,this.rotation=UA}set(QA,SA,UA){return this.center=QA,this.halfSize=SA,this.rotation=UA,this}copy(QA){return this.center.copy(QA.center),this.halfSize.copy(QA.halfSize),this.rotation.copy(QA.rotation),this}clone(){return new this.constructor().copy(this)}getSize(QA){return QA.copy(this.halfSize).multiplyScalar(2)}clampPoint(QA,SA){const UA=this.halfSize;u.subVectors(QA,this.center),this.rotation.extractBasis(h,p,m),SA.copy(this.center);const TA=s.MathUtils.clamp(u.dot(h),-UA.x,UA.x);SA.add(h.multiplyScalar(TA));const pA=s.MathUtils.clamp(u.dot(p),-UA.y,UA.y);SA.add(p.multiplyScalar(pA));const hA=s.MathUtils.clamp(u.dot(m),-UA.z,UA.z);return SA.add(m.multiplyScalar(hA)),SA}containsPoint(QA){return u.subVectors(QA,this.center),this.rotation.extractBasis(h,p,m),Math.abs(u.dot(h))<=this.halfSize.x&&Math.abs(u.dot(p))<=this.halfSize.y&&Math.abs(u.dot(m))<=this.halfSize.z}intersectsBox3(QA){return this.intersectsOBB(Z.fromBox3(QA))}intersectsSphere(QA){return this.clampPoint(QA.center,R),R.distanceToSquared(QA.center)<=QA.radius*QA.radius}intersectsOBB(QA,SA=Number.EPSILON){z.c=this.center,z.e[0]=this.halfSize.x,z.e[1]=this.halfSize.y,z.e[2]=this.halfSize.z,this.rotation.extractBasis(z.u[0],z.u[1],z.u[2]),_.c=QA.center,_.e[0]=QA.halfSize.x,_.e[1]=QA.halfSize.y,_.e[2]=QA.halfSize.z,QA.rotation.extractBasis(_.u[0],_.u[1],_.u[2]);for(let pA=0;pA<3;pA++)for(let hA=0;hA<3;hA++)T[pA][hA]=z.u[pA].dot(_.u[hA]);u.subVectors(_.c,z.c),D[0]=u.dot(z.u[0]),D[1]=u.dot(z.u[1]),D[2]=u.dot(z.u[2]);for(let pA=0;pA<3;pA++)for(let hA=0;hA<3;hA++)v[pA][hA]=Math.abs(T[pA][hA])+SA;let UA,TA;for(let pA=0;pA<3;pA++)if(UA=z.e[pA],TA=_.e[0]*v[pA][0]+_.e[1]*v[pA][1]+_.e[2]*v[pA][2],Math.abs(D[pA])>UA+TA)return!1;for(let pA=0;pA<3;pA++)if(UA=z.e[0]*v[0][pA]+z.e[1]*v[1][pA]+z.e[2]*v[2][pA],TA=_.e[pA],Math.abs(D[0]*T[0][pA]+D[1]*T[1][pA]+D[2]*T[2][pA])>UA+TA)return!1;return UA=z.e[1]*v[2][0]+z.e[2]*v[1][0],TA=_.e[1]*v[0][2]+_.e[2]*v[0][1],!(Math.abs(D[2]*T[1][0]-D[1]*T[2][0])>UA+TA||(UA=z.e[1]*v[2][1]+z.e[2]*v[1][1],TA=_.e[0]*v[0][2]+_.e[2]*v[0][0],Math.abs(D[2]*T[1][1]-D[1]*T[2][1])>UA+TA)||(UA=z.e[1]*v[2][2]+z.e[2]*v[1][2],TA=_.e[0]*v[0][1]+_.e[1]*v[0][0],Math.abs(D[2]*T[1][2]-D[1]*T[2][2])>UA+TA)||(UA=z.e[0]*v[2][0]+z.e[2]*v[0][0],TA=_.e[1]*v[1][2]+_.e[2]*v[1][1],Math.abs(D[0]*T[2][0]-D[2]*T[0][0])>UA+TA)||(UA=z.e[0]*v[2][1]+z.e[2]*v[0][1],TA=_.e[0]*v[1][2]+_.e[2]*v[1][0],Math.abs(D[0]*T[2][1]-D[2]*T[0][1])>UA+TA)||(UA=z.e[0]*v[2][2]+z.e[2]*v[0][2],TA=_.e[0]*v[1][1]+_.e[1]*v[1][0],Math.abs(D[0]*T[2][2]-D[2]*T[0][2])>UA+TA)||(UA=z.e[0]*v[1][0]+z.e[1]*v[0][0],TA=_.e[1]*v[2][2]+_.e[2]*v[2][1],Math.abs(D[1]*T[0][0]-D[0]*T[1][0])>UA+TA)||(UA=z.e[0]*v[1][1]+z.e[1]*v[0][1],TA=_.e[0]*v[2][2]+_.e[2]*v[2][0],Math.abs(D[1]*T[0][1]-D[0]*T[1][1])>UA+TA)||(UA=z.e[0]*v[1][2]+z.e[1]*v[0][2],TA=_.e[0]*v[2][1]+_.e[1]*v[2][0],Math.abs(D[1]*T[0][2]-D[0]*T[1][2])>UA+TA))}intersectsPlane(QA){this.rotation.extractBasis(h,p,m);const SA=this.halfSize.x*Math.abs(QA.normal.dot(h))+this.halfSize.y*Math.abs(QA.normal.dot(p))+this.halfSize.z*Math.abs(QA.normal.dot(m)),UA=QA.normal.dot(this.center)-QA.constant;return Math.abs(UA)<=SA}intersectRay(QA,SA){return this.getSize(l),Y.setFromCenterAndSize(u.set(0,0,0),l),G.setFromMatrix3(this.rotation),G.setPosition(this.center),x.copy(G).invert(),U.copy(QA).applyMatrix4(x),U.intersectBox(Y,SA)?SA.applyMatrix4(G):null}intersectsRay(QA){return this.intersectRay(QA,u)!==null}fromBox3(QA){return QA.getCenter(this.center),QA.getSize(this.halfSize).multiplyScalar(.5),this.rotation.identity(),this}equals(QA){return QA.center.equals(this.center)&&QA.halfSize.equals(this.halfSize)&&QA.rotation.equals(this.rotation)}applyMatrix4(QA){const SA=QA.elements;let UA=u.set(SA[0],SA[1],SA[2]).length();const TA=u.set(SA[4],SA[5],SA[6]).length(),pA=u.set(SA[8],SA[9],SA[10]).length();QA.determinant()<0&&(UA=-UA),N.setFromMatrix4(QA);const uA=1/UA,lA=1/TA,NA=1/pA;return N.elements[0]*=uA,N.elements[1]*=uA,N.elements[2]*=uA,N.elements[3]*=lA,N.elements[4]*=lA,N.elements[5]*=lA,N.elements[6]*=NA,N.elements[7]*=NA,N.elements[8]*=NA,this.rotation.multiply(N),this.halfSize.x*=UA,this.halfSize.y*=TA,this.halfSize.z*=pA,u.setFromMatrixPosition(QA),this.center.add(u),this}}const Z=new j},"./node_modules/three/examples/jsm/utils/BufferGeometryUtils.js":(_A,O,d)=>{d.r(O),d.d(O,{computeMikkTSpaceTangents:()=>z,computeMorphedAttributes:()=>R,deepCloneAttribute:()=>v,deinterleaveAttribute:()=>h,deinterleaveGeometry:()=>p,estimateBytesUsed:()=>m,interleaveAttributes:()=>D,mergeAttributes:()=>T,mergeGeometries:()=>_,mergeGroups:()=>N,mergeVertices:()=>u,toCreasedNormals:()=>Y,toTrianglesDrawMode:()=>l});var s=d("./node_modules/three/build/three.core.js");function z(G,x,U=!0){if(!x||!x.isReady)throw new Error("BufferGeometryUtils: Initialized MikkTSpace library required.");if(!G.hasAttribute("position")||!G.hasAttribute("normal")||!G.hasAttribute("uv"))throw new Error('BufferGeometryUtils: Tangents require "position", "normal", and "uv" attributes.');function j(QA){if(QA.normalized||QA.isInterleavedBufferAttribute){const SA=new Float32Array(QA.count*QA.itemSize);for(let UA=0,TA=0;UA<QA.count;UA++)SA[TA++]=QA.getX(UA),SA[TA++]=QA.getY(UA),QA.itemSize>2&&(SA[TA++]=QA.getZ(UA));return SA}return QA.array instanceof Float32Array?QA.array:new Float32Array(QA.array)}const Z=G.index?G.toNonIndexed():G,CA=x.generateTangents(j(Z.attributes.position),j(Z.attributes.normal),j(Z.attributes.uv));if(U)for(let QA=3;QA<CA.length;QA+=4)CA[QA]*=-1;return Z.setAttribute("tangent",new s.BufferAttribute(CA,4)),G!==Z&&G.copy(Z),G}function _(G,x=!1){const U=G[0].index!==null,j=new Set(Object.keys(G[0].attributes)),Z=new Set(Object.keys(G[0].morphAttributes)),CA={},QA={},SA=G[0].morphTargetsRelative,UA=new s.BufferGeometry;let TA=0;for(let pA=0;pA<G.length;++pA){const hA=G[pA];let uA=0;if(U!==(hA.index!==null))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+pA+". All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them."),null;for(const lA in hA.attributes){if(!j.has(lA))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+pA+'. All geometries must have compatible attributes; make sure "'+lA+'" attribute exists among all geometries, or in none of them.'),null;CA[lA]===void 0&&(CA[lA]=[]),CA[lA].push(hA.attributes[lA]),uA++}if(uA!==j.size)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+pA+". Make sure all geometries have the same number of attributes."),null;if(SA!==hA.morphTargetsRelative)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+pA+". .morphTargetsRelative must be consistent throughout all geometries."),null;for(const lA in hA.morphAttributes){if(!Z.has(lA))return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+pA+". .morphAttributes must be consistent throughout all geometries."),null;QA[lA]===void 0&&(QA[lA]=[]),QA[lA].push(hA.morphAttributes[lA])}if(x){let lA;if(U)lA=hA.index.count;else if(hA.attributes.position!==void 0)lA=hA.attributes.position.count;else return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed with geometry at index "+pA+". The geometry must have either an index or a position attribute"),null;UA.addGroup(TA,lA,pA),TA+=lA}}if(U){let pA=0;const hA=[];for(let uA=0;uA<G.length;++uA){const lA=G[uA].index;for(let NA=0;NA<lA.count;++NA)hA.push(lA.getX(NA)+pA);pA+=G[uA].attributes.position.count}UA.setIndex(hA)}for(const pA in CA){const hA=T(CA[pA]);if(!hA)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+pA+" attribute."),null;UA.setAttribute(pA,hA)}for(const pA in QA){const hA=QA[pA][0].length;if(hA===0)break;UA.morphAttributes=UA.morphAttributes||{},UA.morphAttributes[pA]=[];for(let uA=0;uA<hA;++uA){const lA=[];for(let HA=0;HA<QA[pA].length;++HA)lA.push(QA[pA][HA][uA]);const NA=T(lA);if(!NA)return console.error("THREE.BufferGeometryUtils: .mergeGeometries() failed while trying to merge the "+pA+" morphAttribute."),null;UA.morphAttributes[pA].push(NA)}}return UA}function T(G){let x,U,j,Z=-1,CA=0;for(let TA=0;TA<G.length;++TA){const pA=G[TA];if(x===void 0&&(x=pA.array.constructor),x!==pA.array.constructor)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.array must be of consistent array types across matching attributes."),null;if(U===void 0&&(U=pA.itemSize),U!==pA.itemSize)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.itemSize must be consistent across matching attributes."),null;if(j===void 0&&(j=pA.normalized),j!==pA.normalized)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.normalized must be consistent across matching attributes."),null;if(Z===-1&&(Z=pA.gpuType),Z!==pA.gpuType)return console.error("THREE.BufferGeometryUtils: .mergeAttributes() failed. BufferAttribute.gpuType must be consistent across matching attributes."),null;CA+=pA.count*U}const QA=new x(CA),SA=new s.BufferAttribute(QA,U,j);let UA=0;for(let TA=0;TA<G.length;++TA){const pA=G[TA];if(pA.isInterleavedBufferAttribute){const hA=UA/U;for(let uA=0,lA=pA.count;uA<lA;uA++)for(let NA=0;NA<U;NA++){const HA=pA.getComponent(uA,NA);SA.setComponent(uA+hA,NA,HA)}}else QA.set(pA.array,UA);UA+=pA.count*U}return Z!==void 0&&(SA.gpuType=Z),SA}function v(G){return G.isInstancedInterleavedBufferAttribute||G.isInterleavedBufferAttribute?h(G):G.isInstancedBufferAttribute?new s.InstancedBufferAttribute().copy(G):new s.BufferAttribute().copy(G)}function D(G){let x,U=0,j=0;for(let TA=0,pA=G.length;TA<pA;++TA){const hA=G[TA];if(x===void 0&&(x=hA.array.constructor),x!==hA.array.constructor)return console.error("AttributeBuffers of different types cannot be interleaved"),null;U+=hA.array.length,j+=hA.itemSize}const Z=new s.InterleavedBuffer(new x(U),j);let CA=0;const QA=[],SA=["getX","getY","getZ","getW"],UA=["setX","setY","setZ","setW"];for(let TA=0,pA=G.length;TA<pA;TA++){const hA=G[TA],uA=hA.itemSize,lA=hA.count,NA=new s.InterleavedBufferAttribute(Z,uA,CA,hA.normalized);QA.push(NA),CA+=uA;for(let HA=0;HA<lA;HA++)for(let pe=0;pe<uA;pe++)NA[UA[pe]](HA,hA[SA[pe]](HA))}return QA}function h(G){const x=G.data.array.constructor,U=G.count,j=G.itemSize,Z=G.normalized,CA=new x(U*j);let QA;G.isInstancedInterleavedBufferAttribute?QA=new s.InstancedBufferAttribute(CA,j,Z,G.meshPerAttribute):QA=new s.BufferAttribute(CA,j,Z);for(let SA=0;SA<U;SA++)QA.setX(SA,G.getX(SA)),j>=2&&QA.setY(SA,G.getY(SA)),j>=3&&QA.setZ(SA,G.getZ(SA)),j>=4&&QA.setW(SA,G.getW(SA));return QA}function p(G){const x=G.attributes,U=G.morphTargets,j=new Map;for(const Z in x){const CA=x[Z];CA.isInterleavedBufferAttribute&&(j.has(CA)||j.set(CA,h(CA)),x[Z]=j.get(CA))}for(const Z in U){const CA=U[Z];CA.isInterleavedBufferAttribute&&(j.has(CA)||j.set(CA,h(CA)),U[Z]=j.get(CA))}}function m(G){let x=0;for(const j in G.attributes){const Z=G.getAttribute(j);x+=Z.count*Z.itemSize*Z.array.BYTES_PER_ELEMENT}const U=G.getIndex();return x+=U?U.count*U.itemSize*U.array.BYTES_PER_ELEMENT:0,x}function u(G,x=1e-4){x=Math.max(x,Number.EPSILON);const U={},j=G.getIndex(),Z=G.getAttribute("position"),CA=j?j.count:Z.count;let QA=0;const SA=Object.keys(G.attributes),UA={},TA={},pA=[],hA=["getX","getY","getZ","getW"],uA=["setX","setY","setZ","setW"];for(let Oe=0,ye=SA.length;Oe<ye;Oe++){const Ye=SA[Oe],Et=G.attributes[Ye];UA[Ye]=new Et.constructor(new Et.array.constructor(Et.count*Et.itemSize),Et.itemSize,Et.normalized);const ct=G.morphAttributes[Ye];ct&&(TA[Ye]||(TA[Ye]=[]),ct.forEach((q,gA)=>{const yA=new q.array.constructor(q.count*q.itemSize);TA[Ye][gA]=new q.constructor(yA,q.itemSize,q.normalized)}))}const lA=x*.5,NA=Math.log10(1/x),HA=Math.pow(10,NA),pe=lA*HA;for(let Oe=0;Oe<CA;Oe++){const ye=j?j.getX(Oe):Oe;let Ye="";for(let Et=0,ct=SA.length;Et<ct;Et++){const q=SA[Et],gA=G.getAttribute(q),yA=gA.itemSize;for(let ge=0;ge<yA;ge++)Ye+=`${~~(gA[hA[ge]](ye)*HA+pe)},`}if(Ye in U)pA.push(U[Ye]);else{for(let Et=0,ct=SA.length;Et<ct;Et++){const q=SA[Et],gA=G.getAttribute(q),yA=G.morphAttributes[q],ge=gA.itemSize,le=UA[q],Qt=TA[q];for(let Ct=0;Ct<ge;Ct++){const bt=hA[Ct],pi=uA[Ct];if(le[pi](QA,gA[bt](ye)),yA)for(let hi=0,un=yA.length;hi<un;hi++)Qt[hi][pi](QA,yA[hi][bt](ye))}}U[Ye]=QA,pA.push(QA),QA++}}const He=G.clone();for(const Oe in G.attributes){const ye=UA[Oe];if(He.setAttribute(Oe,new ye.constructor(ye.array.slice(0,QA*ye.itemSize),ye.itemSize,ye.normalized)),Oe in TA)for(let Ye=0;Ye<TA[Oe].length;Ye++){const Et=TA[Oe][Ye];He.morphAttributes[Oe][Ye]=new Et.constructor(Et.array.slice(0,QA*Et.itemSize),Et.itemSize,Et.normalized)}}return He.setIndex(pA),He}function l(G,x){if(x===s.TrianglesDrawMode)return console.warn("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Geometry already defined as triangles."),G;if(x===s.TriangleFanDrawMode||x===s.TriangleStripDrawMode){let U=G.getIndex();if(U===null){const QA=[],SA=G.getAttribute("position");if(SA!==void 0){for(let UA=0;UA<SA.count;UA++)QA.push(UA);G.setIndex(QA),U=G.getIndex()}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Undefined position attribute. Processing not possible."),G}const j=U.count-2,Z=[];if(x===s.TriangleFanDrawMode)for(let QA=1;QA<=j;QA++)Z.push(U.getX(0)),Z.push(U.getX(QA)),Z.push(U.getX(QA+1));else for(let QA=0;QA<j;QA++)QA%2===0?(Z.push(U.getX(QA)),Z.push(U.getX(QA+1)),Z.push(U.getX(QA+2))):(Z.push(U.getX(QA+2)),Z.push(U.getX(QA+1)),Z.push(U.getX(QA)));Z.length/3!==j&&console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unable to generate correct amount of triangles.");const CA=G.clone();return CA.setIndex(Z),CA.clearGroups(),CA}else return console.error("THREE.BufferGeometryUtils.toTrianglesDrawMode(): Unknown draw mode:",x),G}function R(G){const x=new s.Vector3,U=new s.Vector3,j=new s.Vector3,Z=new s.Vector3,CA=new s.Vector3,QA=new s.Vector3,SA=new s.Vector3,UA=new s.Vector3,TA=new s.Vector3;function pA(En,bn,go,Ao,Kn,_o,Kt,xA){x.fromBufferAttribute(bn,Kn),U.fromBufferAttribute(bn,_o),j.fromBufferAttribute(bn,Kt);const vA=En.morphTargetInfluences;if(go&&vA){SA.set(0,0,0),UA.set(0,0,0),TA.set(0,0,0);for(let ie=0,ZA=go.length;ie<ZA;ie++){const jA=vA[ie],Be=go[ie];jA!==0&&(Z.fromBufferAttribute(Be,Kn),CA.fromBufferAttribute(Be,_o),QA.fromBufferAttribute(Be,Kt),Ao?(SA.addScaledVector(Z,jA),UA.addScaledVector(CA,jA),TA.addScaledVector(QA,jA)):(SA.addScaledVector(Z.sub(x),jA),UA.addScaledVector(CA.sub(U),jA),TA.addScaledVector(QA.sub(j),jA)))}x.add(SA),U.add(UA),j.add(TA)}En.isSkinnedMesh&&(En.applyBoneTransform(Kn,x),En.applyBoneTransform(_o,U),En.applyBoneTransform(Kt,j)),xA[Kn*3+0]=x.x,xA[Kn*3+1]=x.y,xA[Kn*3+2]=x.z,xA[_o*3+0]=U.x,xA[_o*3+1]=U.y,xA[_o*3+2]=U.z,xA[Kt*3+0]=j.x,xA[Kt*3+1]=j.y,xA[Kt*3+2]=j.z}const hA=G.geometry,uA=G.material;let lA,NA,HA;const pe=hA.index,He=hA.attributes.position,Oe=hA.morphAttributes.position,ye=hA.morphTargetsRelative,Ye=hA.attributes.normal,Et=hA.morphAttributes.position,ct=hA.groups,q=hA.drawRange;let gA,yA,ge,le,Qt,Ct,bt;const pi=new Float32Array(He.count*He.itemSize),hi=new Float32Array(Ye.count*Ye.itemSize);if(pe!==null)if(Array.isArray(uA))for(gA=0,ge=ct.length;gA<ge;gA++)for(Qt=ct[gA],Ct=Math.max(Qt.start,q.start),bt=Math.min(Qt.start+Qt.count,q.start+q.count),yA=Ct,le=bt;yA<le;yA+=3)lA=pe.getX(yA),NA=pe.getX(yA+1),HA=pe.getX(yA+2),pA(G,He,Oe,ye,lA,NA,HA,pi),pA(G,Ye,Et,ye,lA,NA,HA,hi);else for(Ct=Math.max(0,q.start),bt=Math.min(pe.count,q.start+q.count),gA=Ct,ge=bt;gA<ge;gA+=3)lA=pe.getX(gA),NA=pe.getX(gA+1),HA=pe.getX(gA+2),pA(G,He,Oe,ye,lA,NA,HA,pi),pA(G,Ye,Et,ye,lA,NA,HA,hi);else if(Array.isArray(uA))for(gA=0,ge=ct.length;gA<ge;gA++)for(Qt=ct[gA],Ct=Math.max(Qt.start,q.start),bt=Math.min(Qt.start+Qt.count,q.start+q.count),yA=Ct,le=bt;yA<le;yA+=3)lA=yA,NA=yA+1,HA=yA+2,pA(G,He,Oe,ye,lA,NA,HA,pi),pA(G,Ye,Et,ye,lA,NA,HA,hi);else for(Ct=Math.max(0,q.start),bt=Math.min(He.count,q.start+q.count),gA=Ct,ge=bt;gA<ge;gA+=3)lA=gA,NA=gA+1,HA=gA+2,pA(G,He,Oe,ye,lA,NA,HA,pi),pA(G,Ye,Et,ye,lA,NA,HA,hi);const un=new s.Float32BufferAttribute(pi,3),sn=new s.Float32BufferAttribute(hi,3);return{positionAttribute:He,normalAttribute:Ye,morphedPositionAttribute:un,morphedNormalAttribute:sn}}function N(G){if(G.groups.length===0)return console.warn("THREE.BufferGeometryUtils.mergeGroups(): No groups are defined. Nothing to merge."),G;let x=G.groups;if(x=x.sort((QA,SA)=>QA.materialIndex!==SA.materialIndex?QA.materialIndex-SA.materialIndex:QA.start-SA.start),G.getIndex()===null){const QA=G.getAttribute("position"),SA=[];for(let UA=0;UA<QA.count;UA+=3)SA.push(UA,UA+1,UA+2);G.setIndex(SA)}const U=G.getIndex(),j=[];for(let QA=0;QA<x.length;QA++){const SA=x[QA],UA=SA.start,TA=UA+SA.count;for(let pA=UA;pA<TA;pA++)j.push(U.getX(pA))}G.dispose(),G.setIndex(j);let Z=0;for(let QA=0;QA<x.length;QA++){const SA=x[QA];SA.start=Z,Z+=SA.count}let CA=x[0];G.groups=[CA];for(let QA=1;QA<x.length;QA++){const SA=x[QA];CA.materialIndex===SA.materialIndex?CA.count+=SA.count:(CA=SA,G.groups.push(CA))}return G}function Y(G,x=Math.PI/3){const U=Math.cos(x),j=(1+1e-10)*100,Z=[new s.Vector3,new s.Vector3,new s.Vector3],CA=new s.Vector3,QA=new s.Vector3,SA=new s.Vector3,UA=new s.Vector3;function TA(HA){const pe=~~(HA.x*j),He=~~(HA.y*j),Oe=~~(HA.z*j);return`${pe},${He},${Oe}`}const pA=G.index?G.toNonIndexed():G,hA=pA.attributes.position,uA={};for(let HA=0,pe=hA.count/3;HA<pe;HA++){const He=3*HA,Oe=Z[0].fromBufferAttribute(hA,He+0),ye=Z[1].fromBufferAttribute(hA,He+1),Ye=Z[2].fromBufferAttribute(hA,He+2);CA.subVectors(Ye,ye),QA.subVectors(Oe,ye);const Et=new s.Vector3().crossVectors(CA,QA).normalize();for(let ct=0;ct<3;ct++){const q=Z[ct],gA=TA(q);gA in uA||(uA[gA]=[]),uA[gA].push(Et)}}const lA=new Float32Array(hA.count*3),NA=new s.BufferAttribute(lA,3,!1);for(let HA=0,pe=hA.count/3;HA<pe;HA++){const He=3*HA,Oe=Z[0].fromBufferAttribute(hA,He+0),ye=Z[1].fromBufferAttribute(hA,He+1),Ye=Z[2].fromBufferAttribute(hA,He+2);CA.subVectors(Ye,ye),QA.subVectors(Oe,ye),SA.crossVectors(CA,QA).normalize();for(let Et=0;Et<3;Et++){const ct=Z[Et],q=TA(ct),gA=uA[q];UA.set(0,0,0);for(let yA=0,ge=gA.length;yA<ge;yA++){const le=gA[yA];SA.dot(le)>U&&UA.add(le)}UA.normalize(),NA.setXYZ(He+Et,UA.x,UA.y,UA.z)}}return pA.setAttribute("normal",NA),pA}},"./node_modules/three/examples/jsm/utils/WorkerPool.js":(_A,O,d)=>{d.r(O),d.d(O,{WorkerPool:()=>s});class s{constructor(_=4){this.pool=_,this.queue=[],this.workers=[],this.workersResolve=[],this.workerStatus=0}_initWorker(_){if(!this.workers[_]){const T=this.workerCreator();T.addEventListener("message",this._onMessage.bind(this,_)),this.workers[_]=T}}_getIdleWorker(){for(let _=0;_<this.pool;_++)if(!(this.workerStatus&1<<_))return _;return-1}_onMessage(_,T){const v=this.workersResolve[_];if(v&&v(T),this.queue.length){const{resolve:D,msg:h,transfer:p}=this.queue.shift();this.workersResolve[_]=D,this.workers[_].postMessage(h,p)}else this.workerStatus^=1<<_}setWorkerCreator(_){this.workerCreator=_}setWorkerLimit(_){this.pool=_}postMessage(_,T){return new Promise(v=>{const D=this._getIdleWorker();D!==-1?(this._initWorker(D),this.workerStatus|=1<<D,this.workersResolve[D]=v,this.workers[D].postMessage(_,T)):this.queue.push({resolve:v,msg:_,transfer:T})})}dispose(){this.workers.forEach(_=>_.terminate()),this.workersResolve.length=0,this.workers.length=0,this.queue.length=0,this.workerStatus=0}}},"./package.json":_A=>{_A.exports=JSON.parse('{"name":"aframe","version":"1.7.0","description":"A web framework for building virtual reality experiences.","homepage":"https://aframe.io/","main":"./dist/aframe-master.js","module":"./dist/aframe-master.module.min.js","exports":{".":{"import":"./dist/aframe-master.module.min.js","require":"./dist/aframe-master.js"}},"scripts":{"dev":"cross-env INSPECTOR_VERSION=dev webpack serve --port 8080","dist":"node scripts/updateVersionLog.js && npm run dist:min && npm run dist:max && npm run dist:module","dist:max":"webpack --config webpack.config.cjs","dist:min":"webpack --config webpack.prod.config.cjs","dist:module":"webpack --config webpack.module.config.cjs","docs":"markserv --dir docs --port 9001","preghpages":"node ./scripts/preghpages.js","ghpages":"gh-pages -d gh-pages","lint":"standardx -v | snazzy","lint:fix":"standardx --fix","precommit":"npm run lint","prepush":"node scripts/testOnlyCheck.js","prerelease":"node scripts/release.js 1.6.0 1.7.0","start":"npm run dev","start:https":"npm run dev -- --server-type https","start:webgpu":"cross-env WEBGPU=true npm run dev -- --server-type https","test":"karma start ./tests/karma.conf.js","test:docs":"node scripts/docsLint.js","test:firefox":"npm test -- --browsers Firefox","test:chrome":"npm test -- --browsers Chrome","test:nobrowser":"NO_BROWSER=true npm test","test:node":"node ./node_modules/mocha/bin/mocha --ui tdd tests/node"},"repository":"aframevr/aframe","license":"MIT","files":["dist/*","docs/**/*","src/**/*","vendor/**/*"],"dependencies":{"buffer":"^6.0.3","debug":"^4.3.4","deep-assign":"^2.0.0","load-bmfont":"^1.2.3","super-animejs":"^3.1.0","three":"npm:super-three@0.173.5","three-bmfont-text":"dmarcos/three-bmfont-text#eed4878795be9b3e38cf6aec6b903f56acd1f695"},"devDependencies":{"@babel/core":"^7.24.0","babel-loader":"^9.1.3","babel-plugin-istanbul":"^6.1.1","chai":"^4.3.6","chai-shallow-deep-equal":"^1.4.0","chalk":"^1.1.3","cross-env":"^7.0.3","css-loader":"^7.1.2","eslint":"^8.45.0","eslint-config-semistandard":"^17.0.0","eslint-config-standard-jsx":"^11.0.0","gh-pages":"^6.3.0","git-rev":"^0.2.1","glob":"^8.0.3","husky":"^0.11.7","jsdom":"^24.0.0","jsdom-global":"^3.0.2","karma":"^6.4.0","karma-chai-shallow-deep-equal":"0.0.4","karma-chrome-launcher":"^3.1.1","karma-coverage":"^2.2.0","karma-env-preprocessor":"^0.1.1","karma-firefox-launcher":"^2.1.2","karma-mocha":"^2.0.1","karma-mocha-reporter":"^2.2.5","karma-sinon-chai":"^2.0.2","karma-webpack":"^5.0.0","markserv":"github:sukima/markserv#feature/fix-broken-websoketio-link","mocha":"^10.0.0","replace-in-file":"^8.3.0","shelljs":"^0.8.5","sinon":"<12.0.0","sinon-chai":"^3.7.0","snazzy":"^5.0.0","standardx":"^7.0.0","style-loader":"^4.0.0","too-wordy":"ngokevin/too-wordy","webpack":"5.95.0","webpack-cli":"^5.1.4","webpack-dev-server":"~5.0.4","write-good":"^1.0.8"},"link":true,"standardx":{"ignore":["build/**","dist/**","examples/**/shaders/*.js","**/vendor/**"]},"keywords":["3d","aframe","cardboard","components","oculus","three","three.js","rift","vive","vr","quest","meta","web-components","webvr","webxr"],"engines":{"node":">= 4.6.0","npm":">= 2.15.9"}}')}},ng={};function dn(_A){var O=ng[_A];if(O!==void 0)return O.exports;var d=ng[_A]={id:_A,exports:{}};return Ir[_A](d,d.exports,dn),d.exports}dn.m=Ir,dn.n=_A=>{var O=_A&&_A.__esModule?()=>_A.default:()=>_A;return dn.d(O,{a:O}),O},dn.d=(_A,O)=>{for(var d in O)dn.o(O,d)&&!dn.o(_A,d)&&Object.defineProperty(_A,d,{enumerable:!0,get:O[d]})},dn.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch{if(typeof window=="object")return window}}(),dn.o=(_A,O)=>Object.prototype.hasOwnProperty.call(_A,O),dn.r=_A=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(_A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(_A,"__esModule",{value:!0})},dn.b=document.baseURI||self.location.href,dn.nc=void 0;var Mo={};return(()=>{/*!**********************!*\
!*** ./src/index.js ***!
\**********************/dn.r(Mo),dn.d(Mo,{default:()=>j});var _A=dn("./node_modules/super-animejs/lib/anime.es.js"),O=dn("./src/lib/three.js"),d=dn("./src/core/scene/a-scene.js"),s=dn("./src/core/scene/scenes.js"),z=dn("./src/core/a-node.js"),_=dn("./src/core/a-entity.js"),T=dn("./src/core/component.js"),v=dn("./src/core/geometry.js"),D=dn("./src/extras/primitives/primitives.js"),h=dn("./src/core/shader.js"),p=dn("./src/core/system.js"),m=dn("./src/core/schema.js"),u=dn("./src/core/readyState.js");dn("./src/core/a-assets.js"),dn("./src/core/a-cubemap.js"),dn("./src/core/a-mixin.js");var l=dn("./src/utils/index.js"),R=dn("./package.json");dn("./src/components/index.js"),dn("./src/geometries/index.js"),dn("./src/shaders/index.js"),dn("./src/systems/index.js");var N=dn("./src/extras/primitives/getMeshMixin.js");dn("./src/extras/components/index.js"),dn("./src/extras/primitives/index.js");var Y=l.debug,G=Y("A-Frame:error"),x=Y("A-Frame:warn");window.document.currentScript&&window.document.currentScript.parentNode!==window.document.head&&!window.debug&&x("Put the A-Frame <script> tag in the <head> of the HTML *before* the scene to ensure everything for A-Frame is properly registered before they are used from HTML."),!window.cordova&&window.location.protocol==="file:"&&G("This HTML file is currently being served via the file:// protocol. Assets, textures, and models WILL NOT WORK due to cross-origin policy! Please use a local or hosted server: https://aframe.io/docs/1.4.0/introduction/installation.html#use-a-local-server."),l.device.isBrowserEnvironment&&(window.logs=Y,dn("./src/style/aframe.css"),dn("./src/style/rStats.css")),console.log("A-Frame Version: 1.7.0 (Date 2025-03-12, Commit #1b9650f1)"),console.log("THREE Version (https://github.com/supermedium/three.js):",O.default.REVISION),window.AFRAME_ASYNC||u.waitForDocumentReadyState();var U=globalThis.AFRAME={AComponent:T.Component,AEntity:_.AEntity,ANode:z.ANode,ANIME:_A.default,AScene:d.AScene,components:T.components,coreComponents:Object.keys(T.components),geometries:v.geometries,registerComponent:T.registerComponent,registerGeometry:v.registerGeometry,registerPrimitive:D.registerPrimitive,registerShader:h.registerShader,registerSystem:p.registerSystem,primitives:{getMeshMixin:N.default,primitives:D.primitives},scenes:s.default,schema:m,shaders:h.shaders,systems:p.systems,emitReady:u.emitReady,THREE:O.default,utils:l,version:R.version};const j=U})(),Mo=Mo.default,Mo})())}(hd)),hd.exports}var wA={};/**
* @license
* Copyright 2010-2024 Three.js Authors
* SPDX-License-Identifier: MIT
*/var Tu;function wp(){if(Tu)return wA;Tu=1;const _i="164",Ln={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},xn={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},Ir=0,ng=1,dn=2,Mo=3,_A=0,O=1,d=2,s=3,z=0,_=1,T=2,v=0,D=1,h=2,p=3,m=4,u=5,l=100,R=101,N=102,Y=103,G=104,x=200,U=201,j=202,Z=203,CA=204,QA=205,SA=206,UA=207,TA=208,pA=209,hA=210,uA=211,lA=212,NA=213,HA=214,pe=0,He=1,Oe=2,ye=3,Ye=4,Et=5,ct=6,q=7,gA=0,yA=1,ge=2,le=0,Qt=1,Ct=2,bt=3,pi=4,hi=5,un=6,sn=7,En="attached",bn="detached",go=300,Ao=301,Kn=302,_o=303,Kt=304,xA=306,vA=1e3,ie=1001,ZA=1002,jA=1003,Be=1004,aA=1004,H=1005,k=1005,DA=1006,YA=1007,ue=1007,De=1008,si=1008,Mi=1009,Si=1010,nn=1011,zi=1012,Zr=1013,kn=1014,hr=1015,Ss=1016,is=1017,cg=1018,ns=1020,Tg=35902,ps=1021,Wg=1022,os=1023,Da=1024,Kg=1025,lr=1026,Nr=1027,ya=1028,oa=1029,wa=1030,Ka=1031,XA=1033,me=33776,We=33777,ut=33778,gt=33779,Gt=35840,ai=35841,Pi=35842,xi=35843,Ut=36196,Qn=37492,mn=37496,Pn=37808,pr=37809,Ro=37810,ao=37811,Uo=37812,Yr=37813,$r=37814,On=37815,Go=37816,Ys=37817,og=37818,Ur=37819,Ng=37820,Ug=37821,Gg=36492,Hr=36494,Vg=36495,Fg=36283,ra=36284,sa=36285,ga=36286,qa=2200,Zg=2201,jg=2202,hg=2300,Xg=2301,aa=2302,lg=2400,rg=2401,Lg=2402,Rs=2500,Ia=2501,sI=0,pI=1,oC=2,Ma=3200,gI=3201,Cr=0,Sa=1,In="",ii="srgb",jr="srgb-linear",Jg="display-p3",xg="display-p3-linear",Wa="linear",eA="srgb",LA="rec709",$A="p3",re=0,Te=7680,Ke=7681,Ue=7682,ee=7683,Ie=34055,Fe=34056,xe=5386,Lt=512,Vt=513,Ft=514,Qi=515,zt=516,vn=517,Fo=518,Io=519,Lr=512,rs=513,bg=514,Pr=515,xr=516,Or=517,Gs=518,dg=519,vi=35044,fo=35048,Yg=35040,Ja=35045,ug=35049,zg=35041,fg=35046,Ca=35050,Ra=35042,Fs="100",js="300 es",ls=2e3,br=2001;class Xs{addEventListener(A,t){this._listeners===void 0&&(this._listeners={});const n=this._listeners;n[A]===void 0&&(n[A]=[]),n[A].indexOf(t)===-1&&n[A].push(t)}hasEventListener(A,t){if(this._listeners===void 0)return!1;const n=this._listeners;return n[A]!==void 0&&n[A].indexOf(t)!==-1}removeEventListener(A,t){if(this._listeners===void 0)return;const r=this._listeners[A];if(r!==void 0){const a=r.indexOf(t);a!==-1&&r.splice(a,1)}}dispatchEvent(A){if(this._listeners===void 0)return;const n=this._listeners[A.type];if(n!==void 0){A.target=this;const r=n.slice(0);for(let a=0,B=r.length;a<B;a++)r[a].call(this,A);A.target=null}}}const vs=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let mI=1234567;const sg=Math.PI/180,zs=180/Math.PI;function Yo(){const I=Math.random()*4294967295|0,A=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(vs[I&255]+vs[I>>8&255]+vs[I>>16&255]+vs[I>>24&255]+"-"+vs[A&255]+vs[A>>8&255]+"-"+vs[A>>16&15|64]+vs[A>>24&255]+"-"+vs[t&63|128]+vs[t>>8&255]+"-"+vs[t>>16&255]+vs[t>>24&255]+vs[n&255]+vs[n>>8&255]+vs[n>>16&255]+vs[n>>24&255]).toLowerCase()}function Co(I,A,t){return Math.max(A,Math.min(t,I))}function ss(I,A){return(I%A+A)%A}function Ns(I,A,t,n,r){return n+(I-A)*(r-n)/(t-A)}function DI(I,A,t){return I!==A?(t-I)/(A-I):0}function qn(I,A,t){return(1-t)*I+t*A}function Ho(I,A,t,n){return qn(I,A,1-Math.exp(-t*n))}function yI(I,A=1){return A-Math.abs(ss(I,A*2)-A)}function $g(I,A,t){return I<=A?0:I>=t?1:(I=(I-A)/(t-A),I*I*(3-2*I))}function Ga(I,A,t){return I<=A?0:I>=t?1:(I=(I-A)/(t-A),I*I*I*(I*(I*6-15)+10))}function gg(I,A){return I+Math.floor(Math.random()*(A-I+1))}function no(I,A){return I+Math.random()*(A-I)}function aI(I){return I*(.5-Math.random())}function wI(I){I!==void 0&&(mI=I);let A=mI+=1831565813;return A=Math.imul(A^A>>>15,A|1),A^=A+Math.imul(A^A>>>7,A|61),((A^A>>>14)>>>0)/4294967296}function rC(I){return I*sg}function Lo(I){return I*zs}function Aa(I){return(I&I-1)===0&&I!==0}function II(I){return Math.pow(2,Math.ceil(Math.log(I)/Math.LN2))}function Fa(I){return Math.pow(2,Math.floor(Math.log(I)/Math.LN2))}function OI(I,A,t,n,r){const a=Math.cos,B=Math.sin,Q=a(t/2),y=B(t/2),M=a((A+n)/2),K=B((A+n)/2),W=a((A-n)/2),V=B((A-n)/2),X=a((n-A)/2),iA=B((n-A)/2);switch(r){case"XYX":I.set(Q*K,y*W,y*V,Q*M);break;case"YZY":I.set(y*V,Q*K,y*W,Q*M);break;case"ZXZ":I.set(y*W,y*V,Q*K,Q*M);break;case"XZX":I.set(Q*K,y*iA,y*X,Q*M);break;case"YXY":I.set(y*X,Q*K,y*iA,Q*M);break;case"ZYZ":I.set(y*iA,y*X,Q*K,Q*M);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}}function Dn(I,A){switch(A.constructor){case Float32Array:return I;case Uint32Array:return I/4294967295;case Uint16Array:return I/65535;case Uint8Array:return I/255;case Int32Array:return Math.max(I/2147483647,-1);case Int16Array:return Math.max(I/32767,-1);case Int8Array:return Math.max(I/127,-1);default:throw new Error("Invalid component type.")}}function fA(I,A){switch(A.constructor){case Float32Array:return I;case Uint32Array:return Math.round(I*4294967295);case Uint16Array:return Math.round(I*65535);case Uint8Array:return Math.round(I*255);case Int32Array:return Math.round(I*2147483647);case Int16Array:return Math.round(I*32767);case Int8Array:return Math.round(I*127);default:throw new Error("Invalid component type.")}}const Bs={DEG2RAD:sg,RAD2DEG:zs,generateUUID:Yo,clamp:Co,euclideanModulo:ss,mapLinear:Ns,inverseLerp:DI,lerp:qn,damp:Ho,pingpong:yI,smoothstep:$g,smootherstep:Ga,randInt:gg,randFloat:no,randFloatSpread:aI,seededRandom:wI,degToRad:rC,radToDeg:Lo,isPowerOfTwo:Aa,ceilPowerOfTwo:II,floorPowerOfTwo:Fa,setQuaternionFromProperEuler:OI,normalize:fA,denormalize:Dn};class Ot{constructor(A=0,t=0){Ot.prototype.isVector2=!0,this.x=A,this.y=t}get width(){return this.x}set width(A){this.x=A}get height(){return this.y}set height(A){this.y=A}set(A,t){return this.x=A,this.y=t,this}setScalar(A){return this.x=A,this.y=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setComponent(A,t){switch(A){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y)}copy(A){return this.x=A.x,this.y=A.y,this}add(A){return this.x+=A.x,this.y+=A.y,this}addScalar(A){return this.x+=A,this.y+=A,this}addVectors(A,t){return this.x=A.x+t.x,this.y=A.y+t.y,this}addScaledVector(A,t){return this.x+=A.x*t,this.y+=A.y*t,this}sub(A){return this.x-=A.x,this.y-=A.y,this}subScalar(A){return this.x-=A,this.y-=A,this}subVectors(A,t){return this.x=A.x-t.x,this.y=A.y-t.y,this}multiply(A){return this.x*=A.x,this.y*=A.y,this}multiplyScalar(A){return this.x*=A,this.y*=A,this}divide(A){return this.x/=A.x,this.y/=A.y,this}divideScalar(A){return this.multiplyScalar(1/A)}applyMatrix3(A){const t=this.x,n=this.y,r=A.elements;return this.x=r[0]*t+r[3]*n+r[6],this.y=r[1]*t+r[4]*n+r[7],this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this}clamp(A,t){return this.x=Math.max(A.x,Math.min(t.x,this.x)),this.y=Math.max(A.y,Math.min(t.y,this.y)),this}clampScalar(A,t){return this.x=Math.max(A,Math.min(t,this.x)),this.y=Math.max(A,Math.min(t,this.y)),this}clampLength(A,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(A,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(A){return this.x*A.x+this.y*A.y}cross(A){return this.x*A.y-this.y*A.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(A){const t=Math.sqrt(this.lengthSq()*A.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(A)/t;return Math.acos(Co(n,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const t=this.x-A.x,n=this.y-A.y;return t*t+n*n}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,t){return this.x+=(A.x-this.x)*t,this.y+=(A.y-this.y)*t,this}lerpVectors(A,t,n){return this.x=A.x+(t.x-A.x)*n,this.y=A.y+(t.y-A.y)*n,this}equals(A){return A.x===this.x&&A.y===this.y}fromArray(A,t=0){return this.x=A[t],this.y=A[t+1],this}toArray(A=[],t=0){return A[t]=this.x,A[t+1]=this.y,A}fromBufferAttribute(A,t){return this.x=A.getX(t),this.y=A.getY(t),this}rotateAround(A,t){const n=Math.cos(t),r=Math.sin(t),a=this.x-A.x,B=this.y-A.y;return this.x=a*n-B*r+A.x,this.y=a*r+B*n+A.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Bo{constructor(A,t,n,r,a,B,Q,y,M){Bo.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],A!==void 0&&this.set(A,t,n,r,a,B,Q,y,M)}set(A,t,n,r,a,B,Q,y,M){const K=this.elements;return K[0]=A,K[1]=r,K[2]=Q,K[3]=t,K[4]=a,K[5]=y,K[6]=n,K[7]=B,K[8]=M,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(A){const t=this.elements,n=A.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(A,t,n){return A.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(A){const t=A.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,t){const n=A.elements,r=t.elements,a=this.elements,B=n[0],Q=n[3],y=n[6],M=n[1],K=n[4],W=n[7],V=n[2],X=n[5],iA=n[8],BA=r[0],nA=r[3],tA=r[6],RA=r[1],mA=r[4],kA=r[7],_e=r[2],ae=r[5],fe=r[8];return a[0]=B*BA+Q*RA+y*_e,a[3]=B*nA+Q*mA+y*ae,a[6]=B*tA+Q*kA+y*fe,a[1]=M*BA+K*RA+W*_e,a[4]=M*nA+K*mA+W*ae,a[7]=M*tA+K*kA+W*fe,a[2]=V*BA+X*RA+iA*_e,a[5]=V*nA+X*mA+iA*ae,a[8]=V*tA+X*kA+iA*fe,this}multiplyScalar(A){const t=this.elements;return t[0]*=A,t[3]*=A,t[6]*=A,t[1]*=A,t[4]*=A,t[7]*=A,t[2]*=A,t[5]*=A,t[8]*=A,this}determinant(){const A=this.elements,t=A[0],n=A[1],r=A[2],a=A[3],B=A[4],Q=A[5],y=A[6],M=A[7],K=A[8];return t*B*K-t*Q*M-n*a*K+n*Q*y+r*a*M-r*B*y}invert(){const A=this.elements,t=A[0],n=A[1],r=A[2],a=A[3],B=A[4],Q=A[5],y=A[6],M=A[7],K=A[8],W=K*B-Q*M,V=Q*y-K*a,X=M*a-B*y,iA=t*W+n*V+r*X;if(iA===0)return this.set(0,0,0,0,0,0,0,0,0);const BA=1/iA;return A[0]=W*BA,A[1]=(r*M-K*n)*BA,A[2]=(Q*n-r*B)*BA,A[3]=V*BA,A[4]=(K*t-r*y)*BA,A[5]=(r*a-Q*t)*BA,A[6]=X*BA,A[7]=(n*y-M*t)*BA,A[8]=(B*t-n*a)*BA,this}transpose(){let A;const t=this.elements;return A=t[1],t[1]=t[3],t[3]=A,A=t[2],t[2]=t[6],t[6]=A,A=t[5],t[5]=t[7],t[7]=A,this}getNormalMatrix(A){return this.setFromMatrix4(A).invert().transpose()}transposeIntoArray(A){const t=this.elements;return A[0]=t[0],A[1]=t[3],A[2]=t[6],A[3]=t[1],A[4]=t[4],A[5]=t[7],A[6]=t[2],A[7]=t[5],A[8]=t[8],this}setUvTransform(A,t,n,r,a,B,Q){const y=Math.cos(a),M=Math.sin(a);return this.set(n*y,n*M,-n*(y*B+M*Q)+B+A,-r*M,r*y,-r*(-M*B+y*Q)+Q+t,0,0,1),this}scale(A,t){return this.premultiply(va.makeScale(A,t)),this}rotate(A){return this.premultiply(va.makeRotation(-A)),this}translate(A,t){return this.premultiply(va.makeTranslation(A,t)),this}makeTranslation(A,t){return A.isVector2?this.set(1,0,A.x,0,1,A.y,0,0,1):this.set(1,0,A,0,1,t,0,0,1),this}makeRotation(A){const t=Math.cos(A),n=Math.sin(A);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(A,t){return this.set(A,0,0,0,t,0,0,0,1),this}equals(A){const t=this.elements,n=A.elements;for(let r=0;r<9;r++)if(t[r]!==n[r])return!1;return!0}fromArray(A,t=0){for(let n=0;n<9;n++)this.elements[n]=A[n+t];return this}toArray(A=[],t=0){const n=this.elements;return A[t]=n[0],A[t+1]=n[1],A[t+2]=n[2],A[t+3]=n[3],A[t+4]=n[4],A[t+5]=n[5],A[t+6]=n[6],A[t+7]=n[7],A[t+8]=n[8],A}clone(){return new this.constructor().fromArray(this.elements)}}const va=new Bo;function Na(I){for(let A=I.length-1;A>=0;--A)if(I[A]>=65535)return!0;return!1}const Ua={Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array};function ea(I,A){return new Ua[I](A)}function La(I){return document.createElementNS("http://www.w3.org/1999/xhtml",I)}function ms(){const I=La("canvas");return I.style.display="block",I}const eo={};function MI(I){I in eo||(eo[I]=!0,console.warn(I))}const ni=new Bo().set(.8224621,.177538,0,.0331941,.9668058,0,.0170827,.0723974,.9105199),ds=new Bo().set(1.2249401,-.2249404,0,-.0420569,1.0420571,0,-.0196376,-.0786361,1.0982735),Ba={[jr]:{transfer:Wa,primaries:LA,toReference:I=>I,fromReference:I=>I},[ii]:{transfer:eA,primaries:LA,toReference:I=>I.convertSRGBToLinear(),fromReference:I=>I.convertLinearToSRGB()},[xg]:{transfer:Wa,primaries:$A,toReference:I=>I.applyMatrix3(ds),fromReference:I=>I.applyMatrix3(ni)},[Jg]:{transfer:eA,primaries:$A,toReference:I=>I.convertSRGBToLinear().applyMatrix3(ds),fromReference:I=>I.applyMatrix3(ni).convertLinearToSRGB()}},SI=new Set([jr,xg]),oo={enabled:!0,_workingColorSpace:jr,get workingColorSpace(){return this._workingColorSpace},set workingColorSpace(I){if(!SI.has(I))throw new Error(`Unsupported working color space, "${I}".`);this._workingColorSpace=I},convert:function(I,A,t){if(this.enabled===!1||A===t||!A||!t)return I;const n=Ba[A].toReference,r=Ba[t].fromReference;return r(n(I))},fromWorkingColorSpace:function(I,A){return this.convert(I,this._workingColorSpace,A)},toWorkingColorSpace:function(I,A){return this.convert(I,A,this._workingColorSpace)},getPrimaries:function(I){return Ba[I].primaries},getTransfer:function(I){return I===In?Wa:Ba[I].transfer}};function Hs(I){return I<.04045?I*.0773993808:Math.pow(I*.9478672986+.0521327014,2.4)}function vo(I){return I<.0031308?I*12.92:1.055*Math.pow(I,.41666)-.055}let ag;class Va{static getDataURL(A){if(/^data:/i.test(A.src)||typeof HTMLCanvasElement>"u")return A.src;let t;if(A instanceof HTMLCanvasElement)t=A;else{ag===void 0&&(ag=La("canvas")),ag.width=A.width,ag.height=A.height;const n=ag.getContext("2d");A instanceof ImageData?n.putImageData(A,0,0):n.drawImage(A,0,0,A.width,A.height),t=ag}return t.width>2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",A),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(A){if(typeof HTMLImageElement<"u"&&A instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&A instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&A instanceof ImageBitmap){const t=La("canvas");t.width=A.width,t.height=A.height;const n=t.getContext("2d");n.drawImage(A,0,0,A.width,A.height);const r=n.getImageData(0,0,A.width,A.height),a=r.data;for(let B=0;B<a.length;B++)a[B]=Hs(a[B]/255)*255;return n.putImageData(r,0,0),t}else if(A.data){const t=A.data.slice(0);for(let n=0;n<t.length;n++)t instanceof Uint8Array||t instanceof Uint8ClampedArray?t[n]=Math.floor(Hs(t[n]/255)*255):t[n]=Hs(t[n]);return{data:t,width:A.width,height:A.height}}else return console.warn("THREE.ImageUtils.sRGBToLinear(): Unsupported image type. No color space conversion applied."),A}}let RI=0;class Ea{constructor(A=null){this.isSource=!0,Object.defineProperty(this,"id",{value:RI++}),this.uuid=Yo(),this.data=A,this.dataReady=!0,this.version=0}set needsUpdate(A){A===!0&&this.version++}toJSON(A){const t=A===void 0||typeof A=="string";if(!t&&A.images[this.uuid]!==void 0)return A.images[this.uuid];const n={uuid:this.uuid,url:""},r=this.data;if(r!==null){let a;if(Array.isArray(r)){a=[];for(let B=0,Q=r.length;B<Q;B++)r[B].isDataTexture?a.push(CI(r[B].image)):a.push(CI(r[B]))}else a=CI(r);n.url=a}return t||(A.images[this.uuid]=n),n}}function CI(I){return typeof HTMLImageElement<"u"&&I instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&I instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&I instanceof ImageBitmap?Va.getDataURL(I):I.data?{data:Array.from(I.data),width:I.width,height:I.height,type:I.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let qI=0;class Sr extends Xs{constructor(A=Sr.DEFAULT_IMAGE,t=Sr.DEFAULT_MAPPING,n=ie,r=ie,a=DA,B=De,Q=os,y=Mi,M=Sr.DEFAULT_ANISOTROPY,K=In){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:qI++}),this.uuid=Yo(),this.name="",this.source=new Ea(A),this.mipmaps=[],this.mapping=t,this.channel=0,this.wrapS=n,this.wrapT=r,this.magFilter=a,this.minFilter=B,this.anisotropy=M,this.format=Q,this.internalFormat=null,this.type=y,this.offset=new Ot(0,0),this.repeat=new Ot(1,1),this.center=new Ot(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Bo,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=K,this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1,this.pmremVersion=0}get image(){return this.source.data}set image(A=null){this.source.data=A}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return new this.constructor().copy(this)}copy(A){return this.name=A.name,this.source=A.source,this.mipmaps=A.mipmaps.slice(0),this.mapping=A.mapping,this.channel=A.channel,this.wrapS=A.wrapS,this.wrapT=A.wrapT,this.magFilter=A.magFilter,this.minFilter=A.minFilter,this.anisotropy=A.anisotropy,this.format=A.format,this.internalFormat=A.internalFormat,this.type=A.type,this.offset.copy(A.offset),this.repeat.copy(A.repeat),this.center.copy(A.center),this.rotation=A.rotation,this.matrixAutoUpdate=A.matrixAutoUpdate,this.matrix.copy(A.matrix),this.generateMipmaps=A.generateMipmaps,this.premultiplyAlpha=A.premultiplyAlpha,this.flipY=A.flipY,this.unpackAlignment=A.unpackAlignment,this.colorSpace=A.colorSpace,this.userData=JSON.parse(JSON.stringify(A.userData)),this.needsUpdate=!0,this}toJSON(A){const t=A===void 0||typeof A=="string";if(!t&&A.textures[this.uuid]!==void 0)return A.textures[this.uuid];const n={metadata:{version:4.6,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(A).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),t||(A.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(A){if(this.mapping!==go)return A;if(A.applyMatrix3(this.matrix),A.x<0||A.x>1)switch(this.wrapS){case vA:A.x=A.x-Math.floor(A.x);break;case ie:A.x=A.x<0?0:1;break;case ZA:Math.abs(Math.floor(A.x)%2)===1?A.x=Math.ceil(A.x)-A.x:A.x=A.x-Math.floor(A.x);break}if(A.y<0||A.y>1)switch(this.wrapT){case vA:A.y=A.y-Math.floor(A.y);break;case ie:A.y=A.y<0?0:1;break;case ZA:Math.abs(Math.floor(A.y)%2)===1?A.y=Math.ceil(A.y)-A.y:A.y=A.y-Math.floor(A.y);break}return this.flipY&&(A.y=1-A.y),A}set needsUpdate(A){A===!0&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(A){A===!0&&this.pmremVersion++}}Sr.DEFAULT_IMAGE=null,Sr.DEFAULT_MAPPING=go,Sr.DEFAULT_ANISOTROPY=1;class xo{constructor(A=0,t=0,n=0,r=1){xo.prototype.isVector4=!0,this.x=A,this.y=t,this.z=n,this.w=r}get width(){return this.z}set width(A){this.z=A}get height(){return this.w}set height(A){this.w=A}set(A,t,n,r){return this.x=A,this.y=t,this.z=n,this.w=r,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this.w=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setW(A){return this.w=A,this}setComponent(A,t){switch(A){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this.w=A.w!==void 0?A.w:1,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this.w+=A.w,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this.w+=A,this}addVectors(A,t){return this.x=A.x+t.x,this.y=A.y+t.y,this.z=A.z+t.z,this.w=A.w+t.w,this}addScaledVector(A,t){return this.x+=A.x*t,this.y+=A.y*t,this.z+=A.z*t,this.w+=A.w*t,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this.w-=A.w,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this.w-=A,this}subVectors(A,t){return this.x=A.x-t.x,this.y=A.y-t.y,this.z=A.z-t.z,this.w=A.w-t.w,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this.w*=A.w,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this.w*=A,this}applyMatrix4(A){const t=this.x,n=this.y,r=this.z,a=this.w,B=A.elements;return this.x=B[0]*t+B[4]*n+B[8]*r+B[12]*a,this.y=B[1]*t+B[5]*n+B[9]*r+B[13]*a,this.z=B[2]*t+B[6]*n+B[10]*r+B[14]*a,this.w=B[3]*t+B[7]*n+B[11]*r+B[15]*a,this}divideScalar(A){return this.multiplyScalar(1/A)}setAxisAngleFromQuaternion(A){this.w=2*Math.acos(A.w);const t=Math.sqrt(1-A.w*A.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=A.x/t,this.y=A.y/t,this.z=A.z/t),this}setAxisAngleFromRotationMatrix(A){let t,n,r,a;const y=A.elements,M=y[0],K=y[4],W=y[8],V=y[1],X=y[5],iA=y[9],BA=y[2],nA=y[6],tA=y[10];if(Math.abs(K-V)<.01&&Math.abs(W-BA)<.01&&Math.abs(iA-nA)<.01){if(Math.abs(K+V)<.1&&Math.abs(W+BA)<.1&&Math.abs(iA+nA)<.1&&Math.abs(M+X+tA-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const mA=(M+1)/2,kA=(X+1)/2,_e=(tA+1)/2,ae=(K+V)/4,fe=(W+BA)/4,Je=(iA+nA)/4;return mA>kA&&mA>_e?mA<.01?(n=0,r=.707106781,a=.707106781):(n=Math.sqrt(mA),r=ae/n,a=fe/n):kA>_e?kA<.01?(n=.707106781,r=0,a=.707106781):(r=Math.sqrt(kA),n=ae/r,a=Je/r):_e<.01?(n=.707106781,r=.707106781,a=0):(a=Math.sqrt(_e),n=fe/a,r=Je/a),this.set(n,r,a,t),this}let RA=Math.sqrt((nA-iA)*(nA-iA)+(W-BA)*(W-BA)+(V-K)*(V-K));return Math.abs(RA)<.001&&(RA=1),this.x=(nA-iA)/RA,this.y=(W-BA)/RA,this.z=(V-K)/RA,this.w=Math.acos((M+X+tA-1)/2),this}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this.w=Math.min(this.w,A.w),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this.w=Math.max(this.w,A.w),this}clamp(A,t){return this.x=Math.max(A.x,Math.min(t.x,this.x)),this.y=Math.max(A.y,Math.min(t.y,this.y)),this.z=Math.max(A.z,Math.min(t.z,this.z)),this.w=Math.max(A.w,Math.min(t.w,this.w)),this}clampScalar(A,t){return this.x=Math.max(A,Math.min(t,this.x)),this.y=Math.max(A,Math.min(t,this.y)),this.z=Math.max(A,Math.min(t,this.z)),this.w=Math.max(A,Math.min(t,this.w)),this}clampLength(A,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(A,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z+this.w*A.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,t){return this.x+=(A.x-this.x)*t,this.y+=(A.y-this.y)*t,this.z+=(A.z-this.z)*t,this.w+=(A.w-this.w)*t,this}lerpVectors(A,t,n){return this.x=A.x+(t.x-A.x)*n,this.y=A.y+(t.y-A.y)*n,this.z=A.z+(t.z-A.z)*n,this.w=A.w+(t.w-A.w)*n,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z&&A.w===this.w}fromArray(A,t=0){return this.x=A[t],this.y=A[t+1],this.z=A[t+2],this.w=A[t+3],this}toArray(A=[],t=0){return A[t]=this.x,A[t+1]=this.y,A[t+2]=this.z,A[t+3]=this.w,A}fromBufferAttribute(A,t){return this.x=A.getX(t),this.y=A.getY(t),this.z=A.getZ(t),this.w=A.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class BI extends Xs{constructor(A=1,t=1,n={}){super(),this.isRenderTarget=!0,this.width=A,this.height=t,this.depth=1,this.scissor=new xo(0,0,A,t),this.scissorTest=!1,this.viewport=new xo(0,0,A,t);const r={width:A,height:t,depth:1};n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:DA,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},n);const a=new Sr(r,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace);a.flipY=!1,a.generateMipmaps=n.generateMipmaps,a.internalFormat=n.internalFormat,this.textures=[];const B=n.count;for(let Q=0;Q<B;Q++)this.textures[Q]=a.clone(),this.textures[Q].isRenderTargetTexture=!0;this.depthBuffer=n.depthBuffer,this.stencilBuffer=n.stencilBuffer,this.resolveDepthBuffer=n.resolveDepthBuffer,this.resolveStencilBuffer=n.resolveStencilBuffer,this.depthTexture=n.depthTexture,this.samples=n.samples}get texture(){return this.textures[0]}set texture(A){this.textures[0]=A}setSize(A,t,n=1){if(this.width!==A||this.height!==t||this.depth!==n){this.width=A,this.height=t,this.depth=n;for(let r=0,a=this.textures.length;r<a;r++)this.textures[r].image.width=A,this.textures[r].image.height=t,this.textures[r].image.depth=n;this.dispose()}this.viewport.set(0,0,A,t),this.scissor.set(0,0,A,t)}clone(){return new this.constructor().copy(this)}copy(A){this.width=A.width,this.height=A.height,this.depth=A.depth,this.scissor.copy(A.scissor),this.scissorTest=A.scissorTest,this.viewport.copy(A.viewport),this.textures.length=0;for(let n=0,r=A.textures.length;n<r;n++)this.textures[n]=A.textures[n].clone(),this.textures[n].isRenderTargetTexture=!0;const t=Object.assign({},A.texture.image);return this.texture.source=new Ea(t),this.depthBuffer=A.depthBuffer,this.stencilBuffer=A.stencilBuffer,this.resolveDepthBuffer=A.resolveDepthBuffer,this.resolveStencilBuffer=A.resolveStencilBuffer,A.depthTexture!==null&&(this.depthTexture=A.depthTexture.clone()),this.samples=A.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}}class zo extends BI{constructor(A=1,t=1,n={}){super(A,t,n),this.isWebGLRenderTarget=!0}}class Ds extends Sr{constructor(A=null,t=1,n=1,r=1){super(null),this.isDataArrayTexture=!0,this.image={data:A,width:t,height:n,depth:r},this.magFilter=jA,this.minFilter=jA,this.wrapR=ie,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class pg extends zo{constructor(A=1,t=1,n=1,r={}){super(A,t,r),this.isWebGLArrayRenderTarget=!0,this.depth=n,this.texture=new Ds(null,A,t,n),this.texture.isRenderTargetTexture=!0}}class mg extends Sr{constructor(A=null,t=1,n=1,r=1){super(null),this.isData3DTexture=!0,this.image={data:A,width:t,height:n,depth:r},this.magFilter=jA,this.minFilter=jA,this.wrapR=ie,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}class kr extends zo{constructor(A=1,t=1,n=1,r={}){super(A,t,r),this.isWebGL3DRenderTarget=!0,this.depth=n,this.texture=new mg(null,A,t,n),this.texture.isRenderTargetTexture=!0}}class Us{constructor(A=0,t=0,n=0,r=1){this.isQuaternion=!0,this._x=A,this._y=t,this._z=n,this._w=r}static slerpFlat(A,t,n,r,a,B,Q){let y=n[r+0],M=n[r+1],K=n[r+2],W=n[r+3];const V=a[B+0],X=a[B+1],iA=a[B+2],BA=a[B+3];if(Q===0){A[t+0]=y,A[t+1]=M,A[t+2]=K,A[t+3]=W;return}if(Q===1){A[t+0]=V,A[t+1]=X,A[t+2]=iA,A[t+3]=BA;return}if(W!==BA||y!==V||M!==X||K!==iA){let nA=1-Q;const tA=y*V+M*X+K*iA+W*BA,RA=tA>=0?1:-1,mA=1-tA*tA;if(mA>Number.EPSILON){const _e=Math.sqrt(mA),ae=Math.atan2(_e,tA*RA);nA=Math.sin(nA*ae)/_e,Q=Math.sin(Q*ae)/_e}const kA=Q*RA;if(y=y*nA+V*kA,M=M*nA+X*kA,K=K*nA+iA*kA,W=W*nA+BA*kA,nA===1-Q){const _e=1/Math.sqrt(y*y+M*M+K*K+W*W);y*=_e,M*=_e,K*=_e,W*=_e}}A[t]=y,A[t+1]=M,A[t+2]=K,A[t+3]=W}static multiplyQuaternionsFlat(A,t,n,r,a,B){const Q=n[r],y=n[r+1],M=n[r+2],K=n[r+3],W=a[B],V=a[B+1],X=a[B+2],iA=a[B+3];return A[t]=Q*iA+K*W+y*X-M*V,A[t+1]=y*iA+K*V+M*W-Q*X,A[t+2]=M*iA+K*X+Q*V-y*W,A[t+3]=K*iA-Q*W-y*V-M*X,A}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get w(){return this._w}set w(A){this._w=A,this._onChangeCallback()}set(A,t,n,r){return this._x=A,this._y=t,this._z=n,this._w=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(A){return this._x=A.x,this._y=A.y,this._z=A.z,this._w=A.w,this._onChangeCallback(),this}setFromEuler(A,t=!0){const n=A._x,r=A._y,a=A._z,B=A._order,Q=Math.cos,y=Math.sin,M=Q(n/2),K=Q(r/2),W=Q(a/2),V=y(n/2),X=y(r/2),iA=y(a/2);switch(B){case"XYZ":this._x=V*K*W+M*X*iA,this._y=M*X*W-V*K*iA,this._z=M*K*iA+V*X*W,this._w=M*K*W-V*X*iA;break;case"YXZ":this._x=V*K*W+M*X*iA,this._y=M*X*W-V*K*iA,this._z=M*K*iA-V*X*W,this._w=M*K*W+V*X*iA;break;case"ZXY":this._x=V*K*W-M*X*iA,this._y=M*X*W+V*K*iA,this._z=M*K*iA+V*X*W,this._w=M*K*W-V*X*iA;break;case"ZYX":this._x=V*K*W-M*X*iA,this._y=M*X*W+V*K*iA,this._z=M*K*iA-V*X*W,this._w=M*K*W+V*X*iA;break;case"YZX":this._x=V*K*W+M*X*iA,this._y=M*X*W+V*K*iA,this._z=M*K*iA-V*X*W,this._w=M*K*W-V*X*iA;break;case"XZY":this._x=V*K*W-M*X*iA,this._y=M*X*W-V*K*iA,this._z=M*K*iA+V*X*W,this._w=M*K*W+V*X*iA;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+B)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(A,t){const n=t/2,r=Math.sin(n);return this._x=A.x*r,this._y=A.y*r,this._z=A.z*r,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(A){const t=A.elements,n=t[0],r=t[4],a=t[8],B=t[1],Q=t[5],y=t[9],M=t[2],K=t[6],W=t[10],V=n+Q+W;if(V>0){const X=.5/Math.sqrt(V+1);this._w=.25/X,this._x=(K-y)*X,this._y=(a-M)*X,this._z=(B-r)*X}else if(n>Q&&n>W){const X=2*Math.sqrt(1+n-Q-W);this._w=(K-y)/X,this._x=.25*X,this._y=(r+B)/X,this._z=(a+M)/X}else if(Q>W){const X=2*Math.sqrt(1+Q-n-W);this._w=(a-M)/X,this._x=(r+B)/X,this._y=.25*X,this._z=(y+K)/X}else{const X=2*Math.sqrt(1+W-n-Q);this._w=(B-r)/X,this._x=(a+M)/X,this._y=(y+K)/X,this._z=.25*X}return this._onChangeCallback(),this}setFromUnitVectors(A,t){let n=A.dot(t)+1;return n<Number.EPSILON?(n=0,Math.abs(A.x)>Math.abs(A.z)?(this._x=-A.y,this._y=A.x,this._z=0,this._w=n):(this._x=0,this._y=-A.z,this._z=A.y,this._w=n)):(this._x=A.y*t.z-A.z*t.y,this._y=A.z*t.x-A.x*t.z,this._z=A.x*t.y-A.y*t.x,this._w=n),this.normalize()}angleTo(A){return 2*Math.acos(Math.abs(Co(this.dot(A),-1,1)))}rotateTowards(A,t){const n=this.angleTo(A);if(n===0)return this;const r=Math.min(1,t/n);return this.slerp(A,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(A){return this._x*A._x+this._y*A._y+this._z*A._z+this._w*A._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let A=this.length();return A===0?(this._x=0,this._y=0,this._z=0,this._w=1):(A=1/A,this._x=this._x*A,this._y=this._y*A,this._z=this._z*A,this._w=this._w*A),this._onChangeCallback(),this}multiply(A){return this.multiplyQuaternions(this,A)}premultiply(A){return this.multiplyQuaternions(A,this)}multiplyQuaternions(A,t){const n=A._x,r=A._y,a=A._z,B=A._w,Q=t._x,y=t._y,M=t._z,K=t._w;return this._x=n*K+B*Q+r*M-a*y,this._y=r*K+B*y+a*Q-n*M,this._z=a*K+B*M+n*y-r*Q,this._w=B*K-n*Q-r*y-a*M,this._onChangeCallback(),this}slerp(A,t){if(t===0)return this;if(t===1)return this.copy(A);const n=this._x,r=this._y,a=this._z,B=this._w;let Q=B*A._w+n*A._x+r*A._y+a*A._z;if(Q<0?(this._w=-A._w,this._x=-A._x,this._y=-A._y,this._z=-A._z,Q=-Q):this.copy(A),Q>=1)return this._w=B,this._x=n,this._y=r,this._z=a,this;const y=1-Q*Q;if(y<=Number.EPSILON){const X=1-t;return this._w=X*B+t*this._w,this._x=X*n+t*this._x,this._y=X*r+t*this._y,this._z=X*a+t*this._z,this.normalize(),this}const M=Math.sqrt(y),K=Math.atan2(M,Q),W=Math.sin((1-t)*K)/M,V=Math.sin(t*K)/M;return this._w=B*W+this._w*V,this._x=n*W+this._x*V,this._y=r*W+this._y*V,this._z=a*W+this._z*V,this._onChangeCallback(),this}slerpQuaternions(A,t,n){return this.copy(A).slerp(t,n)}random(){const A=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),r=Math.sqrt(1-n),a=Math.sqrt(n);return this.set(r*Math.sin(A),r*Math.cos(A),a*Math.sin(t),a*Math.cos(t))}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._w===this._w}fromArray(A,t=0){return this._x=A[t],this._y=A[t+1],this._z=A[t+2],this._w=A[t+3],this._onChangeCallback(),this}toArray(A=[],t=0){return A[t]=this._x,A[t+1]=this._y,A[t+2]=this._z,A[t+3]=this._w,A}fromBufferAttribute(A,t){return this._x=A.getX(t),this._y=A.getY(t),this._z=A.getZ(t),this._w=A.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class Ee{constructor(A=0,t=0,n=0){Ee.prototype.isVector3=!0,this.x=A,this.y=t,this.z=n}set(A,t,n){return n===void 0&&(n=this.z),this.x=A,this.y=t,this.z=n,this}setScalar(A){return this.x=A,this.y=A,this.z=A,this}setX(A){return this.x=A,this}setY(A){return this.y=A,this}setZ(A){return this.z=A,this}setComponent(A,t){switch(A){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+A)}return this}getComponent(A){switch(A){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+A)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(A){return this.x=A.x,this.y=A.y,this.z=A.z,this}add(A){return this.x+=A.x,this.y+=A.y,this.z+=A.z,this}addScalar(A){return this.x+=A,this.y+=A,this.z+=A,this}addVectors(A,t){return this.x=A.x+t.x,this.y=A.y+t.y,this.z=A.z+t.z,this}addScaledVector(A,t){return this.x+=A.x*t,this.y+=A.y*t,this.z+=A.z*t,this}sub(A){return this.x-=A.x,this.y-=A.y,this.z-=A.z,this}subScalar(A){return this.x-=A,this.y-=A,this.z-=A,this}subVectors(A,t){return this.x=A.x-t.x,this.y=A.y-t.y,this.z=A.z-t.z,this}multiply(A){return this.x*=A.x,this.y*=A.y,this.z*=A.z,this}multiplyScalar(A){return this.x*=A,this.y*=A,this.z*=A,this}multiplyVectors(A,t){return this.x=A.x*t.x,this.y=A.y*t.y,this.z=A.z*t.z,this}applyEuler(A){return this.applyQuaternion(Za.setFromEuler(A))}applyAxisAngle(A,t){return this.applyQuaternion(Za.setFromAxisAngle(A,t))}applyMatrix3(A){const t=this.x,n=this.y,r=this.z,a=A.elements;return this.x=a[0]*t+a[3]*n+a[6]*r,this.y=a[1]*t+a[4]*n+a[7]*r,this.z=a[2]*t+a[5]*n+a[8]*r,this}applyNormalMatrix(A){return this.applyMatrix3(A).normalize()}applyMatrix4(A){const t=this.x,n=this.y,r=this.z,a=A.elements,B=1/(a[3]*t+a[7]*n+a[11]*r+a[15]);return this.x=(a[0]*t+a[4]*n+a[8]*r+a[12])*B,this.y=(a[1]*t+a[5]*n+a[9]*r+a[13])*B,this.z=(a[2]*t+a[6]*n+a[10]*r+a[14])*B,this}applyQuaternion(A){const t=this.x,n=this.y,r=this.z,a=A.x,B=A.y,Q=A.z,y=A.w,M=2*(B*r-Q*n),K=2*(Q*t-a*r),W=2*(a*n-B*t);return this.x=t+y*M+B*W-Q*K,this.y=n+y*K+Q*M-a*W,this.z=r+y*W+a*K-B*M,this}project(A){return this.applyMatrix4(A.matrixWorldInverse).applyMatrix4(A.projectionMatrix)}unproject(A){return this.applyMatrix4(A.projectionMatrixInverse).applyMatrix4(A.matrixWorld)}transformDirection(A){const t=this.x,n=this.y,r=this.z,a=A.elements;return this.x=a[0]*t+a[4]*n+a[8]*r,this.y=a[1]*t+a[5]*n+a[9]*r,this.z=a[2]*t+a[6]*n+a[10]*r,this.normalize()}divide(A){return this.x/=A.x,this.y/=A.y,this.z/=A.z,this}divideScalar(A){return this.multiplyScalar(1/A)}min(A){return this.x=Math.min(this.x,A.x),this.y=Math.min(this.y,A.y),this.z=Math.min(this.z,A.z),this}max(A){return this.x=Math.max(this.x,A.x),this.y=Math.max(this.y,A.y),this.z=Math.max(this.z,A.z),this}clamp(A,t){return this.x=Math.max(A.x,Math.min(t.x,this.x)),this.y=Math.max(A.y,Math.min(t.y,this.y)),this.z=Math.max(A.z,Math.min(t.z,this.z)),this}clampScalar(A,t){return this.x=Math.max(A,Math.min(t,this.x)),this.y=Math.max(A,Math.min(t,this.y)),this.z=Math.max(A,Math.min(t,this.z)),this}clampLength(A,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(A,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(A){return this.x*A.x+this.y*A.y+this.z*A.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(A){return this.normalize().multiplyScalar(A)}lerp(A,t){return this.x+=(A.x-this.x)*t,this.y+=(A.y-this.y)*t,this.z+=(A.z-this.z)*t,this}lerpVectors(A,t,n){return this.x=A.x+(t.x-A.x)*n,this.y=A.y+(t.y-A.y)*n,this.z=A.z+(t.z-A.z)*n,this}cross(A){return this.crossVectors(this,A)}crossVectors(A,t){const n=A.x,r=A.y,a=A.z,B=t.x,Q=t.y,y=t.z;return this.x=r*y-a*Q,this.y=a*B-n*y,this.z=n*Q-r*B,this}projectOnVector(A){const t=A.lengthSq();if(t===0)return this.set(0,0,0);const n=A.dot(this)/t;return this.copy(A).multiplyScalar(n)}projectOnPlane(A){return Hg.copy(this).projectOnVector(A),this.sub(Hg)}reflect(A){return this.sub(Hg.copy(A).multiplyScalar(2*this.dot(A)))}angleTo(A){const t=Math.sqrt(this.lengthSq()*A.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(A)/t;return Math.acos(Co(n,-1,1))}distanceTo(A){return Math.sqrt(this.distanceToSquared(A))}distanceToSquared(A){const t=this.x-A.x,n=this.y-A.y,r=this.z-A.z;return t*t+n*n+r*r}manhattanDistanceTo(A){return Math.abs(this.x-A.x)+Math.abs(this.y-A.y)+Math.abs(this.z-A.z)}setFromSpherical(A){return this.setFromSphericalCoords(A.radius,A.phi,A.theta)}setFromSphericalCoords(A,t,n){const r=Math.sin(t)*A;return this.x=r*Math.sin(n),this.y=Math.cos(t)*A,this.z=r*Math.cos(n),this}setFromCylindrical(A){return this.setFromCylindricalCoords(A.radius,A.theta,A.y)}setFromCylindricalCoords(A,t,n){return this.x=A*Math.sin(t),this.y=n,this.z=A*Math.cos(t),this}setFromMatrixPosition(A){const t=A.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(A){const t=this.setFromMatrixColumn(A,0).length(),n=this.setFromMatrixColumn(A,1).length(),r=this.setFromMatrixColumn(A,2).length();return this.x=t,this.y=n,this.z=r,this}setFromMatrixColumn(A,t){return this.fromArray(A.elements,t*4)}setFromMatrix3Column(A,t){return this.fromArray(A.elements,t*3)}setFromEuler(A){return this.x=A._x,this.y=A._y,this.z=A._z,this}setFromColor(A){return this.x=A.r,this.y=A.g,this.z=A.b,this}equals(A){return A.x===this.x&&A.y===this.y&&A.z===this.z}fromArray(A,t=0){return this.x=A[t],this.y=A[t+1],this.z=A[t+2],this}toArray(A=[],t=0){return A[t]=this.x,A[t+1]=this.y,A[t+2]=this.z,A}fromBufferAttribute(A,t){return this.x=A.getX(t),this.y=A.getY(t),this.z=A.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const A=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(A),this.y=t,this.z=n*Math.sin(A),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Hg=new Ee,Za=new Us;class To{constructor(A=new Ee(1/0,1/0,1/0),t=new Ee(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=A,this.max=t}set(A,t){return this.min.copy(A),this.max.copy(t),this}setFromArray(A){this.makeEmpty();for(let t=0,n=A.length;t<n;t+=3)this.expandByPoint(Ig.fromArray(A,t));return this}setFromBufferAttribute(A){this.makeEmpty();for(let t=0,n=A.count;t<n;t++)this.expandByPoint(Ig.fromBufferAttribute(A,t));return this}setFromPoints(A){this.makeEmpty();for(let t=0,n=A.length;t<n;t++)this.expandByPoint(A[t]);return this}setFromCenterAndSize(A,t){const n=Ig.copy(t).multiplyScalar(.5);return this.min.copy(A).sub(n),this.max.copy(A).add(n),this}setFromObject(A,t=!1){return this.makeEmpty(),this.expandByObject(A,t)}clone(){return new this.constructor().copy(this)}copy(A){return this.min.copy(A.min),this.max.copy(A.max),this}makeEmpty(){return this.min.x=this.min.y=this.min.z=1/0,this.max.x=this.max.y=this.max.z=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y||this.max.z<this.min.z}getCenter(A){return this.isEmpty()?A.set(0,0,0):A.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(A){return this.isEmpty()?A.set(0,0,0):A.subVectors(this.max,this.min)}expandByPoint(A){return this.min.min(A),this.max.max(A),this}expandByVector(A){return this.min.sub(A),this.max.add(A),this}expandByScalar(A){return this.min.addScalar(-A),this.max.addScalar(A),this}expandByObject(A,t=!1){A.updateWorldMatrix(!1,!1);const n=A.geometry;if(n!==void 0){const a=n.getAttribute("position");if(t===!0&&a!==void 0&&A.isInstancedMesh!==!0)for(let B=0,Q=a.count;B<Q;B++)A.isMesh===!0?A.getVertexPosition(B,Ig):Ig.fromBufferAttribute(a,B),Ig.applyMatrix4(A.matrixWorld),this.expandByPoint(Ig);else A.boundingBox!==void 0?(A.boundingBox===null&&A.computeBoundingBox(),fi.copy(A.boundingBox)):(n.boundingBox===null&&n.computeBoundingBox(),fi.copy(n.boundingBox)),fi.applyMatrix4(A.matrixWorld),this.union(fi)}const r=A.children;for(let a=0,B=r.length;a<B;a++)this.expandByObject(r[a],t);return this}containsPoint(A){return!(A.x<this.min.x||A.x>this.max.x||A.y<this.min.y||A.y>this.max.y||A.z<this.min.z||A.z>this.max.z)}containsBox(A){return this.min.x<=A.min.x&&A.max.x<=this.max.x&&this.min.y<=A.min.y&&A.max.y<=this.max.y&&this.min.z<=A.min.z&&A.max.z<=this.max.z}getParameter(A,t){return t.set((A.x-this.min.x)/(this.max.x-this.min.x),(A.y-this.min.y)/(this.max.y-this.min.y),(A.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(A){return!(A.max.x<this.min.x||A.min.x>this.max.x||A.max.y<this.min.y||A.min.y>this.max.y||A.max.z<this.min.z||A.min.z>this.max.z)}intersectsSphere(A){return this.clampPoint(A.center,Ig),Ig.distanceToSquared(A.center)<=A.radius*A.radius}intersectsPlane(A){let t,n;return A.normal.x>0?(t=A.normal.x*this.min.x,n=A.normal.x*this.max.x):(t=A.normal.x*this.max.x,n=A.normal.x*this.min.x),A.normal.y>0?(t+=A.normal.y*this.min.y,n+=A.normal.y*this.max.y):(t+=A.normal.y*this.max.y,n+=A.normal.y*this.min.y),A.normal.z>0?(t+=A.normal.z*this.min.z,n+=A.normal.z*this.max.z):(t+=A.normal.z*this.max.z,n+=A.normal.z*this.min.z),t<=-A.constant&&n>=-A.constant}intersectsTriangle(A){if(this.isEmpty())return!1;this.getCenter(Ls),Oo.subVectors(this.max,Ls),Sn.subVectors(A.a,Ls),Wn.subVectors(A.b,Ls),Po.subVectors(A.c,Ls),po.subVectors(Wn,Sn),$o.subVectors(Po,Wn),Qe.subVectors(Sn,Po);let t=[0,-po.z,po.y,0,-$o.z,$o.y,0,-Qe.z,Qe.y,po.z,0,-po.x,$o.z,0,-$o.x,Qe.z,0,-Qe.x,-po.y,po.x,0,-$o.y,$o.x,0,-Qe.y,Qe.x,0];return!gs(t,Sn,Wn,Po,Oo)||(t=[1,0,0,0,1,0,0,0,1],!gs(t,Sn,Wn,Po,Oo))?!1:(Xr.crossVectors(po,$o),t=[Xr.x,Xr.y,Xr.z],gs(t,Sn,Wn,Po,Oo))}clampPoint(A,t){return t.copy(A).clamp(this.min,this.max)}distanceToPoint(A){return this.clampPoint(A,Ig).distanceTo(A)}getBoundingSphere(A){return this.isEmpty()?A.makeEmpty():(this.getCenter(A.center),A.radius=this.getSize(Ig).length()*.5),A}intersect(A){return this.min.max(A.min),this.max.min(A.max),this.isEmpty()&&this.makeEmpty(),this}union(A){return this.min.min(A.min),this.max.max(A.max),this}applyMatrix4(A){return this.isEmpty()?this:(ir[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(A),ir[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(A),ir[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(A),ir[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(A),ir[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(A),ir[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(A),ir[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(A),ir[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(A),this.setFromPoints(ir),this)}translate(A){return this.min.add(A),this.max.add(A),this}equals(A){return A.min.equals(this.min)&&A.max.equals(this.max)}}const ir=[new Ee,new Ee,new Ee,new Ee,new Ee,new Ee,new Ee,new Ee],Ig=new Ee,fi=new To,Sn=new Ee,Wn=new Ee,Po=new Ee,po=new Ee,$o=new Ee,Qe=new Ee,Ls=new Ee,Oo=new Ee,Xr=new Ee,Br=new Ee;function gs(I,A,t,n,r){for(let a=0,B=I.length-3;a<=B;a+=3){Br.fromArray(I,a);const Q=r.x*Math.abs(Br.x)+r.y*Math.abs(Br.y)+r.z*Math.abs(Br.z),y=A.dot(Br),M=t.dot(Br),K=n.dot(Br);if(Math.max(-Math.max(y,M,K),Math.min(y,M,K))>Q)return!1}return!0}const xs=new To,Zn=new Ee,$s=new Ee;class qr{constructor(A=new Ee,t=-1){this.isSphere=!0,this.center=A,this.radius=t}set(A,t){return this.center.copy(A),this.radius=t,this}setFromPoints(A,t){const n=this.center;t!==void 0?n.copy(t):xs.setFromPoints(A).getCenter(n);let r=0;for(let a=0,B=A.length;a<B;a++)r=Math.max(r,n.distanceToSquared(A[a]));return this.radius=Math.sqrt(r),this}copy(A){return this.center.copy(A.center),this.radius=A.radius,this}isEmpty(){return this.radius<0}makeEmpty(){return this.center.set(0,0,0),this.radius=-1,this}containsPoint(A){return A.distanceToSquared(this.center)<=this.radius*this.radius}distanceToPoint(A){return A.distanceTo(this.center)-this.radius}intersectsSphere(A){const t=this.radius+A.radius;return A.center.distanceToSquared(this.center)<=t*t}intersectsBox(A){return A.intersectsSphere(this)}intersectsPlane(A){return Math.abs(A.distanceToPoint(this.center))<=this.radius}clampPoint(A,t){const n=this.center.distanceToSquared(A);return t.copy(A),n>this.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(A){return this.isEmpty()?(A.makeEmpty(),A):(A.set(this.center,this.center),A.expandByScalar(this.radius),A)}applyMatrix4(A){return this.center.applyMatrix4(A),this.radius=this.radius*A.getMaxScaleOnAxis(),this}translate(A){return this.center.add(A),this}expandByPoint(A){if(this.isEmpty())return this.center.copy(A),this.radius=0,this;Zn.subVectors(A,this.center);const t=Zn.lengthSq();if(t>this.radius*this.radius){const n=Math.sqrt(t),r=(n-this.radius)*.5;this.center.addScaledVector(Zn,r/n),this.radius+=r}return this}union(A){return A.isEmpty()?this:this.isEmpty()?(this.copy(A),this):(this.center.equals(A.center)===!0?this.radius=Math.max(this.radius,A.radius):($s.subVectors(A.center,this.center).setLength(A.radius),this.expandByPoint(Zn.copy(A.center).add($s)),this.expandByPoint(Zn.copy(A.center).sub($s))),this)}equals(A){return A.center.equals(this.center)&&A.radius===this.radius}clone(){return new this.constructor().copy(this)}}const _r=new Ee,mr=new Ee,Dg=new Ee,dr=new Ee,Qo=new Ee,Nn=new Ee,lo=new Ee;class Tr{constructor(A=new Ee,t=new Ee(0,0,-1)){this.origin=A,this.direction=t}set(A,t){return this.origin.copy(A),this.direction.copy(t),this}copy(A){return this.origin.copy(A.origin),this.direction.copy(A.direction),this}at(A,t){return t.copy(this.origin).addScaledVector(this.direction,A)}lookAt(A){return this.direction.copy(A).sub(this.origin).normalize(),this}recast(A){return this.origin.copy(this.at(A,_r)),this}closestPointToPoint(A,t){t.subVectors(A,this.origin);const n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(A){return Math.sqrt(this.distanceSqToPoint(A))}distanceSqToPoint(A){const t=_r.subVectors(A,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(A):(_r.copy(this.origin).addScaledVector(this.direction,t),_r.distanceToSquared(A))}distanceSqToSegment(A,t,n,r){mr.copy(A).add(t).multiplyScalar(.5),Dg.copy(t).sub(A).normalize(),dr.copy(this.origin).sub(mr);const a=A.distanceTo(t)*.5,B=-this.direction.dot(Dg),Q=dr.dot(this.direction),y=-dr.dot(Dg),M=dr.lengthSq(),K=Math.abs(1-B*B);let W,V,X,iA;if(K>0)if(W=B*y-Q,V=B*Q-y,iA=a*K,W>=0)if(V>=-iA)if(V<=iA){const BA=1/K;W*=BA,V*=BA,X=W*(W+B*V+2*Q)+V*(B*W+V+2*y)+M}else V=a,W=Math.max(0,-(B*V+Q)),X=-W*W+V*(V+2*y)+M;else V=-a,W=Math.max(0,-(B*V+Q)),X=-W*W+V*(V+2*y)+M;else V<=-iA?(W=Math.max(0,-(-B*a+Q)),V=W>0?-a:Math.min(Math.max(-a,-y),a),X=-W*W+V*(V+2*y)+M):V<=iA?(W=0,V=Math.min(Math.max(-a,-y),a),X=V*(V+2*y)+M):(W=Math.max(0,-(B*a+Q)),V=W>0?a:Math.min(Math.max(-a,-y),a),X=-W*W+V*(V+2*y)+M);else V=B>0?-a:a,W=Math.max(0,-(B*V+Q)),X=-W*W+V*(V+2*y)+M;return n&&n.copy(this.origin).addScaledVector(this.direction,W),r&&r.copy(mr).addScaledVector(Dg,V),X}intersectSphere(A,t){_r.subVectors(A.center,this.origin);const n=_r.dot(this.direction),r=_r.dot(_r)-n*n,a=A.radius*A.radius;if(r>a)return null;const B=Math.sqrt(a-r),Q=n-B,y=n+B;return y<0?null:Q<0?this.at(y,t):this.at(Q,t)}intersectsSphere(A){return this.distanceSqToPoint(A.center)<=A.radius*A.radius}distanceToPlane(A){const t=A.normal.dot(this.direction);if(t===0)return A.distanceToPoint(this.origin)===0?0:null;const n=-(this.origin.dot(A.normal)+A.constant)/t;return n>=0?n:null}intersectPlane(A,t){const n=this.distanceToPlane(A);return n===null?null:this.at(n,t)}intersectsPlane(A){const t=A.distanceToPoint(this.origin);return t===0||A.normal.dot(this.direction)*t<0}intersectBox(A,t){let n,r,a,B,Q,y;const M=1/this.direction.x,K=1/this.direction.y,W=1/this.direction.z,V=this.origin;return M>=0?(n=(A.min.x-V.x)*M,r=(A.max.x-V.x)*M):(n=(A.max.x-V.x)*M,r=(A.min.x-V.x)*M),K>=0?(a=(A.min.y-V.y)*K,B=(A.max.y-V.y)*K):(a=(A.max.y-V.y)*K,B=(A.min.y-V.y)*K),n>B||a>r||((a>n||isNaN(n))&&(n=a),(B<r||isNaN(r))&&(r=B),W>=0?(Q=(A.min.z-V.z)*W,y=(A.max.z-V.z)*W):(Q=(A.max.z-V.z)*W,y=(A.min.z-V.z)*W),n>y||Q>r)||((Q>n||n!==n)&&(n=Q),(y<r||r!==r)&&(r=y),r<0)?null:this.at(n>=0?n:r,t)}intersectsBox(A){return this.intersectBox(A,_r)!==null}intersectTriangle(A,t,n,r,a){Qo.subVectors(t,A),Nn.subVectors(n,A),lo.crossVectors(Qo,Nn);let B=this.direction.dot(lo),Q;if(B>0){if(r)return null;Q=1}else if(B<0)Q=-1,B=-B;else return null;dr.subVectors(this.origin,A);const y=Q*this.direction.dot(Nn.crossVectors(dr,Nn));if(y<0)return null;const M=Q*this.direction.dot(Qo.cross(dr));if(M<0||y+M>B)return null;const K=-Q*dr.dot(lo);return K<0?null:this.at(K/B,a)}applyMatrix4(A){return this.origin.applyMatrix4(A),this.direction.transformDirection(A),this}equals(A){return A.origin.equals(this.origin)&&A.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class tn{constructor(A,t,n,r,a,B,Q,y,M,K,W,V,X,iA,BA,nA){tn.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],A!==void 0&&this.set(A,t,n,r,a,B,Q,y,M,K,W,V,X,iA,BA,nA)}set(A,t,n,r,a,B,Q,y,M,K,W,V,X,iA,BA,nA){const tA=this.elements;return tA[0]=A,tA[4]=t,tA[8]=n,tA[12]=r,tA[1]=a,tA[5]=B,tA[9]=Q,tA[13]=y,tA[2]=M,tA[6]=K,tA[10]=W,tA[14]=V,tA[3]=X,tA[7]=iA,tA[11]=BA,tA[15]=nA,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new tn().fromArray(this.elements)}copy(A){const t=this.elements,n=A.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(A){const t=this.elements,n=A.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(A){const t=A.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(A,t,n){return A.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(A,t,n){return this.set(A.x,t.x,n.x,0,A.y,t.y,n.y,0,A.z,t.z,n.z,0,0,0,0,1),this}extractRotation(A){const t=this.elements,n=A.elements,r=1/Ag.setFromMatrixColumn(A,0).length(),a=1/Ag.setFromMatrixColumn(A,1).length(),B=1/Ag.setFromMatrixColumn(A,2).length();return t[0]=n[0]*r,t[1]=n[1]*r,t[2]=n[2]*r,t[3]=0,t[4]=n[4]*a,t[5]=n[5]*a,t[6]=n[6]*a,t[7]=0,t[8]=n[8]*B,t[9]=n[9]*B,t[10]=n[10]*B,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(A){const t=this.elements,n=A.x,r=A.y,a=A.z,B=Math.cos(n),Q=Math.sin(n),y=Math.cos(r),M=Math.sin(r),K=Math.cos(a),W=Math.sin(a);if(A.order==="XYZ"){const V=B*K,X=B*W,iA=Q*K,BA=Q*W;t[0]=y*K,t[4]=-y*W,t[8]=M,t[1]=X+iA*M,t[5]=V-BA*M,t[9]=-Q*y,t[2]=BA-V*M,t[6]=iA+X*M,t[10]=B*y}else if(A.order==="YXZ"){const V=y*K,X=y*W,iA=M*K,BA=M*W;t[0]=V+BA*Q,t[4]=iA*Q-X,t[8]=B*M,t[1]=B*W,t[5]=B*K,t[9]=-Q,t[2]=X*Q-iA,t[6]=BA+V*Q,t[10]=B*y}else if(A.order==="ZXY"){const V=y*K,X=y*W,iA=M*K,BA=M*W;t[0]=V-BA*Q,t[4]=-B*W,t[8]=iA+X*Q,t[1]=X+iA*Q,t[5]=B*K,t[9]=BA-V*Q,t[2]=-B*M,t[6]=Q,t[10]=B*y}else if(A.order==="ZYX"){const V=B*K,X=B*W,iA=Q*K,BA=Q*W;t[0]=y*K,t[4]=iA*M-X,t[8]=V*M+BA,t[1]=y*W,t[5]=BA*M+V,t[9]=X*M-iA,t[2]=-M,t[6]=Q*y,t[10]=B*y}else if(A.order==="YZX"){const V=B*y,X=B*M,iA=Q*y,BA=Q*M;t[0]=y*K,t[4]=BA-V*W,t[8]=iA*W+X,t[1]=W,t[5]=B*K,t[9]=-Q*K,t[2]=-M*K,t[6]=X*W+iA,t[10]=V-BA*W}else if(A.order==="XZY"){const V=B*y,X=B*M,iA=Q*y,BA=Q*M;t[0]=y*K,t[4]=-W,t[8]=M*K,t[1]=V*W+BA,t[5]=B*K,t[9]=X*W-iA,t[2]=iA*W-X,t[6]=Q*K,t[10]=BA*W+V}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(A){return this.compose(Rr,A,Cg)}lookAt(A,t,n){const r=this.elements;return as.subVectors(A,t),as.lengthSq()===0&&(as.z=1),as.normalize(),yg.crossVectors(n,as),yg.lengthSq()===0&&(Math.abs(n.z)===1?as.x+=1e-4:as.z+=1e-4,as.normalize(),yg.crossVectors(n,as)),yg.normalize(),Qa.crossVectors(as,yg),r[0]=yg.x,r[4]=Qa.x,r[8]=as.x,r[1]=yg.y,r[5]=Qa.y,r[9]=as.y,r[2]=yg.z,r[6]=Qa.z,r[10]=as.z,this}multiply(A){return this.multiplyMatrices(this,A)}premultiply(A){return this.multiplyMatrices(A,this)}multiplyMatrices(A,t){const n=A.elements,r=t.elements,a=this.elements,B=n[0],Q=n[4],y=n[8],M=n[12],K=n[1],W=n[5],V=n[9],X=n[13],iA=n[2],BA=n[6],nA=n[10],tA=n[14],RA=n[3],mA=n[7],kA=n[11],_e=n[15],ae=r[0],fe=r[4],Je=r[8],zA=r[12],KA=r[1],tt=r[5],Rt=r[9],Ze=r[13],yt=r[2],jt=r[6],oi=r[10],Hi=r[14],Nt=r[3],wi=r[7],Di=r[11],Gn=r[15];return a[0]=B*ae+Q*KA+y*yt+M*Nt,a[4]=B*fe+Q*tt+y*jt+M*wi,a[8]=B*Je+Q*Rt+y*oi+M*Di,a[12]=B*zA+Q*Ze+y*Hi+M*Gn,a[1]=K*ae+W*KA+V*yt+X*Nt,a[5]=K*fe+W*tt+V*jt+X*wi,a[9]=K*Je+W*Rt+V*oi+X*Di,a[13]=K*zA+W*Ze+V*Hi+X*Gn,a[2]=iA*ae+BA*KA+nA*yt+tA*Nt,a[6]=iA*fe+BA*tt+nA*jt+tA*wi,a[10]=iA*Je+BA*Rt+nA*oi+tA*Di,a[14]=iA*zA+BA*Ze+nA*Hi+tA*Gn,a[3]=RA*ae+mA*KA+kA*yt+_e*Nt,a[7]=RA*fe+mA*tt+kA*jt+_e*wi,a[11]=RA*Je+mA*Rt+kA*oi+_e*Di,a[15]=RA*zA+mA*Ze+kA*Hi+_e*Gn,this}multiplyScalar(A){const t=this.elements;return t[0]*=A,t[4]*=A,t[8]*=A,t[12]*=A,t[1]*=A,t[5]*=A,t[9]*=A,t[13]*=A,t[2]*=A,t[6]*=A,t[10]*=A,t[14]*=A,t[3]*=A,t[7]*=A,t[11]*=A,t[15]*=A,this}determinant(){const A=this.elements,t=A[0],n=A[4],r=A[8],a=A[12],B=A[1],Q=A[5],y=A[9],M=A[13],K=A[2],W=A[6],V=A[10],X=A[14],iA=A[3],BA=A[7],nA=A[11],tA=A[15];return iA*(+a*y*W-r*M*W-a*Q*V+n*M*V+r*Q*X-n*y*X)+BA*(+t*y*X-t*M*V+a*B*V-r*B*X+r*M*K-a*y*K)+nA*(+t*M*W-t*Q*X-a*B*W+n*B*X+a*Q*K-n*M*K)+tA*(-r*Q*K-t*y*W+t*Q*V+r*B*W-n*B*V+n*y*K)}transpose(){const A=this.elements;let t;return t=A[1],A[1]=A[4],A[4]=t,t=A[2],A[2]=A[8],A[8]=t,t=A[6],A[6]=A[9],A[9]=t,t=A[3],A[3]=A[12],A[12]=t,t=A[7],A[7]=A[13],A[13]=t,t=A[11],A[11]=A[14],A[14]=t,this}setPosition(A,t,n){const r=this.elements;return A.isVector3?(r[12]=A.x,r[13]=A.y,r[14]=A.z):(r[12]=A,r[13]=t,r[14]=n),this}invert(){const A=this.elements,t=A[0],n=A[1],r=A[2],a=A[3],B=A[4],Q=A[5],y=A[6],M=A[7],K=A[8],W=A[9],V=A[10],X=A[11],iA=A[12],BA=A[13],nA=A[14],tA=A[15],RA=W*nA*M-BA*V*M+BA*y*X-Q*nA*X-W*y*tA+Q*V*tA,mA=iA*V*M-K*nA*M-iA*y*X+B*nA*X+K*y*tA-B*V*tA,kA=K*BA*M-iA*W*M+iA*Q*X-B*BA*X-K*Q*tA+B*W*tA,_e=iA*W*y-K*BA*y-iA*Q*V+B*BA*V+K*Q*nA-B*W*nA,ae=t*RA+n*mA+r*kA+a*_e;if(ae===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const fe=1/ae;return A[0]=RA*fe,A[1]=(BA*V*a-W*nA*a-BA*r*X+n*nA*X+W*r*tA-n*V*tA)*fe,A[2]=(Q*nA*a-BA*y*a+BA*r*M-n*nA*M-Q*r*tA+n*y*tA)*fe,A[3]=(W*y*a-Q*V*a-W*r*M+n*V*M+Q*r*X-n*y*X)*fe,A[4]=mA*fe,A[5]=(K*nA*a-iA*V*a+iA*r*X-t*nA*X-K*r*tA+t*V*tA)*fe,A[6]=(iA*y*a-B*nA*a-iA*r*M+t*nA*M+B*r*tA-t*y*tA)*fe,A[7]=(B*V*a-K*y*a+K*r*M-t*V*M-B*r*X+t*y*X)*fe,A[8]=kA*fe,A[9]=(iA*W*a-K*BA*a-iA*n*X+t*BA*X+K*n*tA-t*W*tA)*fe,A[10]=(B*BA*a-iA*Q*a+iA*n*M-t*BA*M-B*n*tA+t*Q*tA)*fe,A[11]=(K*Q*a-B*W*a-K*n*M+t*W*M+B*n*X-t*Q*X)*fe,A[12]=_e*fe,A[13]=(K*BA*r-iA*W*r+iA*n*V-t*BA*V-K*n*nA+t*W*nA)*fe,A[14]=(iA*Q*r-B*BA*r-iA*n*y+t*BA*y+B*n*nA-t*Q*nA)*fe,A[15]=(B*W*r-K*Q*r+K*n*y-t*W*y-B*n*V+t*Q*V)*fe,this}scale(A){const t=this.elements,n=A.x,r=A.y,a=A.z;return t[0]*=n,t[4]*=r,t[8]*=a,t[1]*=n,t[5]*=r,t[9]*=a,t[2]*=n,t[6]*=r,t[10]*=a,t[3]*=n,t[7]*=r,t[11]*=a,this}getMaxScaleOnAxis(){const A=this.elements,t=A[0]*A[0]+A[1]*A[1]+A[2]*A[2],n=A[4]*A[4]+A[5]*A[5]+A[6]*A[6],r=A[8]*A[8]+A[9]*A[9]+A[10]*A[10];return Math.sqrt(Math.max(t,n,r))}makeTranslation(A,t,n){return A.isVector3?this.set(1,0,0,A.x,0,1,0,A.y,0,0,1,A.z,0,0,0,1):this.set(1,0,0,A,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(A){const t=Math.cos(A),n=Math.sin(A);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(A){const t=Math.cos(A),n=Math.sin(A);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(A){const t=Math.cos(A),n=Math.sin(A);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(A,t){const n=Math.cos(t),r=Math.sin(t),a=1-n,B=A.x,Q=A.y,y=A.z,M=a*B,K=a*Q;return this.set(M*B+n,M*Q-r*y,M*y+r*Q,0,M*Q+r*y,K*Q+n,K*y-r*B,0,M*y-r*Q,K*y+r*B,a*y*y+n,0,0,0,0,1),this}makeScale(A,t,n){return this.set(A,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(A,t,n,r,a,B){return this.set(1,n,a,0,A,1,B,0,t,r,1,0,0,0,0,1),this}compose(A,t,n){const r=this.elements,a=t._x,B=t._y,Q=t._z,y=t._w,M=a+a,K=B+B,W=Q+Q,V=a*M,X=a*K,iA=a*W,BA=B*K,nA=B*W,tA=Q*W,RA=y*M,mA=y*K,kA=y*W,_e=n.x,ae=n.y,fe=n.z;return r[0]=(1-(BA+tA))*_e,r[1]=(X+kA)*_e,r[2]=(iA-mA)*_e,r[3]=0,r[4]=(X-kA)*ae,r[5]=(1-(V+tA))*ae,r[6]=(nA+RA)*ae,r[7]=0,r[8]=(iA+mA)*fe,r[9]=(nA-RA)*fe,r[10]=(1-(V+BA))*fe,r[11]=0,r[12]=A.x,r[13]=A.y,r[14]=A.z,r[15]=1,this}decompose(A,t,n){const r=this.elements;let a=Ag.set(r[0],r[1],r[2]).length();const B=Ag.set(r[4],r[5],r[6]).length(),Q=Ag.set(r[8],r[9],r[10]).length();this.determinant()<0&&(a=-a),A.x=r[12],A.y=r[13],A.z=r[14],Kr.copy(this);const M=1/a,K=1/B,W=1/Q;return Kr.elements[0]*=M,Kr.elements[1]*=M,Kr.elements[2]*=M,Kr.elements[4]*=K,Kr.elements[5]*=K,Kr.elements[6]*=K,Kr.elements[8]*=W,Kr.elements[9]*=W,Kr.elements[10]*=W,t.setFromRotationMatrix(Kr),n.x=a,n.y=B,n.z=Q,this}makePerspective(A,t,n,r,a,B,Q=ls){const y=this.elements,M=2*a/(t-A),K=2*a/(n-r),W=(t+A)/(t-A),V=(n+r)/(n-r);let X,iA;if(Q===ls)X=-(B+a)/(B-a),iA=-2*B*a/(B-a);else if(Q===br)X=-B/(B-a),iA=-B*a/(B-a);else throw new Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+Q);return y[0]=M,y[4]=0,y[8]=W,y[12]=0,y[1]=0,y[5]=K,y[9]=V,y[13]=0,y[2]=0,y[6]=0,y[10]=X,y[14]=iA,y[3]=0,y[7]=0,y[11]=-1,y[15]=0,this}makeOrthographic(A,t,n,r,a,B,Q=ls){const y=this.elements,M=1/(t-A),K=1/(n-r),W=1/(B-a),V=(t+A)*M,X=(n+r)*K;let iA,BA;if(Q===ls)iA=(B+a)*W,BA=-2*W;else if(Q===br)iA=a*W,BA=-1*W;else throw new Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+Q);return y[0]=2*M,y[4]=0,y[8]=0,y[12]=-V,y[1]=0,y[5]=2*K,y[9]=0,y[13]=-X,y[2]=0,y[6]=0,y[10]=BA,y[14]=-iA,y[3]=0,y[7]=0,y[11]=0,y[15]=1,this}equals(A){const t=this.elements,n=A.elements;for(let r=0;r<16;r++)if(t[r]!==n[r])return!1;return!0}fromArray(A,t=0){for(let n=0;n<16;n++)this.elements[n]=A[n+t];return this}toArray(A=[],t=0){const n=this.elements;return A[t]=n[0],A[t+1]=n[1],A[t+2]=n[2],A[t+3]=n[3],A[t+4]=n[4],A[t+5]=n[5],A[t+6]=n[6],A[t+7]=n[7],A[t+8]=n[8],A[t+9]=n[9],A[t+10]=n[10],A[t+11]=n[11],A[t+12]=n[12],A[t+13]=n[13],A[t+14]=n[14],A[t+15]=n[15],A}}const Ag=new Ee,Kr=new tn,Rr=new Ee(0,0,0),Cg=new Ee(1,1,1),yg=new Ee,Qa=new Ee,as=new Ee,ja=new tn,ys=new Us;class Er{constructor(A=0,t=0,n=0,r=Er.DEFAULT_ORDER){this.isEuler=!0,this._x=A,this._y=t,this._z=n,this._order=r}get x(){return this._x}set x(A){this._x=A,this._onChangeCallback()}get y(){return this._y}set y(A){this._y=A,this._onChangeCallback()}get z(){return this._z}set z(A){this._z=A,this._onChangeCallback()}get order(){return this._order}set order(A){this._order=A,this._onChangeCallback()}set(A,t,n,r=this._order){return this._x=A,this._y=t,this._z=n,this._order=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(A){return this._x=A._x,this._y=A._y,this._z=A._z,this._order=A._order,this._onChangeCallback(),this}setFromRotationMatrix(A,t=this._order,n=!0){const r=A.elements,a=r[0],B=r[4],Q=r[8],y=r[1],M=r[5],K=r[9],W=r[2],V=r[6],X=r[10];switch(t){case"XYZ":this._y=Math.asin(Co(Q,-1,1)),Math.abs(Q)<.9999999?(this._x=Math.atan2(-K,X),this._z=Math.atan2(-B,a)):(this._x=Math.atan2(V,M),this._z=0);break;case"YXZ":this._x=Math.asin(-Co(K,-1,1)),Math.abs(K)<.9999999?(this._y=Math.atan2(Q,X),this._z=Math.atan2(y,M)):(this._y=Math.atan2(-W,a),this._z=0);break;case"ZXY":this._x=Math.asin(Co(V,-1,1)),Math.abs(V)<.9999999?(this._y=Math.atan2(-W,X),this._z=Math.atan2(-B,M)):(this._y=0,this._z=Math.atan2(y,a));break;case"ZYX":this._y=Math.asin(-Co(W,-1,1)),Math.abs(W)<.9999999?(this._x=Math.atan2(V,X),this._z=Math.atan2(y,a)):(this._x=0,this._z=Math.atan2(-B,M));break;case"YZX":this._z=Math.asin(Co(y,-1,1)),Math.abs(y)<.9999999?(this._x=Math.atan2(-K,M),this._y=Math.atan2(-W,a)):(this._x=0,this._y=Math.atan2(Q,X));break;case"XZY":this._z=Math.asin(-Co(B,-1,1)),Math.abs(B)<.9999999?(this._x=Math.atan2(V,M),this._y=Math.atan2(Q,a)):(this._x=Math.atan2(-K,X),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(A,t,n){return ja.makeRotationFromQuaternion(A),this.setFromRotationMatrix(ja,t,n)}setFromVector3(A,t=this._order){return this.set(A.x,A.y,A.z,t)}reorder(A){return ys.setFromEuler(this),this.setFromQuaternion(ys,A)}equals(A){return A._x===this._x&&A._y===this._y&&A._z===this._z&&A._order===this._order}fromArray(A){return this._x=A[0],this._y=A[1],this._z=A[2],A[3]!==void 0&&(this._order=A[3]),this._onChangeCallback(),this}toArray(A=[],t=0){return A[t]=this._x,A[t+1]=this._y,A[t+2]=this._z,A[t+3]=this._order,A}_onChange(A){return this._onChangeCallback=A,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Er.DEFAULT_ORDER="XYZ";class eg{constructor(){this.mask=1}set(A){this.mask=(1<<A|0)>>>0}enable(A){this.mask|=1<<A|0}enableAll(){this.mask=-1}toggle(A){this.mask^=1<<A|0}disable(A){this.mask&=~(1<<A|0)}disableAll(){this.mask=0}test(A){return(this.mask&A.mask)!==0}isEnabled(A){return(this.mask&(1<<A|0))!==0}}let Eo=0;const ta=new Ee,As=new Us,ca=new tn,GI=new Ee,bs=new Ee,Pg=new Ee,us=new Us,WI=new Ee(1,0,0),VI=new Ee(0,1,0),w=new Ee(0,0,1),L={type:"added"},AA={type:"removed"},EA={type:"childadded",child:null},GA={type:"childremoved",child:null};class qA extends Xs{constructor(){super(),this.isObject3D=!0,Object.defineProperty(this,"id",{value:Eo++}),this.uuid=Yo(),this.name="",this.type="Object3D",this.parent=null,this.children=[],this.up=qA.DEFAULT_UP.clone();const A=new Ee,t=new Er,n=new Us,r=new Ee(1,1,1);function a(){n.setFromEuler(t,!1)}function B(){t.setFromQuaternion(n,void 0,!1)}t._onChange(a),n._onChange(B),Object.defineProperties(this,{position:{configurable:!0,enumerable:!0,value:A},rotation:{configurable:!0,enumerable:!0,value:t},quaternion:{configurable:!0,enumerable:!0,value:n},scale:{configurable:!0,enumerable:!0,value:r},modelViewMatrix:{value:new tn},normalMatrix:{value:new Bo}}),this.matrix=new tn,this.matrixWorld=new tn,this.matrixAutoUpdate=qA.DEFAULT_MATRIX_AUTO_UPDATE,this.matrixWorldAutoUpdate=qA.DEFAULT_MATRIX_WORLD_AUTO_UPDATE,this.matrixWorldNeedsUpdate=!1,this.layers=new eg,this.visible=!0,this.castShadow=!1,this.receiveShadow=!1,this.frustumCulled=!0,this.renderOrder=0,this.animations=[],this.userData={}}onBeforeShadow(){}onAfterShadow(){}onBeforeRender(){}onAfterRender(){}applyMatrix4(A){this.matrixAutoUpdate&&this.updateMatrix(),this.matrix.premultiply(A),this.matrix.decompose(this.position,this.quaternion,this.scale)}applyQuaternion(A){return this.quaternion.premultiply(A),this}setRotationFromAxisAngle(A,t){this.quaternion.setFromAxisAngle(A,t)}setRotationFromEuler(A){this.quaternion.setFromEuler(A,!0)}setRotationFromMatrix(A){this.quaternion.setFromRotationMatrix(A)}setRotationFromQuaternion(A){this.quaternion.copy(A)}rotateOnAxis(A,t){return As.setFromAxisAngle(A,t),this.quaternion.multiply(As),this}rotateOnWorldAxis(A,t){return As.setFromAxisAngle(A,t),this.quaternion.premultiply(As),this}rotateX(A){return this.rotateOnAxis(WI,A)}rotateY(A){return this.rotateOnAxis(VI,A)}rotateZ(A){return this.rotateOnAxis(w,A)}translateOnAxis(A,t){return ta.copy(A).applyQuaternion(this.quaternion),this.position.add(ta.multiplyScalar(t)),this}translateX(A){return this.translateOnAxis(WI,A)}translateY(A){return this.translateOnAxis(VI,A)}translateZ(A){return this.translateOnAxis(w,A)}localToWorld(A){return this.updateWorldMatrix(!0,!1),A.applyMatrix4(this.matrixWorld)}worldToLocal(A){return this.updateWorldMatrix(!0,!1),A.applyMatrix4(ca.copy(this.matrixWorld).invert())}lookAt(A,t,n){A.isVector3?GI.copy(A):GI.set(A,t,n);const r=this.parent;this.updateWorldMatrix(!0,!1),bs.setFromMatrixPosition(this.matrixWorld),this.isCamera||this.isLight?ca.lookAt(bs,GI,this.up):ca.lookAt(GI,bs,this.up),this.quaternion.setFromRotationMatrix(ca),r&&(ca.extractRotation(r.matrixWorld),As.setFromRotationMatrix(ca),this.quaternion.premultiply(As.invert()))}add(A){if(arguments.length>1){for(let t=0;t<arguments.length;t++)this.add(arguments[t]);return this}return A===this?(console.error("THREE.Object3D.add: object can't be added as a child of itself.",A),this):(A&&A.isObject3D?(A.removeFromParent(),A.parent=this,this.children.push(A),A.dispatchEvent(L),EA.child=A,this.dispatchEvent(EA),EA.child=null):console.error("THREE.Object3D.add: object not an instance of THREE.Object3D.",A),this)}remove(A){if(arguments.length>1){for(let n=0;n<arguments.length;n++)this.remove(arguments[n]);return this}const t=this.children.indexOf(A);return t!==-1&&(A.parent=null,this.children.splice(t,1),A.dispatchEvent(AA),GA.child=A,this.dispatchEvent(GA),GA.child=null),this}removeFromParent(){const A=this.parent;return A!==null&&A.remove(this),this}clear(){return this.remove(...this.children)}attach(A){return this.updateWorldMatrix(!0,!1),ca.copy(this.matrixWorld).invert(),A.parent!==null&&(A.parent.updateWorldMatrix(!0,!1),ca.multiply(A.parent.matrixWorld)),A.applyMatrix4(ca),A.removeFromParent(),A.parent=this,this.children.push(A),A.updateWorldMatrix(!1,!0),A.dispatchEvent(L),EA.child=A,this.dispatchEvent(EA),EA.child=null,this}getObjectById(A){return this.getObjectByProperty("id",A)}getObjectByName(A){return this.getObjectByProperty("name",A)}getObjectByProperty(A,t){if(this[A]===t)return this;for(let n=0,r=this.children.length;n<r;n++){const B=this.children[n].getObjectByProperty(A,t);if(B!==void 0)return B}}getObjectsByProperty(A,t,n=[]){this[A]===t&&n.push(this);const r=this.children;for(let a=0,B=r.length;a<B;a++)r[a].getObjectsByProperty(A,t,n);return n}getWorldPosition(A){return this.updateWorldMatrix(!0,!1),A.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(bs,A,Pg),A}getWorldScale(A){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(bs,us,A),A}getWorldDirection(A){this.updateWorldMatrix(!0,!1);const t=this.matrixWorld.elements;return A.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(A){A(this);const t=this.children;for(let n=0,r=t.length;n<r;n++)t[n].traverse(A)}traverseVisible(A){if(this.visible===!1)return;A(this);const t=this.children;for(let n=0,r=t.length;n<r;n++)t[n].traverseVisible(A)}traverseAncestors(A){const t=this.parent;t!==null&&(A(t),t.traverseAncestors(A))}updateMatrix(){this.matrix.compose(this.position,this.quaternion,this.scale),this.matrixWorldNeedsUpdate=!0}updateMatrixWorld(A){this.matrixAutoUpdate&&this.updateMatrix(),(this.matrixWorldNeedsUpdate||A)&&(this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1,A=!0);const t=this.children;for(let n=0,r=t.length;n<r;n++){const a=t[n];(a.matrixWorldAutoUpdate===!0||A===!0)&&a.updateMatrixWorld(A)}}updateWorldMatrix(A,t){const n=this.parent;if(A===!0&&n!==null&&n.matrixWorldAutoUpdate===!0&&n.updateWorldMatrix(!0,!1),this.matrixAutoUpdate&&this.updateMatrix(),this.parent===null?this.matrixWorld.copy(this.matrix):this.matrixWorld.multiplyMatrices(this.parent.matrixWorld,this.matrix),t===!0){const r=this.children;for(let a=0,B=r.length;a<B;a++){const Q=r[a];Q.matrixWorldAutoUpdate===!0&&Q.updateWorldMatrix(!1,!0)}}}toJSON(A){const t=A===void 0||typeof A=="string",n={};t&&(A={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}},n.metadata={version:4.6,type:"Object",generator:"Object3D.toJSON"});const r={};r.uuid=this.uuid,r.type=this.type,this.name!==""&&(r.name=this.name),this.castShadow===!0&&(r.castShadow=!0),this.receiveShadow===!0&&(r.receiveShadow=!0),this.visible===!1&&(r.visible=!1),this.frustumCulled===!1&&(r.frustumCulled=!1),this.renderOrder!==0&&(r.renderOrder=this.renderOrder),Object.keys(this.userData).length>0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),r.up=this.up.toArray(),this.matrixAutoUpdate===!1&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(r.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(r.type="BatchedMesh",r.perObjectFrustumCulled=this.perObjectFrustumCulled,r.sortObjects=this.sortObjects,r.drawRanges=this._drawRanges,r.reservedRanges=this._reservedRanges,r.visibility=this._visibility,r.active=this._active,r.bounds=this._bounds.map(Q=>({boxInitialized:Q.boxInitialized,boxMin:Q.box.min.toArray(),boxMax:Q.box.max.toArray(),sphereInitialized:Q.sphereInitialized,sphereRadius:Q.sphere.radius,sphereCenter:Q.sphere.center.toArray()})),r.maxGeometryCount=this._maxGeometryCount,r.maxVertexCount=this._maxVertexCount,r.maxIndexCount=this._maxIndexCount,r.geometryInitialized=this._geometryInitialized,r.geometryCount=this._geometryCount,r.matricesTexture=this._matricesTexture.toJSON(A),this.boundingSphere!==null&&(r.boundingSphere={center:r.boundingSphere.center.toArray(),radius:r.boundingSphere.radius}),this.boundingBox!==null&&(r.boundingBox={min:r.boundingBox.min.toArray(),max:r.boundingBox.max.toArray()}));function a(Q,y){return Q[y.uuid]===void 0&&(Q[y.uuid]=y.toJSON(A)),y.uuid}if(this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(A).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(r.environment=this.environment.toJSON(A).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=a(A.geometries,this.geometry);const Q=this.geometry.parameters;if(Q!==void 0&&Q.shapes!==void 0){const y=Q.shapes;if(Array.isArray(y))for(let M=0,K=y.length;M<K;M++){const W=y[M];a(A.shapes,W)}else a(A.shapes,y)}}if(this.isSkinnedMesh&&(r.bindMode=this.bindMode,r.bindMatrix=this.bindMatrix.toArray(),this.skeleton!==void 0&&(a(A.skeletons,this.skeleton),r.skeleton=this.skeleton.uuid)),this.material!==void 0)if(Array.isArray(this.material)){const Q=[];for(let y=0,M=this.material.length;y<M;y++)Q.push(a(A.materials,this.material[y]));r.material=Q}else r.material=a(A.materials,this.material);if(this.children.length>0){r.children=[];for(let Q=0;Q<this.children.length;Q++)r.children.push(this.children[Q].toJSON(A).object)}if(this.animations.length>0){r.animations=[];for(let Q=0;Q<this.animations.length;Q++){const y=this.animations[Q];r.animations.push(a(A.animations,y))}}if(t){const Q=B(A.geometries),y=B(A.materials),M=B(A.textures),K=B(A.images),W=B(A.shapes),V=B(A.skeletons),X=B(A.animations),iA=B(A.nodes);Q.length>0&&(n.geometries=Q),y.length>0&&(n.materials=y),M.length>0&&(n.textures=M),K.length>0&&(n.images=K),W.length>0&&(n.shapes=W),V.length>0&&(n.skeletons=V),X.length>0&&(n.animations=X),iA.length>0&&(n.nodes=iA)}return n.object=r,n;function B(Q){const y=[];for(const M in Q){const K=Q[M];delete K.metadata,y.push(K)}return y}}clone(A){return new this.constructor().copy(this,A)}copy(A,t=!0){if(this.name=A.name,this.up.copy(A.up),this.position.copy(A.position),this.rotation.order=A.rotation.order,this.quaternion.copy(A.quaternion),this.scale.copy(A.scale),this.matrix.copy(A.matrix),this.matrixWorld.copy(A.matrixWorld),this.matrixAutoUpdate=A.matrixAutoUpdate,this.matrixWorldAutoUpdate=A.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=A.matrixWorldNeedsUpdate,this.layers.mask=A.layers.mask,this.visible=A.visible,this.castShadow=A.castShadow,this.receiveShadow=A.receiveShadow,this.frustumCulled=A.frustumCulled,this.renderOrder=A.renderOrder,this.animations=A.animations.slice(),this.userData=JSON.parse(JSON.stringify(A.userData)),t===!0)for(let n=0;n<A.children.length;n++){const r=A.children[n];this.add(r.clone())}return this}}qA.DEFAULT_UP=new Ee(0,1,0),qA.DEFAULT_MATRIX_AUTO_UPDATE=!0,qA.DEFAULT_MATRIX_WORLD_AUTO_UPDATE=!0;const de=new Ee,E=new Ee,J=new Ee,F=new Ee,sA=new Ee,MA=new Ee,dA=new Ee,PA=new Ee,OA=new Ee,Xe=new Ee;class Le{constructor(A=new Ee,t=new Ee,n=new Ee){this.a=A,this.b=t,this.c=n}static getNormal(A,t,n,r){r.subVectors(n,t),de.subVectors(A,t),r.cross(de);const a=r.lengthSq();return a>0?r.multiplyScalar(1/Math.sqrt(a)):r.set(0,0,0)}static getBarycoord(A,t,n,r,a){de.subVectors(r,t),E.subVectors(n,t),J.subVectors(A,t);const B=de.dot(de),Q=de.dot(E),y=de.dot(J),M=E.dot(E),K=E.dot(J),W=B*M-Q*Q;if(W===0)return a.set(0,0,0),null;const V=1/W,X=(M*y-Q*K)*V,iA=(B*K-Q*y)*V;return a.set(1-X-iA,iA,X)}static containsPoint(A,t,n,r){return this.getBarycoord(A,t,n,r,F)===null?!1:F.x>=0&&F.y>=0&&F.x+F.y<=1}static getInterpolation(A,t,n,r,a,B,Q,y){return this.getBarycoord(A,t,n,r,F)===null?(y.x=0,y.y=0,"z"in y&&(y.z=0),"w"in y&&(y.w=0),null):(y.setScalar(0),y.addScaledVector(a,F.x),y.addScaledVector(B,F.y),y.addScaledVector(Q,F.z),y)}static isFrontFacing(A,t,n,r){return de.subVectors(n,t),E.subVectors(A,t),de.cross(E).dot(r)<0}set(A,t,n){return this.a.copy(A),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(A,t,n,r){return this.a.copy(A[t]),this.b.copy(A[n]),this.c.copy(A[r]),this}setFromAttributeAndIndices(A,t,n,r){return this.a.fromBufferAttribute(A,t),this.b.fromBufferAttribute(A,n),this.c.fromBufferAttribute(A,r),this}clone(){return new this.constructor().copy(this)}copy(A){return this.a.copy(A.a),this.b.copy(A.b),this.c.copy(A.c),this}getArea(){return de.subVectors(this.c,this.b),E.subVectors(this.a,this.b),de.cross(E).length()*.5}getMidpoint(A){return A.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(A){return Le.getNormal(this.a,this.b,this.c,A)}getPlane(A){return A.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(A,t){return Le.getBarycoord(A,this.a,this.b,this.c,t)}getInterpolation(A,t,n,r,a){return Le.getInterpolation(A,this.a,this.b,this.c,t,n,r,a)}containsPoint(A){return Le.containsPoint(A,this.a,this.b,this.c)}isFrontFacing(A){return Le.isFrontFacing(this.a,this.b,this.c,A)}intersectsBox(A){return A.intersectsTriangle(this)}closestPointToPoint(A,t){const n=this.a,r=this.b,a=this.c;let B,Q;sA.subVectors(r,n),MA.subVectors(a,n),PA.subVectors(A,n);const y=sA.dot(PA),M=MA.dot(PA);if(y<=0&&M<=0)return t.copy(n);OA.subVectors(A,r);const K=sA.dot(OA),W=MA.dot(OA);if(K>=0&&W<=K)return t.copy(r);const V=y*W-K*M;if(V<=0&&y>=0&&K<=0)return B=y/(y-K),t.copy(n).addScaledVector(sA,B);Xe.subVectors(A,a);const X=sA.dot(Xe),iA=MA.dot(Xe);if(iA>=0&&X<=iA)return t.copy(a);const BA=X*M-y*iA;if(BA<=0&&M>=0&&iA<=0)return Q=M/(M-iA),t.copy(n).addScaledVector(MA,Q);const nA=K*iA-X*W;if(nA<=0&&W-K>=0&&X-iA>=0)return dA.subVectors(a,r),Q=(W-K)/(W-K+(X-iA)),t.copy(r).addScaledVector(dA,Q);const tA=1/(nA+BA+V);return B=BA*tA,Q=V*tA,t.copy(n).addScaledVector(sA,B).addScaledVector(MA,Q)}equals(A){return A.a.equals(this.a)&&A.b.equals(this.b)&&A.c.equals(this.c)}}const be={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},se={h:0,s:0,l:0},Ge={h:0,s:0,l:0};function je(I,A,t){return t<0&&(t+=1),t>1&&(t-=1),t<1/6?I+(A-I)*6*t:t<1/2?A:t<2/3?I+(A-I)*6*(2/3-t):I}class ve{constructor(A,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(A,t,n)}set(A,t,n){if(t===void 0&&n===void 0){const r=A;r&&r.isColor?this.copy(r):typeof r=="number"?this.setHex(r):typeof r=="string"&&this.setStyle(r)}else this.setRGB(A,t,n);return this}setScalar(A){return this.r=A,this.g=A,this.b=A,this}setHex(A,t=ii){return A=Math.floor(A),this.r=(A>>16&255)/255,this.g=(A>>8&255)/255,this.b=(A&255)/255,oo.toWorkingColorSpace(this,t),this}setRGB(A,t,n,r=oo.workingColorSpace){return this.r=A,this.g=t,this.b=n,oo.toWorkingColorSpace(this,r),this}setHSL(A,t,n,r=oo.workingColorSpace){if(A=ss(A,1),t=Co(t,0,1),n=Co(n,0,1),t===0)this.r=this.g=this.b=n;else{const a=n<=.5?n*(1+t):n+t-n*t,B=2*n-a;this.r=je(B,a,A+1/3),this.g=je(B,a,A),this.b=je(B,a,A-1/3)}return oo.toWorkingColorSpace(this,r),this}setStyle(A,t=ii){function n(a){a!==void 0&&parseFloat(a)<1&&console.warn("THREE.Color: Alpha component of "+A+" will be ignored.")}let r;if(r=/^(\w+)\(([^\)]*)\)/.exec(A)){let a;const B=r[1],Q=r[2];switch(B){case"rgb":case"rgba":if(a=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(Q))return n(a[4]),this.setRGB(Math.min(255,parseInt(a[1],10))/255,Math.min(255,parseInt(a[2],10))/255,Math.min(255,parseInt(a[3],10))/255,t);if(a=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(Q))return n(a[4]),this.setRGB(Math.min(100,parseInt(a[1],10))/100,Math.min(100,parseInt(a[2],10))/100,Math.min(100,parseInt(a[3],10))/100,t);break;case"hsl":case"hsla":if(a=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(Q))return n(a[4]),this.setHSL(parseFloat(a[1])/360,parseFloat(a[2])/100,parseFloat(a[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+A)}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(A)){const a=r[1],B=a.length;if(B===3)return this.setRGB(parseInt(a.charAt(0),16)/15,parseInt(a.charAt(1),16)/15,parseInt(a.charAt(2),16)/15,t);if(B===6)return this.setHex(parseInt(a,16),t);console.warn("THREE.Color: Invalid hex color "+A)}else if(A&&A.length>0)return this.setColorName(A,t);return this}setColorName(A,t=ii){const n=be[A.toLowerCase()];return n!==void 0?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+A),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(A){return this.r=A.r,this.g=A.g,this.b=A.b,this}copySRGBToLinear(A){return this.r=Hs(A.r),this.g=Hs(A.g),this.b=Hs(A.b),this}copyLinearToSRGB(A){return this.r=vo(A.r),this.g=vo(A.g),this.b=vo(A.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(A=ii){return oo.fromWorkingColorSpace(Ve.copy(this),A),Math.round(Co(Ve.r*255,0,255))*65536+Math.round(Co(Ve.g*255,0,255))*256+Math.round(Co(Ve.b*255,0,255))}getHexString(A=ii){return("000000"+this.getHex(A).toString(16)).slice(-6)}getHSL(A,t=oo.workingColorSpace){oo.fromWorkingColorSpace(Ve.copy(this),t);const n=Ve.r,r=Ve.g,a=Ve.b,B=Math.max(n,r,a),Q=Math.min(n,r,a);let y,M;const K=(Q+B)/2;if(Q===B)y=0,M=0;else{const W=B-Q;switch(M=K<=.5?W/(B+Q):W/(2-B-Q),B){case n:y=(r-a)/W+(r<a?6:0);break;case r:y=(a-n)/W+2;break;case a:y=(n-r)/W+4;break}y/=6}return A.h=y,A.s=M,A.l=K,A}getRGB(A,t=oo.workingColorSpace){return oo.fromWorkingColorSpace(Ve.copy(this),t),A.r=Ve.r,A.g=Ve.g,A.b=Ve.b,A}getStyle(A=ii){oo.fromWorkingColorSpace(Ve.copy(this),A);const t=Ve.r,n=Ve.g,r=Ve.b;return A!==ii?`color(${A} ${t.toFixed(3)} ${n.toFixed(3)} ${r.toFixed(3)})`:`rgb(${Math.round(t*255)},${Math.round(n*255)},${Math.round(r*255)})`}offsetHSL(A,t,n){return this.getHSL(se),this.setHSL(se.h+A,se.s+t,se.l+n)}add(A){return this.r+=A.r,this.g+=A.g,this.b+=A.b,this}addColors(A,t){return this.r=A.r+t.r,this.g=A.g+t.g,this.b=A.b+t.b,this}addScalar(A){return this.r+=A,this.g+=A,this.b+=A,this}sub(A){return this.r=Math.max(0,this.r-A.r),this.g=Math.max(0,this.g-A.g),this.b=Math.max(0,this.b-A.b),this}multiply(A){return this.r*=A.r,this.g*=A.g,this.b*=A.b,this}multiplyScalar(A){return this.r*=A,this.g*=A,this.b*=A,this}lerp(A,t){return this.r+=(A.r-this.r)*t,this.g+=(A.g-this.g)*t,this.b+=(A.b-this.b)*t,this}lerpColors(A,t,n){return this.r=A.r+(t.r-A.r)*n,this.g=A.g+(t.g-A.g)*n,this.b=A.b+(t.b-A.b)*n,this}lerpHSL(A,t){this.getHSL(se),A.getHSL(Ge);const n=qn(se.h,Ge.h,t),r=qn(se.s,Ge.s,t),a=qn(se.l,Ge.l,t);return this.setHSL(n,r,a),this}setFromVector3(A){return this.r=A.x,this.g=A.y,this.b=A.z,this}applyMatrix3(A){const t=this.r,n=this.g,r=this.b,a=A.elements;return this.r=a[0]*t+a[3]*n+a[6]*r,this.g=a[1]*t+a[4]*n+a[7]*r,this.b=a[2]*t+a[5]*n+a[8]*r,this}equals(A){return A.r===this.r&&A.g===this.g&&A.b===this.b}fromArray(A,t=0){return this.r=A[t],this.g=A[t+1],this.b=A[t+2],this}toArray(A=[],t=0){return A[t]=this.r,A[t+1]=this.g,A[t+2]=this.b,A}fromBufferAttribute(A,t){return this.r=A.getX(t),this.g=A.getY(t),this.b=A.getZ(t),this}toJSON(){return this.getHex()}*[Symbol.iterator](){yield this.r,yield this.g,yield this.b}}const Ve=new ve;ve.NAMES=be;let Ae=0;class FA extends Xs{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Ae++}),this.uuid=Yo(),this.name="",this.type="Material",this.blending=D,this.side=z,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.alphaHash=!1,this.blendSrc=CA,this.blendDst=QA,this.blendEquation=l,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.blendColor=new ve(0,0,0),this.blendAlpha=0,this.depthFunc=ye,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Io,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=Te,this.stencilZFail=Te,this.stencilZPass=Te,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(A){this._alphaTest>0!=A>0&&this.version++,this._alphaTest=A}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(A){if(A!==void 0)for(const t in A){const n=A[t];if(n===void 0){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}const r=this[t];if(r===void 0){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}r&&r.isColor?r.set(n):r&&r.isVector3&&n&&n.isVector3?r.copy(n):this[t]=n}}toJSON(A){const t=A===void 0||typeof A=="string";t&&(A={textures:{},images:{}});const n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity!==void 0&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(A).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(A).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(A).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.dispersion!==void 0&&(n.dispersion=this.dispersion),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(A).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(A).uuid),this.anisotropy!==void 0&&(n.anisotropy=this.anisotropy),this.anisotropyRotation!==void 0&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(A).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(A).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(A).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(A).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(A).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(A).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(A).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(A).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(A).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(A).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(A).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(A).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(A).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(A).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(A).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(A).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapRotation!==void 0&&(n.envMapRotation=this.envMapRotation.toArray()),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(A).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(A).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(A).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==D&&(n.blending=this.blending),this.side!==z&&(n.side=this.side),this.vertexColors===!0&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=!0),this.blendSrc!==CA&&(n.blendSrc=this.blendSrc),this.blendDst!==QA&&(n.blendDst=this.blendDst),this.blendEquation!==l&&(n.blendEquation=this.blendEquation),this.blendSrcAlpha!==null&&(n.blendSrcAlpha=this.blendSrcAlpha),this.blendDstAlpha!==null&&(n.blendDstAlpha=this.blendDstAlpha),this.blendEquationAlpha!==null&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),this.blendAlpha!==0&&(n.blendAlpha=this.blendAlpha),this.depthFunc!==ye&&(n.depthFunc=this.depthFunc),this.depthTest===!1&&(n.depthTest=this.depthTest),this.depthWrite===!1&&(n.depthWrite=this.depthWrite),this.colorWrite===!1&&(n.colorWrite=this.colorWrite),this.stencilWriteMask!==255&&(n.stencilWriteMask=this.stencilWriteMask),this.stencilFunc!==Io&&(n.stencilFunc=this.stencilFunc),this.stencilRef!==0&&(n.stencilRef=this.stencilRef),this.stencilFuncMask!==255&&(n.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==Te&&(n.stencilFail=this.stencilFail),this.stencilZFail!==Te&&(n.stencilZFail=this.stencilZFail),this.stencilZPass!==Te&&(n.stencilZPass=this.stencilZPass),this.stencilWrite===!0&&(n.stencilWrite=this.stencilWrite),this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaHash===!0&&(n.alphaHash=!0),this.alphaToCoverage===!0&&(n.alphaToCoverage=!0),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=!0),this.forceSinglePass===!0&&(n.forceSinglePass=!0),this.wireframe===!0&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=!0),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function r(a){const B=[];for(const Q in a){const y=a[Q];delete y.metadata,B.push(y)}return B}if(t){const a=r(A.textures),B=r(A.images);a.length>0&&(n.textures=a),B.length>0&&(n.images=B)}return n}clone(){return new this.constructor().copy(this)}copy(A){this.name=A.name,this.blending=A.blending,this.side=A.side,this.vertexColors=A.vertexColors,this.opacity=A.opacity,this.transparent=A.transparent,this.blendSrc=A.blendSrc,this.blendDst=A.blendDst,this.blendEquation=A.blendEquation,this.blendSrcAlpha=A.blendSrcAlpha,this.blendDstAlpha=A.blendDstAlpha,this.blendEquationAlpha=A.blendEquationAlpha,this.blendColor.copy(A.blendColor),this.blendAlpha=A.blendAlpha,this.depthFunc=A.depthFunc,this.depthTest=A.depthTest,this.depthWrite=A.depthWrite,this.stencilWriteMask=A.stencilWriteMask,this.stencilFunc=A.stencilFunc,this.stencilRef=A.stencilRef,this.stencilFuncMask=A.stencilFuncMask,this.stencilFail=A.stencilFail,this.stencilZFail=A.stencilZFail,this.stencilZPass=A.stencilZPass,this.stencilWrite=A.stencilWrite;const t=A.clippingPlanes;let n=null;if(t!==null){const r=t.length;n=new Array(r);for(let a=0;a!==r;++a)n[a]=t[a].clone()}return this.clippingPlanes=n,this.clipIntersection=A.clipIntersection,this.clipShadows=A.clipShadows,this.shadowSide=A.shadowSide,this.colorWrite=A.colorWrite,this.precision=A.precision,this.polygonOffset=A.polygonOffset,this.polygonOffsetFactor=A.polygonOffsetFactor,this.polygonOffsetUnits=A.polygonOffsetUnits,this.dithering=A.dithering,this.alphaTest=A.alphaTest,this.alphaHash=A.alphaHash,this.alphaToCoverage=A.alphaToCoverage,this.premultipliedAlpha=A.premultipliedAlpha,this.forceSinglePass=A.forceSinglePass,this.visible=A.visible,this.toneMapped=A.toneMapped,this.userData=JSON.parse(JSON.stringify(A.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(A){A===!0&&this.version++}}class At extends FA{constructor(A){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new ve(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Er,this.combine=gA,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.lightMap=A.lightMap,this.lightMapIntensity=A.lightMapIntensity,this.aoMap=A.aoMap,this.aoMapIntensity=A.aoMapIntensity,this.specularMap=A.specularMap,this.alphaMap=A.alphaMap,this.envMap=A.envMap,this.envMapRotation.copy(A.envMapRotation),this.combine=A.combine,this.reflectivity=A.reflectivity,this.refractionRatio=A.refractionRatio,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.wireframeLinecap=A.wireframeLinecap,this.wireframeLinejoin=A.wireframeLinejoin,this.fog=A.fog,this}}const Pe=at();function at(){const I=new ArrayBuffer(4),A=new Float32Array(I),t=new Uint32Array(I),n=new Uint32Array(512),r=new Uint32Array(512);for(let y=0;y<256;++y){const M=y-127;M<-27?(n[y]=0,n[y|256]=32768,r[y]=24,r[y|256]=24):M<-14?(n[y]=1024>>-M-14,n[y|256]=1024>>-M-14|32768,r[y]=-M-1,r[y|256]=-M-1):M<=15?(n[y]=M+15<<10,n[y|256]=M+15<<10|32768,r[y]=13,r[y|256]=13):M<128?(n[y]=31744,n[y|256]=64512,r[y]=24,r[y|256]=24):(n[y]=31744,n[y|256]=64512,r[y]=13,r[y|256]=13)}const a=new Uint32Array(2048),B=new Uint32Array(64),Q=new Uint32Array(64);for(let y=1;y<1024;++y){let M=y<<13,K=0;for(;!(M&8388608);)M<<=1,K-=8388608;M&=-8388609,K+=947912704,a[y]=M|K}for(let y=1024;y<2048;++y)a[y]=939524096+(y-1024<<13);for(let y=1;y<31;++y)B[y]=y<<23;B[31]=1199570944,B[32]=2147483648;for(let y=33;y<63;++y)B[y]=2147483648+(y-32<<23);B[63]=3347054592;for(let y=1;y<64;++y)y!==32&&(Q[y]=1024);return{floatView:A,uint32View:t,baseTable:n,shiftTable:r,mantissaTable:a,exponentTable:B,offsetTable:Q}}function et(I){Math.abs(I)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),I=Co(I,-65504,65504),Pe.floatView[0]=I;const A=Pe.uint32View[0],t=A>>23&511;return Pe.baseTable[t]+((A&8388607)>>Pe.shiftTable[t])}function rt(I){const A=I>>10;return Pe.uint32View[0]=Pe.mantissaTable[Pe.offsetTable[A]+(I&1023)]+Pe.exponentTable[A],Pe.floatView[0]}const Bt={toHalfFloat:et,fromHalfFloat:rt},Dt=new Ee,ce=new Ot;class oe{constructor(A,t,n=!1){if(Array.isArray(A))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=A,this.itemSize=t,this.count=A!==void 0?A.length/t:0,this.normalized=n,this.usage=vi,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.gpuType=hr,this.version=0}onUploadCallback(){}set needsUpdate(A){A===!0&&this.version++}get updateRange(){return MI("THREE.BufferAttribute: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."),this._updateRange}setUsage(A){return this.usage=A,this}addUpdateRange(A,t){this.updateRanges.push({start:A,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(A){return this.name=A.name,this.array=new A.array.constructor(A.array),this.itemSize=A.itemSize,this.count=A.count,this.normalized=A.normalized,this.usage=A.usage,this.gpuType=A.gpuType,this}copyAt(A,t,n){A*=this.itemSize,n*=t.itemSize;for(let r=0,a=this.itemSize;r<a;r++)this.array[A+r]=t.array[n+r];return this}copyArray(A){return this.array.set(A),this}applyMatrix3(A){if(this.itemSize===2)for(let t=0,n=this.count;t<n;t++)ce.fromBufferAttribute(this,t),ce.applyMatrix3(A),this.setXY(t,ce.x,ce.y);else if(this.itemSize===3)for(let t=0,n=this.count;t<n;t++)Dt.fromBufferAttribute(this,t),Dt.applyMatrix3(A),this.setXYZ(t,Dt.x,Dt.y,Dt.z);return this}applyMatrix4(A){for(let t=0,n=this.count;t<n;t++)Dt.fromBufferAttribute(this,t),Dt.applyMatrix4(A),this.setXYZ(t,Dt.x,Dt.y,Dt.z);return this}applyNormalMatrix(A){for(let t=0,n=this.count;t<n;t++)Dt.fromBufferAttribute(this,t),Dt.applyNormalMatrix(A),this.setXYZ(t,Dt.x,Dt.y,Dt.z);return this}transformDirection(A){for(let t=0,n=this.count;t<n;t++)Dt.fromBufferAttribute(this,t),Dt.transformDirection(A),this.setXYZ(t,Dt.x,Dt.y,Dt.z);return this}set(A,t=0){return this.array.set(A,t),this}getComponent(A,t){let n=this.array[A*this.itemSize+t];return this.normalized&&(n=Dn(n,this.array)),n}setComponent(A,t,n){return this.normalized&&(n=fA(n,this.array)),this.array[A*this.itemSize+t]=n,this}getX(A){let t=this.array[A*this.itemSize];return this.normalized&&(t=Dn(t,this.array)),t}setX(A,t){return this.normalized&&(t=fA(t,this.array)),this.array[A*this.itemSize]=t,this}getY(A){let t=this.array[A*this.itemSize+1];return this.normalized&&(t=Dn(t,this.array)),t}setY(A,t){return this.normalized&&(t=fA(t,this.array)),this.array[A*this.itemSize+1]=t,this}getZ(A){let t=this.array[A*this.itemSize+2];return this.normalized&&(t=Dn(t,this.array)),t}setZ(A,t){return this.normalized&&(t=fA(t,this.array)),this.array[A*this.itemSize+2]=t,this}getW(A){let t=this.array[A*this.itemSize+3];return this.normalized&&(t=Dn(t,this.array)),t}setW(A,t){return this.normalized&&(t=fA(t,this.array)),this.array[A*this.itemSize+3]=t,this}setXY(A,t,n){return A*=this.itemSize,this.normalized&&(t=fA(t,this.array),n=fA(n,this.array)),this.array[A+0]=t,this.array[A+1]=n,this}setXYZ(A,t,n,r){return A*=this.itemSize,this.normalized&&(t=fA(t,this.array),n=fA(n,this.array),r=fA(r,this.array)),this.array[A+0]=t,this.array[A+1]=n,this.array[A+2]=r,this}setXYZW(A,t,n,r,a){return A*=this.itemSize,this.normalized&&(t=fA(t,this.array),n=fA(n,this.array),r=fA(r,this.array),a=fA(a,this.array)),this.array[A+0]=t,this.array[A+1]=n,this.array[A+2]=r,this.array[A+3]=a,this}onUpload(A){return this.onUploadCallback=A,this}clone(){return new this.constructor(this.array,this.itemSize).copy(this)}toJSON(){const A={itemSize:this.itemSize,type:this.array.constructor.name,array:Array.from(this.array),normalized:this.normalized};return this.name!==""&&(A.name=this.name),this.usage!==vi&&(A.usage=this.usage),A}}class it extends oe{constructor(A,t,n){super(new Int8Array(A),t,n)}}class $t extends oe{constructor(A,t,n){super(new Uint8Array(A),t,n)}}class ht extends oe{constructor(A,t,n){super(new Uint8ClampedArray(A),t,n)}}class mt extends oe{constructor(A,t,n){super(new Int16Array(A),t,n)}}class mi extends oe{constructor(A,t,n){super(new Uint16Array(A),t,n)}}class Jt extends oe{constructor(A,t,n){super(new Int32Array(A),t,n)}}class Bi extends oe{constructor(A,t,n){super(new Uint32Array(A),t,n)}}class _t extends oe{constructor(A,t,n){super(new Uint16Array(A),t,n),this.isFloat16BufferAttribute=!0}getX(A){let t=rt(this.array[A*this.itemSize]);return this.normalized&&(t=Dn(t,this.array)),t}setX(A,t){return this.normalized&&(t=fA(t,this.array)),this.array[A*this.itemSize]=et(t),this}getY(A){let t=rt(this.array[A*this.itemSize+1]);return this.normalized&&(t=Dn(t,this.array)),t}setY(A,t){return this.normalized&&(t=fA(t,this.array)),this.array[A*this.itemSize+1]=et(t),this}getZ(A){let t=rt(this.array[A*this.itemSize+2]);return this.normalized&&(t=Dn(t,this.array)),t}setZ(A,t){return this.normalized&&(t=fA(t,this.array)),this.array[A*this.itemSize+2]=et(t),this}getW(A){let t=rt(this.array[A*this.itemSize+3]);return this.normalized&&(t=Dn(t,this.array)),t}setW(A,t){return this.normalized&&(t=fA(t,this.array)),this.array[A*this.itemSize+3]=et(t),this}setXY(A,t,n){return A*=this.itemSize,this.normalized&&(t=fA(t,this.array),n=fA(n,this.array)),this.array[A+0]=et(t),this.array[A+1]=et(n),this}setXYZ(A,t,n,r){return A*=this.itemSize,this.normalized&&(t=fA(t,this.array),n=fA(n,this.array),r=fA(r,this.array)),this.array[A+0]=et(t),this.array[A+1]=et(n),this.array[A+2]=et(r),this}setXYZW(A,t,n,r,a){return A*=this.itemSize,this.normalized&&(t=fA(t,this.array),n=fA(n,this.array),r=fA(r,this.array),a=fA(a,this.array)),this.array[A+0]=et(t),this.array[A+1]=et(n),this.array[A+2]=et(r),this.array[A+3]=et(a),this}}class vt extends oe{constructor(A,t,n){super(new Float32Array(A),t,n)}}let yn=0;const Xn=new tn,Gr=new qA,co=new Ee,Ar=new To,Fr=new To,an=new Ee;class li extends Xs{constructor(){super(),this.isBufferGeometry=!0,Object.defineProperty(this,"id",{value:yn++}),this.uuid=Yo(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.morphTargetsRelative=!1,this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0},this.userData={}}getIndex(){return this.index}setIndex(A){return Array.isArray(A)?this.index=new(Na(A)?Bi:mi)(A,1):this.index=A,this}getAttribute(A){return this.attributes[A]}setAttribute(A,t){return this.attributes[A]=t,this}deleteAttribute(A){return delete this.attributes[A],this}hasAttribute(A){return this.attributes[A]!==void 0}addGroup(A,t,n=0){this.groups.push({start:A,count:t,materialIndex:n})}clearGroups(){this.groups=[]}setDrawRange(A,t){this.drawRange.start=A,this.drawRange.count=t}applyMatrix4(A){const t=this.attributes.position;t!==void 0&&(t.applyMatrix4(A),t.needsUpdate=!0);const n=this.attributes.normal;if(n!==void 0){const a=new Bo().getNormalMatrix(A);n.applyNormalMatrix(a),n.needsUpdate=!0}const r=this.attributes.tangent;return r!==void 0&&(r.transformDirection(A),r.needsUpdate=!0),this.boundingBox!==null&&this.computeBoundingBox(),this.boundingSphere!==null&&this.computeBoundingSphere(),this}applyQuaternion(A){return Xn.makeRotationFromQuaternion(A),this.applyMatrix4(Xn),this}rotateX(A){return Xn.makeRotationX(A),this.applyMatrix4(Xn),this}rotateY(A){return Xn.makeRotationY(A),this.applyMatrix4(Xn),this}rotateZ(A){return Xn.makeRotationZ(A),this.applyMatrix4(Xn),this}translate(A,t,n){return Xn.makeTranslation(A,t,n),this.applyMatrix4(Xn),this}scale(A,t,n){return Xn.makeScale(A,t,n),this.applyMatrix4(Xn),this}lookAt(A){return Gr.lookAt(A),Gr.updateMatrix(),this.applyMatrix4(Gr.matrix),this}center(){return this.computeBoundingBox(),this.boundingBox.getCenter(co).negate(),this.translate(co.x,co.y,co.z),this}setFromPoints(A){const t=[];for(let n=0,r=A.length;n<r;n++){const a=A[n];t.push(a.x,a.y,a.z||0)}return this.setAttribute("position",new vt(t,3)),this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new To);const A=this.attributes.position,t=this.morphAttributes.position;if(A&&A.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new Ee(-1/0,-1/0,-1/0),new Ee(1/0,1/0,1/0));return}if(A!==void 0){if(this.boundingBox.setFromBufferAttribute(A),t)for(let n=0,r=t.length;n<r;n++){const a=t[n];Ar.setFromBufferAttribute(a),this.morphTargetsRelative?(an.addVectors(this.boundingBox.min,Ar.min),this.boundingBox.expandByPoint(an),an.addVectors(this.boundingBox.max,Ar.max),this.boundingBox.expandByPoint(an)):(this.boundingBox.expandByPoint(Ar.min),this.boundingBox.expandByPoint(Ar.max))}}else this.boundingBox.makeEmpty();(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new qr);const A=this.attributes.position,t=this.morphAttributes.position;if(A&&A.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere.",this),this.boundingSphere.set(new Ee,1/0);return}if(A){const n=this.boundingSphere.center;if(Ar.setFromBufferAttribute(A),t)for(let a=0,B=t.length;a<B;a++){const Q=t[a];Fr.setFromBufferAttribute(Q),this.morphTargetsRelative?(an.addVectors(Ar.min,Fr.min),Ar.expandByPoint(an),an.addVectors(Ar.max,Fr.max),Ar.expandByPoint(an)):(Ar.expandByPoint(Fr.min),Ar.expandByPoint(Fr.max))}Ar.getCenter(n);let r=0;for(let a=0,B=A.count;a<B;a++)an.fromBufferAttribute(A,a),r=Math.max(r,n.distanceToSquared(an));if(t)for(let a=0,B=t.length;a<B;a++){const Q=t[a],y=this.morphTargetsRelative;for(let M=0,K=Q.count;M<K;M++)an.fromBufferAttribute(Q,M),y&&(co.fromBufferAttribute(A,M),an.add(co)),r=Math.max(r,n.distanceToSquared(an))}this.boundingSphere.radius=Math.sqrt(r),isNaN(this.boundingSphere.radius)&&console.error('THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The "position" attribute is likely to have NaN values.',this)}}computeTangents(){const A=this.index,t=this.attributes;if(A===null||t.position===void 0||t.normal===void 0||t.uv===void 0){console.error("THREE.BufferGeometry: .computeTangents() failed. Missing required attributes (index, position, normal or uv)");return}const n=t.position,r=t.normal,a=t.uv;this.hasAttribute("tangent")===!1&&this.setAttribute("tangent",new oe(new Float32Array(4*n.count),4));const B=this.getAttribute("tangent"),Q=[],y=[];for(let Je=0;Je<n.count;Je++)Q[Je]=new Ee,y[Je]=new Ee;const M=new Ee,K=new Ee,W=new Ee,V=new Ot,X=new Ot,iA=new Ot,BA=new Ee,nA=new Ee;function tA(Je,zA,KA){M.fromBufferAttribute(n,Je),K.fromBufferAttribute(n,zA),W.fromBufferAttribute(n,KA),V.fromBufferAttribute(a,Je),X.fromBufferAttribute(a,zA),iA.fromBufferAttribute(a,KA),K.sub(M),W.sub(M),X.sub(V),iA.sub(V);const tt=1/(X.x*iA.y-iA.x*X.y);isFinite(tt)&&(BA.copy(K).multiplyScalar(iA.y).addScaledVector(W,-X.y).multiplyScalar(tt),nA.copy(W).multiplyScalar(X.x).addScaledVector(K,-iA.x).multiplyScalar(tt),Q[Je].add(BA),Q[zA].add(BA),Q[KA].add(BA),y[Je].add(nA),y[zA].add(nA),y[KA].add(nA))}let RA=this.groups;RA.length===0&&(RA=[{start:0,count:A.count}]);for(let Je=0,zA=RA.length;Je<zA;++Je){const KA=RA[Je],tt=KA.start,Rt=KA.count;for(let Ze=tt,yt=tt+Rt;Ze<yt;Ze+=3)tA(A.getX(Ze+0),A.getX(Ze+1),A.getX(Ze+2))}const mA=new Ee,kA=new Ee,_e=new Ee,ae=new Ee;function fe(Je){_e.fromBufferAttribute(r,Je),ae.copy(_e);const zA=Q[Je];mA.copy(zA),mA.sub(_e.multiplyScalar(_e.dot(zA))).normalize(),kA.crossVectors(ae,zA);const tt=kA.dot(y[Je])<0?-1:1;B.setXYZW(Je,mA.x,mA.y,mA.z,tt)}for(let Je=0,zA=RA.length;Je<zA;++Je){const KA=RA[Je],tt=KA.start,Rt=KA.count;for(let Ze=tt,yt=tt+Rt;Ze<yt;Ze+=3)fe(A.getX(Ze+0)),fe(A.getX(Ze+1)),fe(A.getX(Ze+2))}}computeVertexNormals(){const A=this.index,t=this.getAttribute("position");if(t!==void 0){let n=this.getAttribute("normal");if(n===void 0)n=new oe(new Float32Array(t.count*3),3),this.setAttribute("normal",n);else for(let V=0,X=n.count;V<X;V++)n.setXYZ(V,0,0,0);const r=new Ee,a=new Ee,B=new Ee,Q=new Ee,y=new Ee,M=new Ee,K=new Ee,W=new Ee;if(A)for(let V=0,X=A.count;V<X;V+=3){const iA=A.getX(V+0),BA=A.getX(V+1),nA=A.getX(V+2);r.fromBufferAttribute(t,iA),a.fromBufferAttribute(t,BA),B.fromBufferAttribute(t,nA),K.subVectors(B,a),W.subVectors(r,a),K.cross(W),Q.fromBufferAttribute(n,iA),y.fromBufferAttribute(n,BA),M.fromBufferAttribute(n,nA),Q.add(K),y.add(K),M.add(K),n.setXYZ(iA,Q.x,Q.y,Q.z),n.setXYZ(BA,y.x,y.y,y.z),n.setXYZ(nA,M.x,M.y,M.z)}else for(let V=0,X=t.count;V<X;V+=3)r.fromBufferAttribute(t,V+0),a.fromBufferAttribute(t,V+1),B.fromBufferAttribute(t,V+2),K.subVectors(B,a),W.subVectors(r,a),K.cross(W),n.setXYZ(V+0,K.x,K.y,K.z),n.setXYZ(V+1,K.x,K.y,K.z),n.setXYZ(V+2,K.x,K.y,K.z);this.normalizeNormals(),n.needsUpdate=!0}}normalizeNormals(){const A=this.attributes.normal;for(let t=0,n=A.count;t<n;t++)an.fromBufferAttribute(A,t),an.normalize(),A.setXYZ(t,an.x,an.y,an.z)}toNonIndexed(){function A(Q,y){const M=Q.array,K=Q.itemSize,W=Q.normalized,V=new M.constructor(y.length*K);let X=0,iA=0;for(let BA=0,nA=y.length;BA<nA;BA++){Q.isInterleavedBufferAttribute?X=y[BA]*Q.data.stride+Q.offset:X=y[BA]*K;for(let tA=0;tA<K;tA++)V[iA++]=M[X++]}return new oe(V,K,W)}if(this.index===null)return console.warn("THREE.BufferGeometry.toNonIndexed(): BufferGeometry is already non-indexed."),this;const t=new li,n=this.index.array,r=this.attributes;for(const Q in r){const y=r[Q],M=A(y,n);t.setAttribute(Q,M)}const a=this.morphAttributes;for(const Q in a){const y=[],M=a[Q];for(let K=0,W=M.length;K<W;K++){const V=M[K],X=A(V,n);y.push(X)}t.morphAttributes[Q]=y}t.morphTargetsRelative=this.morphTargetsRelative;const B=this.groups;for(let Q=0,y=B.length;Q<y;Q++){const M=B[Q];t.addGroup(M.start,M.count,M.materialIndex)}return t}toJSON(){const A={metadata:{version:4.6,type:"BufferGeometry",generator:"BufferGeometry.toJSON"}};if(A.uuid=this.uuid,A.type=this.type,this.name!==""&&(A.name=this.name),Object.keys(this.userData).length>0&&(A.userData=this.userData),this.parameters!==void 0){const y=this.parameters;for(const M in y)y[M]!==void 0&&(A[M]=y[M]);return A}A.data={attributes:{}};const t=this.index;t!==null&&(A.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});const n=this.attributes;for(const y in n){const M=n[y];A.data.attributes[y]=M.toJSON(A.data)}const r={};let a=!1;for(const y in this.morphAttributes){const M=this.morphAttributes[y],K=[];for(let W=0,V=M.length;W<V;W++){const X=M[W];K.push(X.toJSON(A.data))}K.length>0&&(r[y]=K,a=!0)}a&&(A.data.morphAttributes=r,A.data.morphTargetsRelative=this.morphTargetsRelative);const B=this.groups;B.length>0&&(A.data.groups=JSON.parse(JSON.stringify(B)));const Q=this.boundingSphere;return Q!==null&&(A.data.boundingSphere={center:Q.center.toArray(),radius:Q.radius}),A}clone(){return new this.constructor().copy(this)}copy(A){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;const t={};this.name=A.name;const n=A.index;n!==null&&this.setIndex(n.clone(t));const r=A.attributes;for(const M in r){const K=r[M];this.setAttribute(M,K.clone(t))}const a=A.morphAttributes;for(const M in a){const K=[],W=a[M];for(let V=0,X=W.length;V<X;V++)K.push(W[V].clone(t));this.morphAttributes[M]=K}this.morphTargetsRelative=A.morphTargetsRelative;const B=A.groups;for(let M=0,K=B.length;M<K;M++){const W=B[M];this.addGroup(W.start,W.count,W.materialIndex)}const Q=A.boundingBox;Q!==null&&(this.boundingBox=Q.clone());const y=A.boundingSphere;return y!==null&&(this.boundingSphere=y.clone()),this.drawRange.start=A.drawRange.start,this.drawRange.count=A.drawRange.count,this.userData=A.userData,this}dispose(){this.dispatchEvent({type:"dispose"})}}const Zt=new tn,yi=new Tr,Oi=new qr,to=new Ee,io=new Ee,bo=new Ee,So=new Ee,he=new Ee,fs=new Ee,fn=new Ot,ko=new Ot,cn=new Ot,nr=new Ee,wn=new Ee,qi=new Ee,Rn=new Ee,Es=new Ee;class mo extends qA{constructor(A=new li,t=new At){super(),this.isMesh=!0,this.type="Mesh",this.geometry=A,this.material=t,this.updateMorphTargets()}copy(A,t){return super.copy(A,t),A.morphTargetInfluences!==void 0&&(this.morphTargetInfluences=A.morphTargetInfluences.slice()),A.morphTargetDictionary!==void 0&&(this.morphTargetDictionary=Object.assign({},A.morphTargetDictionary)),this.material=Array.isArray(A.material)?A.material.slice():A.material,this.geometry=A.geometry,this}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,B=r.length;a<B;a++){const Q=r[a].name||String(a);this.morphTargetInfluences.push(0),this.morphTargetDictionary[Q]=a}}}}getVertexPosition(A,t){const n=this.geometry,r=n.attributes.position,a=n.morphAttributes.position,B=n.morphTargetsRelative;t.fromBufferAttribute(r,A);const Q=this.morphTargetInfluences;if(a&&Q){fs.set(0,0,0);for(let y=0,M=a.length;y<M;y++){const K=Q[y],W=a[y];K!==0&&(he.fromBufferAttribute(W,A),B?fs.addScaledVector(he,K):fs.addScaledVector(he.sub(t),K))}t.add(fs)}return t}raycast(A,t){const n=this.geometry,r=this.material,a=this.matrixWorld;r!==void 0&&(n.boundingSphere===null&&n.computeBoundingSphere(),Oi.copy(n.boundingSphere),Oi.applyMatrix4(a),yi.copy(A.ray).recast(A.near),!(Oi.containsPoint(yi.origin)===!1&&(yi.intersectSphere(Oi,to)===null||yi.origin.distanceToSquared(to)>(A.far-A.near)**2))&&(Zt.copy(a).invert(),yi.copy(A.ray).applyMatrix4(Zt),!(n.boundingBox!==null&&yi.intersectsBox(n.boundingBox)===!1)&&this._computeIntersections(A,t,yi)))}_computeIntersections(A,t,n){let r;const a=this.geometry,B=this.material,Q=a.index,y=a.attributes.position,M=a.attributes.uv,K=a.attributes.uv1,W=a.attributes.normal,V=a.groups,X=a.drawRange;if(Q!==null)if(Array.isArray(B))for(let iA=0,BA=V.length;iA<BA;iA++){const nA=V[iA],tA=B[nA.materialIndex],RA=Math.max(nA.start,X.start),mA=Math.min(Q.count,Math.min(nA.start+nA.count,X.start+X.count));for(let kA=RA,_e=mA;kA<_e;kA+=3){const ae=Q.getX(kA),fe=Q.getX(kA+1),Je=Q.getX(kA+2);r=bA(this,tA,A,n,M,K,W,ae,fe,Je),r&&(r.faceIndex=Math.floor(kA/3),r.face.materialIndex=nA.materialIndex,t.push(r))}}else{const iA=Math.max(0,X.start),BA=Math.min(Q.count,X.start+X.count);for(let nA=iA,tA=BA;nA<tA;nA+=3){const RA=Q.getX(nA),mA=Q.getX(nA+1),kA=Q.getX(nA+2);r=bA(this,B,A,n,M,K,W,RA,mA,kA),r&&(r.faceIndex=Math.floor(nA/3),t.push(r))}}else if(y!==void 0)if(Array.isArray(B))for(let iA=0,BA=V.length;iA<BA;iA++){const nA=V[iA],tA=B[nA.materialIndex],RA=Math.max(nA.start,X.start),mA=Math.min(y.count,Math.min(nA.start+nA.count,X.start+X.count));for(let kA=RA,_e=mA;kA<_e;kA+=3){const ae=kA,fe=kA+1,Je=kA+2;r=bA(this,tA,A,n,M,K,W,ae,fe,Je),r&&(r.faceIndex=Math.floor(kA/3),r.face.materialIndex=nA.materialIndex,t.push(r))}}else{const iA=Math.max(0,X.start),BA=Math.min(y.count,X.start+X.count);for(let nA=iA,tA=BA;nA<tA;nA+=3){const RA=nA,mA=nA+1,kA=nA+2;r=bA(this,B,A,n,M,K,W,RA,mA,kA),r&&(r.faceIndex=Math.floor(nA/3),t.push(r))}}}}function Se(I,A,t,n,r,a,B,Q){let y;if(A.side===_?y=n.intersectTriangle(B,a,r,!0,Q):y=n.intersectTriangle(r,a,B,A.side===z,Q),y===null)return null;Es.copy(Q),Es.applyMatrix4(I.matrixWorld);const M=t.ray.origin.distanceTo(Es);return M<t.near||M>t.far?null:{distance:M,point:Es.clone(),object:I}}function bA(I,A,t,n,r,a,B,Q,y,M){I.getVertexPosition(Q,io),I.getVertexPosition(y,bo),I.getVertexPosition(M,So);const K=Se(I,A,t,n,io,bo,So,Rn);if(K){r&&(fn.fromBufferAttribute(r,Q),ko.fromBufferAttribute(r,y),cn.fromBufferAttribute(r,M),K.uv=Le.getInterpolation(Rn,io,bo,So,fn,ko,cn,new Ot)),a&&(fn.fromBufferAttribute(a,Q),ko.fromBufferAttribute(a,y),cn.fromBufferAttribute(a,M),K.uv1=Le.getInterpolation(Rn,io,bo,So,fn,ko,cn,new Ot)),B&&(nr.fromBufferAttribute(B,Q),wn.fromBufferAttribute(B,y),qi.fromBufferAttribute(B,M),K.normal=Le.getInterpolation(Rn,io,bo,So,nr,wn,qi,new Ee),K.normal.dot(n.direction)>0&&K.normal.multiplyScalar(-1));const W={a:Q,b:y,c:M,normal:new Ee,materialIndex:0};Le.getNormal(io,bo,So,W.normal),K.face=W}return K}class ot extends li{constructor(A=1,t=1,n=1,r=1,a=1,B=1){super(),this.type="BoxGeometry",this.parameters={width:A,height:t,depth:n,widthSegments:r,heightSegments:a,depthSegments:B};const Q=this;r=Math.floor(r),a=Math.floor(a),B=Math.floor(B);const y=[],M=[],K=[],W=[];let V=0,X=0;iA("z","y","x",-1,-1,n,t,A,B,a,0),iA("z","y","x",1,-1,n,t,-A,B,a,1),iA("x","z","y",1,1,A,n,t,r,B,2),iA("x","z","y",1,-1,A,n,-t,r,B,3),iA("x","y","z",1,-1,A,t,n,r,a,4),iA("x","y","z",-1,-1,A,t,-n,r,a,5),this.setIndex(y),this.setAttribute("position",new vt(M,3)),this.setAttribute("normal",new vt(K,3)),this.setAttribute("uv",new vt(W,2));function iA(BA,nA,tA,RA,mA,kA,_e,ae,fe,Je,zA){const KA=kA/fe,tt=_e/Je,Rt=kA/2,Ze=_e/2,yt=ae/2,jt=fe+1,oi=Je+1;let Hi=0,Nt=0;const wi=new Ee;for(let Di=0;Di<oi;Di++){const Gn=Di*tt-Ze;for(let Zo=0;Zo<jt;Zo++){const Is=Zo*KA-Rt;wi[BA]=Is*RA,wi[nA]=Gn*mA,wi[tA]=yt,M.push(wi.x,wi.y,wi.z),wi[BA]=0,wi[nA]=0,wi[tA]=ae>0?1:-1,K.push(wi.x,wi.y,wi.z),W.push(Zo/fe),W.push(1-Di/Je),Hi+=1}}for(let Di=0;Di<Je;Di++)for(let Gn=0;Gn<fe;Gn++){const Zo=V+Gn+jt*Di,Is=V+Gn+jt*(Di+1),Pt=V+(Gn+1)+jt*(Di+1),Gi=V+(Gn+1)+jt*Di;y.push(Zo,Is,Gi),y.push(Is,Pt,Gi),Nt+=6}Q.addGroup(X,Nt,zA),X+=Nt,V+=Hi}}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new ot(A.width,A.height,A.depth,A.widthSegments,A.heightSegments,A.depthSegments)}}function Wt(I){const A={};for(const t in I){A[t]={};for(const n in I[t]){const r=I[t][n];r&&(r.isColor||r.isMatrix3||r.isMatrix4||r.isVector2||r.isVector3||r.isVector4||r.isTexture||r.isQuaternion)?r.isRenderTargetTexture?(console.warn("UniformsUtils: Textures of render targets cannot be cloned via cloneUniforms() or mergeUniforms()."),A[t][n]=null):A[t][n]=r.clone():Array.isArray(r)?A[t][n]=r.slice():A[t][n]=r}}return A}function kt(I){const A={};for(let t=0;t<I.length;t++){const n=Wt(I[t]);for(const r in n)A[r]=n[r]}return A}function Ht(I){const A=[];for(let t=0;t<I.length;t++)A.push(I[t].clone());return A}function ji(I){const A=I.getRenderTarget();return A===null?I.outputColorSpace:A.isXRRenderTarget===!0?A.texture.colorSpace:oo.workingColorSpace}const ci={clone:Wt,merge:kt};var Yi=`void main() {
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}`,Jn=`void main() {
gl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );
}`;class di extends FA{constructor(A){super(),this.isShaderMaterial=!0,this.type="ShaderMaterial",this.defines={},this.uniforms={},this.uniformsGroups=[],this.vertexShader=Yi,this.fragmentShader=Jn,this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.forceSinglePass=!0,this.extensions={clipCullDistance:!1,multiDraw:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv1:[0,0]},this.index0AttributeName=void 0,this.uniformsNeedUpdate=!1,this.glslVersion=null,A!==void 0&&this.setValues(A)}copy(A){return super.copy(A),this.fragmentShader=A.fragmentShader,this.vertexShader=A.vertexShader,this.uniforms=Wt(A.uniforms),this.uniformsGroups=Ht(A.uniformsGroups),this.defines=Object.assign({},A.defines),this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.fog=A.fog,this.lights=A.lights,this.clipping=A.clipping,this.extensions=Object.assign({},A.extensions),this.glslVersion=A.glslVersion,this}toJSON(A){const t=super.toJSON(A);t.glslVersion=this.glslVersion,t.uniforms={};for(const r in this.uniforms){const B=this.uniforms[r].value;B&&B.isTexture?t.uniforms[r]={type:"t",value:B.toJSON(A).uuid}:B&&B.isColor?t.uniforms[r]={type:"c",value:B.getHex()}:B&&B.isVector2?t.uniforms[r]={type:"v2",value:B.toArray()}:B&&B.isVector3?t.uniforms[r]={type:"v3",value:B.toArray()}:B&&B.isVector4?t.uniforms[r]={type:"v4",value:B.toArray()}:B&&B.isMatrix3?t.uniforms[r]={type:"m3",value:B.toArray()}:B&&B.isMatrix4?t.uniforms[r]={type:"m4",value:B.toArray()}:t.uniforms[r]={value:B}}Object.keys(this.defines).length>0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;const n={};for(const r in this.extensions)this.extensions[r]===!0&&(n[r]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class Mn extends qA{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new tn,this.projectionMatrix=new tn,this.projectionMatrixInverse=new tn,this.coordinateSystem=ls}copy(A,t){return super.copy(A,t),this.matrixWorldInverse.copy(A.matrixWorldInverse),this.projectionMatrix.copy(A.projectionMatrix),this.projectionMatrixInverse.copy(A.projectionMatrixInverse),this.coordinateSystem=A.coordinateSystem,this}getWorldDirection(A){return super.getWorldDirection(A).negate()}updateMatrixWorld(A){super.updateMatrixWorld(A),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(A,t){super.updateWorldMatrix(A,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}const ro=new Ee,ke=new Ot,Tt=new Ot;class ti extends Mn{constructor(A=50,t=1,n=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=A,this.zoom=1,this.near=n,this.far=r,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(A,t){return super.copy(A,t),this.fov=A.fov,this.zoom=A.zoom,this.near=A.near,this.far=A.far,this.focus=A.focus,this.aspect=A.aspect,this.view=A.view===null?null:Object.assign({},A.view),this.filmGauge=A.filmGauge,this.filmOffset=A.filmOffset,this}setFocalLength(A){const t=.5*this.getFilmHeight()/A;this.fov=zs*2*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){const A=Math.tan(sg*.5*this.fov);return .5*this.getFilmHeight()/A}getEffectiveFOV(){return zs*2*Math.atan(Math.tan(sg*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(A,t,n){ro.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(ro.x,ro.y).multiplyScalar(-A/ro.z),ro.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(ro.x,ro.y).multiplyScalar(-A/ro.z)}getViewSize(A,t){return this.getViewBounds(A,ke,Tt),t.subVectors(Tt,ke)}setViewOffset(A,t,n,r,a,B){this.aspect=A/t,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=A,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=a,this.view.height=B,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const A=this.near;let t=A*Math.tan(sg*.5*this.fov)/this.zoom,n=2*t,r=this.aspect*n,a=-.5*r;const B=this.view;if(this.view!==null&&this.view.enabled){const y=B.fullWidth,M=B.fullHeight;a+=B.offsetX*r/y,t-=B.offsetY*n/M,r*=B.width/y,n*=B.height/M}const Q=this.filmOffset;Q!==0&&(a+=A*Q/this.getFilmWidth()),this.projectionMatrix.makePerspective(a,a+r,t,t-n,A,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(A){const t=super.toJSON(A);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,this.view!==null&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}const bi=-90,Ri=1;class $i extends qA{constructor(A,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const r=new ti(bi,Ri,A,t);r.layers=this.layers,this.add(r);const a=new ti(bi,Ri,A,t);a.layers=this.layers,this.add(a);const B=new ti(bi,Ri,A,t);B.layers=this.layers,this.add(B);const Q=new ti(bi,Ri,A,t);Q.layers=this.layers,this.add(Q);const y=new ti(bi,Ri,A,t);y.layers=this.layers,this.add(y);const M=new ti(bi,Ri,A,t);M.layers=this.layers,this.add(M)}updateCoordinateSystem(){const A=this.coordinateSystem,t=this.children.concat(),[n,r,a,B,Q,y]=t;for(const M of t)this.remove(M);if(A===ls)n.up.set(0,1,0),n.lookAt(1,0,0),r.up.set(0,1,0),r.lookAt(-1,0,0),a.up.set(0,0,-1),a.lookAt(0,1,0),B.up.set(0,0,1),B.lookAt(0,-1,0),Q.up.set(0,1,0),Q.lookAt(0,0,1),y.up.set(0,1,0),y.lookAt(0,0,-1);else if(A===br)n.up.set(0,-1,0),n.lookAt(-1,0,0),r.up.set(0,-1,0),r.lookAt(1,0,0),a.up.set(0,0,1),a.lookAt(0,1,0),B.up.set(0,0,-1),B.lookAt(0,-1,0),Q.up.set(0,-1,0),Q.lookAt(0,0,1),y.up.set(0,-1,0),y.lookAt(0,0,-1);else throw new Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+A);for(const M of t)this.add(M),M.updateMatrixWorld()}update(A,t){this.parent===null&&this.updateMatrixWorld();const{renderTarget:n,activeMipmapLevel:r}=this;this.coordinateSystem!==A.coordinateSystem&&(this.coordinateSystem=A.coordinateSystem,this.updateCoordinateSystem());const[a,B,Q,y,M,K]=this.children,W=A.getRenderTarget(),V=A.getActiveCubeFace(),X=A.getActiveMipmapLevel(),iA=A.xr.enabled;A.xr.enabled=!1;const BA=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,A.setRenderTarget(n,0,r),A.render(t,a),A.setRenderTarget(n,1,r),A.render(t,B),A.setRenderTarget(n,2,r),A.render(t,Q),A.setRenderTarget(n,3,r),A.render(t,y),A.setRenderTarget(n,4,r),A.render(t,M),n.texture.generateMipmaps=BA,A.setRenderTarget(n,5,r),A.render(t,K),A.setRenderTarget(W,V,X),A.xr.enabled=iA,n.texture.needsPMREMUpdate=!0}}class zn extends Sr{constructor(A,t,n,r,a,B,Q,y,M,K){A=A!==void 0?A:[],t=t!==void 0?t:Ao,super(A,t,n,r,a,B,Q,y,M,K),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(A){this.image=A}}class Ni extends zo{constructor(A=1,t={}){super(A,A,t),this.isWebGLCubeRenderTarget=!0;const n={width:A,height:A,depth:1},r=[n,n,n,n,n,n];this.texture=new zn(r,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=t.generateMipmaps!==void 0?t.generateMipmaps:!1,this.texture.minFilter=t.minFilter!==void 0?t.minFilter:DA}fromEquirectangularTexture(A,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;const n={uniforms:{tEquirect:{value:null}},vertexShader:`
varying vec3 vWorldDirection;
vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
}
void main() {
vWorldDirection = transformDirection( position, modelMatrix );
#include <begin_vertex>
#include <project_vertex>
}
`,fragmentShader:`
uniform sampler2D tEquirect;
varying vec3 vWorldDirection;
#include <common>
void main() {
vec3 direction = normalize( vWorldDirection );
vec2 sampleUV = equirectUv( direction );
gl_FragColor = texture2D( tEquirect, sampleUV );
}
`},r=new ot(5,5,5),a=new di({name:"CubemapFromEquirect",uniforms:Wt(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:_,blending:v});a.uniforms.tEquirect.value=t;const B=new mo(r,a),Q=t.minFilter;return t.minFilter===De&&(t.minFilter=DA),new $i(1,10,this).update(A,B),t.minFilter=Q,B.geometry.dispose(),B.material.dispose(),this}clear(A,t,n,r){const a=A.getRenderTarget();for(let B=0;B<6;B++)A.setRenderTarget(this,B),A.clear(t,n,r);A.setRenderTarget(a)}}const Ui=new Ee,on=new Ee,or=new Bo;class zr{constructor(A=new Ee(1,0,0),t=0){this.isPlane=!0,this.normal=A,this.constant=t}set(A,t){return this.normal.copy(A),this.constant=t,this}setComponents(A,t,n,r){return this.normal.set(A,t,n),this.constant=r,this}setFromNormalAndCoplanarPoint(A,t){return this.normal.copy(A),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(A,t,n){const r=Ui.subVectors(n,t).cross(on.subVectors(A,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,A),this}copy(A){return this.normal.copy(A.normal),this.constant=A.constant,this}normalize(){const A=1/this.normal.length();return this.normal.multiplyScalar(A),this.constant*=A,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(A){return this.normal.dot(A)+this.constant}distanceToSphere(A){return this.distanceToPoint(A.center)-A.radius}projectPoint(A,t){return t.copy(A).addScaledVector(this.normal,-this.distanceToPoint(A))}intersectLine(A,t){const n=A.delta(Ui),r=this.normal.dot(n);if(r===0)return this.distanceToPoint(A.start)===0?t.copy(A.start):null;const a=-(A.start.dot(this.normal)+this.constant)/r;return a<0||a>1?null:t.copy(A.start).addScaledVector(n,a)}intersectsLine(A){const t=this.distanceToPoint(A.start),n=this.distanceToPoint(A.end);return t<0&&n>0||n<0&&t>0}intersectsBox(A){return A.intersectsPlane(this)}intersectsSphere(A){return A.intersectsPlane(this)}coplanarPoint(A){return A.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(A,t){const n=t||or.getNormalMatrix(A),r=this.coplanarPoint(Ui).applyMatrix4(A),a=this.normal.applyMatrix3(n).normalize();return this.constant=-r.dot(a),this}translate(A){return this.constant-=A.dot(this.normal),this}equals(A){return A.normal.equals(this.normal)&&A.constant===this.constant}clone(){return new this.constructor().copy(this)}}const ks=new qr,Xa=new Ee;class xa{constructor(A=new zr,t=new zr,n=new zr,r=new zr,a=new zr,B=new zr){this.planes=[A,t,n,r,a,B]}set(A,t,n,r,a,B){const Q=this.planes;return Q[0].copy(A),Q[1].copy(t),Q[2].copy(n),Q[3].copy(r),Q[4].copy(a),Q[5].copy(B),this}copy(A){const t=this.planes;for(let n=0;n<6;n++)t[n].copy(A.planes[n]);return this}setFromProjectionMatrix(A,t=ls){const n=this.planes,r=A.elements,a=r[0],B=r[1],Q=r[2],y=r[3],M=r[4],K=r[5],W=r[6],V=r[7],X=r[8],iA=r[9],BA=r[10],nA=r[11],tA=r[12],RA=r[13],mA=r[14],kA=r[15];if(n[0].setComponents(y-a,V-M,nA-X,kA-tA).normalize(),n[1].setComponents(y+a,V+M,nA+X,kA+tA).normalize(),n[2].setComponents(y+B,V+K,nA+iA,kA+RA).normalize(),n[3].setComponents(y-B,V-K,nA-iA,kA-RA).normalize(),n[4].setComponents(y-Q,V-W,nA-BA,kA-mA).normalize(),t===ls)n[5].setComponents(y+Q,V+W,nA+BA,kA+mA).normalize();else if(t===br)n[5].setComponents(Q,W,BA,mA).normalize();else throw new Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(A){if(A.boundingSphere!==void 0)A.boundingSphere===null&&A.computeBoundingSphere(),ks.copy(A.boundingSphere).applyMatrix4(A.matrixWorld);else{const t=A.geometry;t.boundingSphere===null&&t.computeBoundingSphere(),ks.copy(t.boundingSphere).applyMatrix4(A.matrixWorld)}return this.intersectsSphere(ks)}intersectsSprite(A){return ks.center.set(0,0,0),ks.radius=.7071067811865476,ks.applyMatrix4(A.matrixWorld),this.intersectsSphere(ks)}intersectsSphere(A){const t=this.planes,n=A.center,r=-A.radius;for(let a=0;a<6;a++)if(t[a].distanceToPoint(n)<r)return!1;return!0}intersectsBox(A){const t=this.planes;for(let n=0;n<6;n++){const r=t[n];if(Xa.x=r.normal.x>0?A.max.x:A.min.x,Xa.y=r.normal.y>0?A.max.y:A.min.y,Xa.z=r.normal.z>0?A.max.z:A.min.z,r.distanceToPoint(Xa)<0)return!1}return!0}containsPoint(A){const t=this.planes;for(let n=0;n<6;n++)if(t[n].distanceToPoint(A)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}}function kC(){let I=null,A=!1,t=null,n=null;function r(a,B){t(a,B),n=I.requestAnimationFrame(r)}return{start:function(){A!==!0&&t!==null&&(n=I.requestAnimationFrame(r),A=!0)},stop:function(){I.cancelAnimationFrame(n),A=!1},setAnimationLoop:function(a){t=a},setContext:function(a){I=a}}}function Ya(I){const A=new WeakMap;function t(Q,y){const M=Q.array,K=Q.usage,W=M.byteLength,V=I.createBuffer();I.bindBuffer(y,V),I.bufferData(y,M,K),Q.onUploadCallback();let X;if(M instanceof Float32Array)X=I.FLOAT;else if(M instanceof Uint16Array)Q.isFloat16BufferAttribute?X=I.HALF_FLOAT:X=I.UNSIGNED_SHORT;else if(M instanceof Int16Array)X=I.SHORT;else if(M instanceof Uint32Array)X=I.UNSIGNED_INT;else if(M instanceof Int32Array)X=I.INT;else if(M instanceof Int8Array)X=I.BYTE;else if(M instanceof Uint8Array)X=I.UNSIGNED_BYTE;else if(M instanceof Uint8ClampedArray)X=I.UNSIGNED_BYTE;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+M);return{buffer:V,type:X,bytesPerElement:M.BYTES_PER_ELEMENT,version:Q.version,size:W}}function n(Q,y,M){const K=y.array,W=y._updateRange,V=y.updateRanges;if(I.bindBuffer(M,Q),W.count===-1&&V.length===0&&I.bufferSubData(M,0,K),V.length!==0){for(let X=0,iA=V.length;X<iA;X++){const BA=V[X];I.bufferSubData(M,BA.start*K.BYTES_PER_ELEMENT,K,BA.start,BA.count)}y.clearUpdateRanges()}W.count!==-1&&(I.bufferSubData(M,W.offset*K.BYTES_PER_ELEMENT,K,W.offset,W.count),W.count=-1),y.onUploadCallback()}function r(Q){return Q.isInterleavedBufferAttribute&&(Q=Q.data),A.get(Q)}function a(Q){Q.isInterleavedBufferAttribute&&(Q=Q.data);const y=A.get(Q);y&&(I.deleteBuffer(y.buffer),A.delete(Q))}function B(Q,y){if(Q.isGLBufferAttribute){const K=A.get(Q);(!K||K.version<Q.version)&&A.set(Q,{buffer:Q.buffer,type:Q.type,bytesPerElement:Q.elementSize,version:Q.version});return}Q.isInterleavedBufferAttribute&&(Q=Q.data);const M=A.get(Q);if(M===void 0)A.set(Q,t(Q,y));else if(M.version<Q.version){if(M.size!==Q.array.byteLength)throw new Error("THREE.WebGLAttributes: The size of the buffer attribute's array buffer does not match the original size. Resizing buffer attributes is not supported.");n(M.buffer,Q,y),M.version=Q.version}}return{get:r,remove:a,update:B}}class EI extends li{constructor(A=1,t=1,n=1,r=1){super(),this.type="PlaneGeometry",this.parameters={width:A,height:t,widthSegments:n,heightSegments:r};const a=A/2,B=t/2,Q=Math.floor(n),y=Math.floor(r),M=Q+1,K=y+1,W=A/Q,V=t/y,X=[],iA=[],BA=[],nA=[];for(let tA=0;tA<K;tA++){const RA=tA*V-B;for(let mA=0;mA<M;mA++){const kA=mA*W-a;iA.push(kA,-RA,0),BA.push(0,0,1),nA.push(mA/Q),nA.push(1-tA/y)}}for(let tA=0;tA<y;tA++)for(let RA=0;RA<Q;RA++){const mA=RA+M*tA,kA=RA+M*(tA+1),_e=RA+1+M*(tA+1),ae=RA+1+M*tA;X.push(mA,kA,ae),X.push(kA,_e,ae)}this.setIndex(X),this.setAttribute("position",new vt(iA,3)),this.setAttribute("normal",new vt(BA,3)),this.setAttribute("uv",new vt(nA,2))}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new EI(A.width,A.height,A.widthSegments,A.heightSegments)}}var QI=`#ifdef USE_ALPHAHASH
if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;
#endif`,$B=`#ifdef USE_ALPHAHASH
const float ALPHA_HASH_SCALE = 0.05;
float hash2D( vec2 value ) {
return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );
}
float hash3D( vec3 value ) {
return hash2D( vec2( hash2D( value.xy ), value.z ) );
}
float getAlphaHashThreshold( vec3 position ) {
float maxDeriv = max(
length( dFdx( position.xyz ) ),
length( dFdy( position.xyz ) )
);
float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );
vec2 pixScales = vec2(
exp2( floor( log2( pixScale ) ) ),
exp2( ceil( log2( pixScale ) ) )
);
vec2 alpha = vec2(
hash3D( floor( pixScales.x * position.xyz ) ),
hash3D( floor( pixScales.y * position.xyz ) )
);
float lerpFactor = fract( log2( pixScale ) );
float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;
float a = min( lerpFactor, 1.0 - lerpFactor );
vec3 cases = vec3(
x * x / ( 2.0 * a * ( 1.0 - a ) ),
( x - 0.5 * a ) / ( 1.0 - a ),
1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )
);
float threshold = ( x < ( 1.0 - a ) )
? ( ( x < a ) ? cases.x : cases.y )
: cases.z;
return clamp( threshold , 1.0e-6, 1.0 );
}
#endif`,_C=`#ifdef USE_ALPHAMAP
diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;
#endif`,sC=`#ifdef USE_ALPHAMAP
uniform sampler2D alphaMap;
#endif`,FI=`#ifdef USE_ALPHATEST
#ifdef ALPHA_TO_COVERAGE
diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );
if ( diffuseColor.a == 0.0 ) discard;
#else
if ( diffuseColor.a < alphaTest ) discard;
#endif
#endif`,$C=`#ifdef USE_ALPHATEST
uniform float alphaTest;
#endif`,gC=`#ifdef USE_AOMAP
float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;
reflectedLight.indirectDiffuse *= ambientOcclusion;
#if defined( USE_CLEARCOAT )
clearcoatSpecularIndirect *= ambientOcclusion;
#endif
#if defined( USE_SHEEN )
sheenSpecularIndirect *= ambientOcclusion;
#endif
#if defined( USE_ENVMAP ) && defined( STANDARD )
float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );
reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );
#endif
#endif`,kg=`#ifdef USE_AOMAP
uniform sampler2D aoMap;
uniform float aoMapIntensity;
#endif`,vI=`#ifdef USE_BATCHING
attribute float batchId;
uniform highp sampler2D batchingTexture;
mat4 getBatchingMatrix( const in float i ) {
int size = textureSize( batchingTexture, 0 ).x;
int j = int( i ) * 4;
int x = j % size;
int y = j / size;
vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );
vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );
vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );
vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );
return mat4( v1, v2, v3, v4 );
}
#endif`,AB=`#ifdef USE_BATCHING
mat4 batchingMatrix = getBatchingMatrix( batchId );
#endif`,ZI=`vec3 transformed = vec3( position );
#ifdef USE_ALPHAHASH
vPosition = vec3( position );
#endif`,aC=`vec3 objectNormal = vec3( normal );
#ifdef USE_TANGENT
vec3 objectTangent = vec3( tangent.xyz );
#endif`,jI=`float G_BlinnPhong_Implicit( ) {
return 0.25;
}
float D_BlinnPhong( const in float shininess, const in float dotNH ) {
return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );
}
vec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {
vec3 halfDir = normalize( lightDir + viewDir );
float dotNH = saturate( dot( normal, halfDir ) );
float dotVH = saturate( dot( viewDir, halfDir ) );
vec3 F = F_Schlick( specularColor, 1.0, dotVH );
float G = G_BlinnPhong_Implicit( );
float D = D_BlinnPhong( shininess, dotNH );
return F * ( G * D );
} // validated`,WA=`#ifdef USE_IRIDESCENCE
const mat3 XYZ_TO_REC709 = mat3(
3.2404542, -0.9692660, 0.0556434,
-1.5371385, 1.8760108, -0.2040259,
-0.4985314, 0.0415560, 1.0572252
);
vec3 Fresnel0ToIor( vec3 fresnel0 ) {
vec3 sqrtF0 = sqrt( fresnel0 );
return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );
}
vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {
return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );
}
float IorToFresnel0( float transmittedIor, float incidentIor ) {
return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));
}
vec3 evalSensitivity( float OPD, vec3 shift ) {
float phase = 2.0 * PI * OPD * 1.0e-9;
vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );
vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );
vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );
vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );
xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );
xyz /= 1.0685e-7;
vec3 rgb = XYZ_TO_REC709 * xyz;
return rgb;
}
vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {
vec3 I;
float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );
float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );
float cosTheta2Sq = 1.0 - sinTheta2Sq;
if ( cosTheta2Sq < 0.0 ) {
return vec3( 1.0 );
}
float cosTheta2 = sqrt( cosTheta2Sq );
float R0 = IorToFresnel0( iridescenceIOR, outsideIOR );
float R12 = F_Schlick( R0, 1.0, cosTheta1 );
float T121 = 1.0 - R12;
float phi12 = 0.0;
if ( iridescenceIOR < outsideIOR ) phi12 = PI;
float phi21 = PI - phi12;
vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );
vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );
vec3 phi23 = vec3( 0.0 );
if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;
if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;
if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;
float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;
vec3 phi = vec3( phi21 ) + phi23;
vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );
vec3 r123 = sqrt( R123 );
vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );
vec3 C0 = R12 + Rs;
I = C0;
vec3 Cm = Rs - T121;
for ( int m = 1; m <= 2; ++ m ) {
Cm *= r123;
vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );
I += Cm * Sm;
}
return max( I, vec3( 0.0 ) );
}
#endif`,qe=`#ifdef USE_BUMPMAP
uniform sampler2D bumpMap;
uniform float bumpScale;
vec2 dHdxy_fwd() {
vec2 dSTdx = dFdx( vBumpMapUv );
vec2 dSTdy = dFdy( vBumpMapUv );
float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;
float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;
float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;
return vec2( dBx, dBy );
}
vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {
vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );
vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );
vec3 vN = surf_norm;
vec3 R1 = cross( vSigmaY, vN );
vec3 R2 = cross( vN, vSigmaX );
float fDet = dot( vSigmaX, R1 ) * faceDirection;
vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );
return normalize( abs( fDet ) * surf_norm - vGrad );
}
#endif`,It=`#if NUM_CLIPPING_PLANES > 0
vec4 plane;
#ifdef ALPHA_TO_COVERAGE
float distanceToPlane, distanceGradient;
float clipOpacity = 1.0;
#pragma unroll_loop_start
for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {
plane = clippingPlanes[ i ];
distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;
distanceGradient = fwidth( distanceToPlane ) / 2.0;
clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );
if ( clipOpacity == 0.0 ) discard;
}
#pragma unroll_loop_end
#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES
float unionClipOpacity = 1.0;
#pragma unroll_loop_start
for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {
plane = clippingPlanes[ i ];
distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;
distanceGradient = fwidth( distanceToPlane ) / 2.0;
unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );
}
#pragma unroll_loop_end
clipOpacity *= 1.0 - unionClipOpacity;
#endif
diffuseColor.a *= clipOpacity;
if ( diffuseColor.a == 0.0 ) discard;
#else
#pragma unroll_loop_start
for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {
plane = clippingPlanes[ i ];
if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;
}
#pragma unroll_loop_end
#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES
bool clipped = true;
#pragma unroll_loop_start
for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {
plane = clippingPlanes[ i ];
clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;
}
#pragma unroll_loop_end
if ( clipped ) discard;
#endif
#endif
#endif`,lt=`#if NUM_CLIPPING_PLANES > 0
varying vec3 vClipPosition;
uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];
#endif`,ze=`#if NUM_CLIPPING_PLANES > 0
varying vec3 vClipPosition;
#endif`,Ii=`#if NUM_CLIPPING_PLANES > 0
vClipPosition = - mvPosition.xyz;
#endif`,Ki=`#if defined( USE_COLOR_ALPHA )
diffuseColor *= vColor;
#elif defined( USE_COLOR )
diffuseColor.rgb *= vColor;
#endif`,rn=`#if defined( USE_COLOR_ALPHA )
varying vec4 vColor;
#elif defined( USE_COLOR )
varying vec3 vColor;
#endif`,gn=`#if defined( USE_COLOR_ALPHA )
varying vec4 vColor;
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )
varying vec3 vColor;
#endif`,ho=`#if defined( USE_COLOR_ALPHA )
vColor = vec4( 1.0 );
#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )
vColor = vec3( 1.0 );
#endif
#ifdef USE_COLOR
vColor *= color;
#endif
#ifdef USE_INSTANCING_COLOR
vColor.xyz *= instanceColor.xyz;
#endif`,uo=`#define PI 3.141592653589793
#define PI2 6.283185307179586
#define PI_HALF 1.5707963267948966
#define RECIPROCAL_PI 0.3183098861837907
#define RECIPROCAL_PI2 0.15915494309189535
#define EPSILON 1e-6
#ifndef saturate
#define saturate( a ) clamp( a, 0.0, 1.0 )
#endif
#define whiteComplement( a ) ( 1.0 - saturate( a ) )
float pow2( const in float x ) { return x*x; }
vec3 pow2( const in vec3 x ) { return x*x; }
float pow3( const in float x ) { return x*x*x; }
float pow4( const in float x ) { float x2 = x*x; return x2*x2; }
float max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }
float average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }
highp float rand( const in vec2 uv ) {
const highp float a = 12.9898, b = 78.233, c = 43758.5453;
highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );
return fract( sin( sn ) * c );
}
#ifdef HIGH_PRECISION
float precisionSafeLength( vec3 v ) { return length( v ); }
#else
float precisionSafeLength( vec3 v ) {
float maxComponent = max3( abs( v ) );
return length( v / maxComponent ) * maxComponent;
}
#endif
struct IncidentLight {
vec3 color;
vec3 direction;
bool visible;
};
struct ReflectedLight {
vec3 directDiffuse;
vec3 directSpecular;
vec3 indirectDiffuse;
vec3 indirectSpecular;
};
#ifdef USE_ALPHAHASH
varying vec3 vPosition;
#endif
vec3 transformDirection( in vec3 dir, in mat4 matrix ) {
return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );
}
vec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {
return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );
}
mat3 transposeMat3( const in mat3 m ) {
mat3 tmp;
tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );
tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );
tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );
return tmp;
}
float luminance( const in vec3 rgb ) {
const vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );
return dot( weights, rgb );
}
bool isPerspectiveMatrix( mat4 m ) {
return m[ 2 ][ 3 ] == - 1.0;
}
vec2 equirectUv( in vec3 dir ) {
float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;
float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;
return vec2( u, v );
}
vec3 BRDF_Lambert( const in vec3 diffuseColor ) {
return RECIPROCAL_PI * diffuseColor;
}
vec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {
float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
}
float F_Schlick( const in float f0, const in float f90, const in float dotVH ) {
float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );
return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );
} // validated`,Tn=`#ifdef ENVMAP_TYPE_CUBE_UV
#define cubeUV_minMipLevel 4.0
#define cubeUV_minTileSize 16.0
float getFace( vec3 direction ) {
vec3 absDirection = abs( direction );
float face = - 1.0;
if ( absDirection.x > absDirection.z ) {
if ( absDirection.x > absDirection.y )
face = direction.x > 0.0 ? 0.0 : 3.0;
else
face = direction.y > 0.0 ? 1.0 : 4.0;
} else {
if ( absDirection.z > absDirection.y )
face = direction.z > 0.0 ? 2.0 : 5.0;
else
face = direction.y > 0.0 ? 1.0 : 4.0;
}
return face;
}
vec2 getUV( vec3 direction, float face ) {
vec2 uv;
if ( face == 0.0 ) {
uv = vec2( direction.z, direction.y ) / abs( direction.x );
} else if ( face == 1.0 ) {
uv = vec2( - direction.x, - direction.z ) / abs( direction.y );
} else if ( face == 2.0 ) {
uv = vec2( - direction.x, direction.y ) / abs( direction.z );
} else if ( face == 3.0 ) {
uv = vec2( - direction.z, direction.y ) / abs( direction.x );
} else if ( face == 4.0 ) {
uv = vec2( - direction.x, direction.z ) / abs( direction.y );
} else {
uv = vec2( direction.x, direction.y ) / abs( direction.z );
}
return 0.5 * ( uv + 1.0 );
}
vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {
float face = getFace( direction );
float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );
mipInt = max( mipInt, cubeUV_minMipLevel );
float faceSize = exp2( mipInt );
highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;
if ( face > 2.0 ) {
uv.y += faceSize;
face -= 3.0;
}
uv.x += face * faceSize;
uv.x += filterInt * 3.0 * cubeUV_minTileSize;
uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );
uv.x *= CUBEUV_TEXEL_WIDTH;
uv.y *= CUBEUV_TEXEL_HEIGHT;
#ifdef texture2DGradEXT
return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;
#else
return texture2D( envMap, uv ).rgb;
#endif
}
#define cubeUV_r0 1.0
#define cubeUV_m0 - 2.0
#define cubeUV_r1 0.8
#define cubeUV_m1 - 1.0
#define cubeUV_r4 0.4
#define cubeUV_m4 2.0
#define cubeUV_r5 0.305
#define cubeUV_m5 3.0
#define cubeUV_r6 0.21
#define cubeUV_m6 4.0
float roughnessToMip( float roughness ) {
float mip = 0.0;
if ( roughness >= cubeUV_r1 ) {
mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;
} else if ( roughness >= cubeUV_r4 ) {
mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;
} else if ( roughness >= cubeUV_r5 ) {
mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;
} else if ( roughness >= cubeUV_r6 ) {
mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;
} else {
mip = - 2.0 * log2( 1.16 * roughness ); }
return mip;
}
vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {
float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );
float mipF = fract( mip );
float mipInt = floor( mip );
vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );
if ( mipF == 0.0 ) {
return vec4( color0, 1.0 );
} else {
vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );
return vec4( mix( color0, color1, mipF ), 1.0 );
}
}
#endif`,Vo=`vec3 transformedNormal = objectNormal;
#ifdef USE_TANGENT
vec3 transformedTangent = objectTangent;
#endif
#ifdef USE_BATCHING
mat3 bm = mat3( batchingMatrix );
transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );
transformedNormal = bm * transformedNormal;
#ifdef USE_TANGENT
transformedTangent = bm * transformedTangent;
#endif
#endif
#ifdef USE_INSTANCING
mat3 im = mat3( instanceMatrix );
transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );
transformedNormal = im * transformedNormal;
#ifdef USE_TANGENT
transformedTangent = im * transformedTangent;
#endif
#endif
transformedNormal = normalMatrix * transformedNormal;
#ifdef FLIP_SIDED
transformedNormal = - transformedNormal;
#endif
#ifdef USE_TANGENT
transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;
#ifdef FLIP_SIDED
transformedTangent = - transformedTangent;
#endif
#endif`,Dr=`#ifdef USE_DISPLACEMENTMAP
uniform sampler2D displacementMap;
uniform float displacementScale;
uniform float displacementBias;
#endif`,_s=`#ifdef USE_DISPLACEMENTMAP
transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );
#endif`,ws=`#ifdef USE_EMISSIVEMAP
vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );
totalEmissiveRadiance *= emissiveColor.rgb;
#endif`,rr=`#ifdef USE_EMISSIVEMAP
uniform sampler2D emissiveMap;
#endif`,wg="gl_FragColor = linearToOutputTexel( gl_FragColor );",Hn=`
const mat3 LINEAR_SRGB_TO_LINEAR_DISPLAY_P3 = mat3(
vec3( 0.8224621, 0.177538, 0.0 ),
vec3( 0.0331941, 0.9668058, 0.0 ),
vec3( 0.0170827, 0.0723974, 0.9105199 )
);
const mat3 LINEAR_DISPLAY_P3_TO_LINEAR_SRGB = mat3(
vec3( 1.2249401, - 0.2249404, 0.0 ),
vec3( - 0.0420569, 1.0420571, 0.0 ),
vec3( - 0.0196376, - 0.0786361, 1.0982735 )
);
vec4 LinearSRGBToLinearDisplayP3( in vec4 value ) {
return vec4( value.rgb * LINEAR_SRGB_TO_LINEAR_DISPLAY_P3, value.a );
}
vec4 LinearDisplayP3ToLinearSRGB( in vec4 value ) {
return vec4( value.rgb * LINEAR_DISPLAY_P3_TO_LINEAR_SRGB, value.a );
}
vec4 LinearTransferOETF( in vec4 value ) {
return value;
}
vec4 sRGBTransferOETF( in vec4 value ) {
return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );
}
vec4 LinearToLinear( in vec4 value ) {
return value;
}
vec4 LinearTosRGB( in vec4 value ) {
return sRGBTransferOETF( value );
}`,XI=`#ifdef USE_ENVMAP
#ifdef ENV_WORLDPOS
vec3 cameraToFrag;
if ( isOrthographic ) {
cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
} else {
cameraToFrag = normalize( vWorldPosition - cameraPosition );
}
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
#ifdef ENVMAP_MODE_REFLECTION
vec3 reflectVec = reflect( cameraToFrag, worldNormal );
#else
vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );
#endif
#else
vec3 reflectVec = vReflect;
#endif
#ifdef ENVMAP_TYPE_CUBE
vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );
#else
vec4 envColor = vec4( 0.0 );
#endif
#ifdef ENVMAP_BLENDING_MULTIPLY
outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );
#elif defined( ENVMAP_BLENDING_MIX )
outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );
#elif defined( ENVMAP_BLENDING_ADD )
outgoingLight += envColor.xyz * specularStrength * reflectivity;
#endif
#endif`,sr=`#ifdef USE_ENVMAP
uniform float envMapIntensity;
uniform float flipEnvMap;
uniform mat3 envMapRotation;
#ifdef ENVMAP_TYPE_CUBE
uniform samplerCube envMap;
#else
uniform sampler2D envMap;
#endif
#endif`,_g=`#ifdef USE_ENVMAP
uniform float reflectivity;
#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )
#define ENV_WORLDPOS
#endif
#ifdef ENV_WORLDPOS
varying vec3 vWorldPosition;
uniform float refractionRatio;
#else
varying vec3 vReflect;
#endif
#endif`,ba=`#ifdef USE_ENVMAP
#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )
#define ENV_WORLDPOS
#endif
#ifdef ENV_WORLDPOS
varying vec3 vWorldPosition;
#else
varying vec3 vReflect;
uniform float refractionRatio;
#endif
#endif`,za=`#ifdef USE_ENVMAP
#ifdef ENV_WORLDPOS
vWorldPosition = worldPosition.xyz;
#else
vec3 cameraToVertex;
if ( isOrthographic ) {
cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );
} else {
cameraToVertex = normalize( worldPosition.xyz - cameraPosition );
}
vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
#ifdef ENVMAP_MODE_REFLECTION
vReflect = reflect( cameraToVertex, worldNormal );
#else
vReflect = refract( cameraToVertex, worldNormal, refractionRatio );
#endif
#endif
#endif`,NI=`#ifdef USE_FOG
vFogDepth = - mvPosition.z;
#endif`,vr=`#ifdef USE_FOG
varying float vFogDepth;
#endif`,es=`#ifdef USE_FOG
#ifdef FOG_EXP2
float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );
#else
float fogFactor = smoothstep( fogNear, fogFar, vFogDepth );
#endif
gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );
#endif`,$a=`#ifdef USE_FOG
uniform vec3 fogColor;
varying float vFogDepth;
#ifdef FOG_EXP2
uniform float fogDensity;
#else
uniform float fogNear;
uniform float fogFar;
#endif
#endif`,Ps=`#ifdef USE_GRADIENTMAP
uniform sampler2D gradientMap;
#endif
vec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {
float dotNL = dot( normal, lightDirection );
vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );
#ifdef USE_GRADIENTMAP
return vec3( texture2D( gradientMap, coord ).r );
#else
vec2 fw = fwidth( coord ) * 0.5;
return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );
#endif
}`,AI=`#ifdef USE_LIGHTMAP
uniform sampler2D lightMap;
uniform float lightMapIntensity;
#endif`,ka=`LambertMaterial material;
material.diffuseColor = diffuseColor.rgb;
material.specularStrength = specularStrength;`,UI=`varying vec3 vViewPosition;
struct LambertMaterial {
vec3 diffuseColor;
float specularStrength;
};
void RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {
float dotNL = saturate( dot( geometryNormal, directLight.direction ) );
vec3 irradiance = dotNL * directLight.color;
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
void RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
#define RE_Direct RE_Direct_Lambert
#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert`,WQ=`uniform bool receiveShadow;
uniform vec3 ambientLightColor;
#if defined( USE_LIGHT_PROBES )
uniform vec3 lightProbe[ 9 ];
#endif
vec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {
float x = normal.x, y = normal.y, z = normal.z;
vec3 result = shCoefficients[ 0 ] * 0.886227;
result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;
result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;
result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;
result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;
result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;
result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );
result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;
result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );
return result;
}
vec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );
return irradiance;
}
vec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {
vec3 irradiance = ambientLightColor;
return irradiance;
}
float getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {
#if defined ( LEGACY_LIGHTS )
if ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {
return pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );
}
return 1.0;
#else
float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );
if ( cutoffDistance > 0.0 ) {
distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );
}
return distanceFalloff;
#endif
}
float getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {
return smoothstep( coneCosine, penumbraCosine, angleCosine );
}
#if NUM_DIR_LIGHTS > 0
struct DirectionalLight {
vec3 direction;
vec3 color;
};
uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];
void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {
light.color = directionalLight.color;
light.direction = directionalLight.direction;
light.visible = true;
}
#endif
#if NUM_POINT_LIGHTS > 0
struct PointLight {
vec3 position;
vec3 color;
float distance;
float decay;
};
uniform PointLight pointLights[ NUM_POINT_LIGHTS ];
void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {
vec3 lVector = pointLight.position - geometryPosition;
light.direction = normalize( lVector );
float lightDistance = length( lVector );
light.color = pointLight.color;
light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );
light.visible = ( light.color != vec3( 0.0 ) );
}
#endif
#if NUM_SPOT_LIGHTS > 0
struct SpotLight {
vec3 position;
vec3 direction;
vec3 color;
float distance;
float decay;
float coneCos;
float penumbraCos;
};
uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];
void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {
vec3 lVector = spotLight.position - geometryPosition;
light.direction = normalize( lVector );
float angleCos = dot( light.direction, spotLight.direction );
float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );
if ( spotAttenuation > 0.0 ) {
float lightDistance = length( lVector );
light.color = spotLight.color * spotAttenuation;
light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );
light.visible = ( light.color != vec3( 0.0 ) );
} else {
light.color = vec3( 0.0 );
light.visible = false;
}
}
#endif
#if NUM_RECT_AREA_LIGHTS > 0
struct RectAreaLight {
vec3 color;
vec3 position;
vec3 halfWidth;
vec3 halfHeight;
};
uniform sampler2D ltc_1; uniform sampler2D ltc_2;
uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];
#endif
#if NUM_HEMI_LIGHTS > 0
struct HemisphereLight {
vec3 direction;
vec3 skyColor;
vec3 groundColor;
};
uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];
vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {
float dotNL = dot( normal, hemiLight.direction );
float hemiDiffuseWeight = 0.5 * dotNL + 0.5;
vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );
return irradiance;
}
#endif`,AE=`#ifdef USE_ENVMAP
vec3 getIBLIrradiance( const in vec3 normal ) {
#ifdef ENVMAP_TYPE_CUBE_UV
vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );
vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );
return PI * envMapColor.rgb * envMapIntensity;
#else
return vec3( 0.0 );
#endif
}
vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {
#ifdef ENVMAP_TYPE_CUBE_UV
vec3 reflectVec = reflect( - viewDir, normal );
reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );
return envMapColor.rgb * envMapIntensity;
#else
return vec3( 0.0 );
#endif
}
#ifdef USE_ANISOTROPY
vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {
#ifdef ENVMAP_TYPE_CUBE_UV
vec3 bentNormal = cross( bitangent, viewDir );
bentNormal = normalize( cross( bentNormal, bitangent ) );
bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );
return getIBLRadiance( viewDir, bentNormal, roughness );
#else
return vec3( 0.0 );
#endif
}
#endif
#endif`,VQ=`ToonMaterial material;
material.diffuseColor = diffuseColor.rgb;`,Zh=`varying vec3 vViewPosition;
struct ToonMaterial {
vec3 diffuseColor;
};
void RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
void RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
#define RE_Direct RE_Direct_Toon
#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon`,eB=`BlinnPhongMaterial material;
material.diffuseColor = diffuseColor.rgb;
material.specularColor = specular;
material.specularShininess = shininess;
material.specularStrength = specularStrength;`,tB=`varying vec3 vViewPosition;
struct BlinnPhongMaterial {
vec3 diffuseColor;
vec3 specularColor;
float specularShininess;
float specularStrength;
};
void RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
float dotNL = saturate( dot( geometryNormal, directLight.direction ) );
vec3 irradiance = dotNL * directLight.color;
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;
}
void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
#define RE_Direct RE_Direct_BlinnPhong
#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong`,ZQ=`PhysicalMaterial material;
material.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );
vec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );
float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );
material.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;
material.roughness = min( material.roughness, 1.0 );
#ifdef IOR
material.ior = ior;
#ifdef USE_SPECULAR
float specularIntensityFactor = specularIntensity;
vec3 specularColorFactor = specularColor;
#ifdef USE_SPECULAR_COLORMAP
specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;
#endif
#ifdef USE_SPECULAR_INTENSITYMAP
specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;
#endif
material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );
#else
float specularIntensityFactor = 1.0;
vec3 specularColorFactor = vec3( 1.0 );
material.specularF90 = 1.0;
#endif
material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );
#else
material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );
material.specularF90 = 1.0;
#endif
#ifdef USE_CLEARCOAT
material.clearcoat = clearcoat;
material.clearcoatRoughness = clearcoatRoughness;
material.clearcoatF0 = vec3( 0.04 );
material.clearcoatF90 = 1.0;
#ifdef USE_CLEARCOATMAP
material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;
#endif
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;
#endif
material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );
material.clearcoatRoughness += geometryRoughness;
material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );
#endif
#ifdef USE_DISPERSION
material.dispersion = dispersion;
#endif
#ifdef USE_IRIDESCENCE
material.iridescence = iridescence;
material.iridescenceIOR = iridescenceIOR;
#ifdef USE_IRIDESCENCEMAP
material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;
#endif
#ifdef USE_IRIDESCENCE_THICKNESSMAP
material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;
#else
material.iridescenceThickness = iridescenceThicknessMaximum;
#endif
#endif
#ifdef USE_SHEEN
material.sheenColor = sheenColor;
#ifdef USE_SHEEN_COLORMAP
material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;
#endif
material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );
#ifdef USE_SHEEN_ROUGHNESSMAP
material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;
#endif
#endif
#ifdef USE_ANISOTROPY
#ifdef USE_ANISOTROPYMAP
mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );
vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;
vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;
#else
vec2 anisotropyV = anisotropyVector;
#endif
material.anisotropy = length( anisotropyV );
if( material.anisotropy == 0.0 ) {
anisotropyV = vec2( 1.0, 0.0 );
} else {
anisotropyV /= material.anisotropy;
material.anisotropy = saturate( material.anisotropy );
}
material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );
material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;
material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;
#endif`,kE=`struct PhysicalMaterial {
vec3 diffuseColor;
float roughness;
vec3 specularColor;
float specularF90;
float dispersion;
#ifdef USE_CLEARCOAT
float clearcoat;
float clearcoatRoughness;
vec3 clearcoatF0;
float clearcoatF90;
#endif
#ifdef USE_IRIDESCENCE
float iridescence;
float iridescenceIOR;
float iridescenceThickness;
vec3 iridescenceFresnel;
vec3 iridescenceF0;
#endif
#ifdef USE_SHEEN
vec3 sheenColor;
float sheenRoughness;
#endif
#ifdef IOR
float ior;
#endif
#ifdef USE_TRANSMISSION
float transmission;
float transmissionAlpha;
float thickness;
float attenuationDistance;
vec3 attenuationColor;
#endif
#ifdef USE_ANISOTROPY
float anisotropy;
float alphaT;
vec3 anisotropyT;
vec3 anisotropyB;
#endif
};
vec3 clearcoatSpecularDirect = vec3( 0.0 );
vec3 clearcoatSpecularIndirect = vec3( 0.0 );
vec3 sheenSpecularDirect = vec3( 0.0 );
vec3 sheenSpecularIndirect = vec3(0.0 );
vec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {
float x = clamp( 1.0 - dotVH, 0.0, 1.0 );
float x2 = x * x;
float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );
return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );
}
float V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {
float a2 = pow2( alpha );
float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );
float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );
return 0.5 / max( gv + gl, EPSILON );
}
float D_GGX( const in float alpha, const in float dotNH ) {
float a2 = pow2( alpha );
float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;
return RECIPROCAL_PI * a2 / pow2( denom );
}
#ifdef USE_ANISOTROPY
float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {
float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );
float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );
float v = 0.5 / ( gv + gl );
return saturate(v);
}
float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {
float a2 = alphaT * alphaB;
highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );
highp float v2 = dot( v, v );
float w2 = a2 / v2;
return RECIPROCAL_PI * a2 * pow2 ( w2 );
}
#endif
#ifdef USE_CLEARCOAT
vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {
vec3 f0 = material.clearcoatF0;
float f90 = material.clearcoatF90;
float roughness = material.clearcoatRoughness;
float alpha = pow2( roughness );
vec3 halfDir = normalize( lightDir + viewDir );
float dotNL = saturate( dot( normal, lightDir ) );
float dotNV = saturate( dot( normal, viewDir ) );
float dotNH = saturate( dot( normal, halfDir ) );
float dotVH = saturate( dot( viewDir, halfDir ) );
vec3 F = F_Schlick( f0, f90, dotVH );
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
float D = D_GGX( alpha, dotNH );
return F * ( V * D );
}
#endif
vec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {
vec3 f0 = material.specularColor;
float f90 = material.specularF90;
float roughness = material.roughness;
float alpha = pow2( roughness );
vec3 halfDir = normalize( lightDir + viewDir );
float dotNL = saturate( dot( normal, lightDir ) );
float dotNV = saturate( dot( normal, viewDir ) );
float dotNH = saturate( dot( normal, halfDir ) );
float dotVH = saturate( dot( viewDir, halfDir ) );
vec3 F = F_Schlick( f0, f90, dotVH );
#ifdef USE_IRIDESCENCE
F = mix( F, material.iridescenceFresnel, material.iridescence );
#endif
#ifdef USE_ANISOTROPY
float dotTL = dot( material.anisotropyT, lightDir );
float dotTV = dot( material.anisotropyT, viewDir );
float dotTH = dot( material.anisotropyT, halfDir );
float dotBL = dot( material.anisotropyB, lightDir );
float dotBV = dot( material.anisotropyB, viewDir );
float dotBH = dot( material.anisotropyB, halfDir );
float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );
float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );
#else
float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );
float D = D_GGX( alpha, dotNH );
#endif
return F * ( V * D );
}
vec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {
const float LUT_SIZE = 64.0;
const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;
const float LUT_BIAS = 0.5 / LUT_SIZE;
float dotNV = saturate( dot( N, V ) );
vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );
uv = uv * LUT_SCALE + LUT_BIAS;
return uv;
}
float LTC_ClippedSphereFormFactor( const in vec3 f ) {
float l = length( f );
return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );
}
vec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {
float x = dot( v1, v2 );
float y = abs( x );
float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;
float b = 3.4175940 + ( 4.1616724 + y ) * y;
float v = a / b;
float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;
return cross( v1, v2 ) * theta_sintheta;
}
vec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {
vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];
vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];
vec3 lightNormal = cross( v1, v2 );
if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );
vec3 T1, T2;
T1 = normalize( V - N * dot( V, N ) );
T2 = - cross( N, T1 );
mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );
vec3 coords[ 4 ];
coords[ 0 ] = mat * ( rectCoords[ 0 ] - P );
coords[ 1 ] = mat * ( rectCoords[ 1 ] - P );
coords[ 2 ] = mat * ( rectCoords[ 2 ] - P );
coords[ 3 ] = mat * ( rectCoords[ 3 ] - P );
coords[ 0 ] = normalize( coords[ 0 ] );
coords[ 1 ] = normalize( coords[ 1 ] );
coords[ 2 ] = normalize( coords[ 2 ] );
coords[ 3 ] = normalize( coords[ 3 ] );
vec3 vectorFormFactor = vec3( 0.0 );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );
vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );
float result = LTC_ClippedSphereFormFactor( vectorFormFactor );
return vec3( result );
}
#if defined( USE_SHEEN )
float D_Charlie( float roughness, float dotNH ) {
float alpha = pow2( roughness );
float invAlpha = 1.0 / alpha;
float cos2h = dotNH * dotNH;
float sin2h = max( 1.0 - cos2h, 0.0078125 );
return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );
}
float V_Neubelt( float dotNV, float dotNL ) {
return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );
}
vec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {
vec3 halfDir = normalize( lightDir + viewDir );
float dotNL = saturate( dot( normal, lightDir ) );
float dotNV = saturate( dot( normal, viewDir ) );
float dotNH = saturate( dot( normal, halfDir ) );
float D = D_Charlie( sheenRoughness, dotNH );
float V = V_Neubelt( dotNV, dotNL );
return sheenColor * ( D * V );
}
#endif
float IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {
float dotNV = saturate( dot( normal, viewDir ) );
float r2 = roughness * roughness;
float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;
float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;
float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );
return saturate( DG * RECIPROCAL_PI );
}
vec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {
float dotNV = saturate( dot( normal, viewDir ) );
const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );
const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );
vec4 r = roughness * c0 + c1;
float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;
vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;
return fab;
}
vec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {
vec2 fab = DFGApprox( normal, viewDir, roughness );
return specularColor * fab.x + specularF90 * fab.y;
}
#ifdef USE_IRIDESCENCE
void computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {
#else
void computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {
#endif
vec2 fab = DFGApprox( normal, viewDir, roughness );
#ifdef USE_IRIDESCENCE
vec3 Fr = mix( specularColor, iridescenceF0, iridescence );
#else
vec3 Fr = specularColor;
#endif
vec3 FssEss = Fr * fab.x + specularF90 * fab.y;
float Ess = fab.x + fab.y;
float Ems = 1.0 - Ess;
vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );
singleScatter += FssEss;
multiScatter += Fms * Ems;
}
#if NUM_RECT_AREA_LIGHTS > 0
void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
vec3 normal = geometryNormal;
vec3 viewDir = geometryViewDir;
vec3 position = geometryPosition;
vec3 lightPos = rectAreaLight.position;
vec3 halfWidth = rectAreaLight.halfWidth;
vec3 halfHeight = rectAreaLight.halfHeight;
vec3 lightColor = rectAreaLight.color;
float roughness = material.roughness;
vec3 rectCoords[ 4 ];
rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight;
rectCoords[ 2 ] = lightPos - halfWidth + halfHeight;
rectCoords[ 3 ] = lightPos + halfWidth + halfHeight;
vec2 uv = LTC_Uv( normal, viewDir, roughness );
vec4 t1 = texture2D( ltc_1, uv );
vec4 t2 = texture2D( ltc_2, uv );
mat3 mInv = mat3(
vec3( t1.x, 0, t1.y ),
vec3( 0, 1, 0 ),
vec3( t1.z, 0, t1.w )
);
vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );
reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );
reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );
}
#endif
void RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
float dotNL = saturate( dot( geometryNormal, directLight.direction ) );
vec3 irradiance = dotNL * directLight.color;
#ifdef USE_CLEARCOAT
float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );
vec3 ccIrradiance = dotNLcc * directLight.color;
clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );
#endif
#ifdef USE_SHEEN
sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );
#endif
reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );
reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
void RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {
reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );
}
void RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {
#ifdef USE_CLEARCOAT
clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );
#endif
#ifdef USE_SHEEN
sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );
#endif
vec3 singleScattering = vec3( 0.0 );
vec3 multiScattering = vec3( 0.0 );
vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;
#ifdef USE_IRIDESCENCE
computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );
#else
computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );
#endif
vec3 totalScattering = singleScattering + multiScattering;
vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );
reflectedLight.indirectSpecular += radiance * singleScattering;
reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;
reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;
}
#define RE_Direct RE_Direct_Physical
#define RE_Direct_RectArea RE_Direct_RectArea_Physical
#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical
#define RE_IndirectSpecular RE_IndirectSpecular_Physical
float computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {
return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );
}`,jh=`
vec3 geometryPosition = - vViewPosition;
vec3 geometryNormal = normal;
vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );
vec3 geometryClearcoatNormal = vec3( 0.0 );
#ifdef USE_CLEARCOAT
geometryClearcoatNormal = clearcoatNormal;
#endif
#ifdef USE_IRIDESCENCE
float dotNVi = saturate( dot( normal, geometryViewDir ) );
if ( material.iridescenceThickness == 0.0 ) {
material.iridescence = 0.0;
} else {
material.iridescence = saturate( material.iridescence );
}
if ( material.iridescence > 0.0 ) {
material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );
material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );
}
#endif
IncidentLight directLight;
#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )
PointLight pointLight;
#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0
PointLightShadow pointLightShadow;
#endif
#pragma unroll_loop_start
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
pointLight = pointLights[ i ];
getPointLightInfo( pointLight, geometryPosition, directLight );
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )
pointLightShadow = pointLightShadows[ i ];
directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
#endif
RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
}
#pragma unroll_loop_end
#endif
#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )
SpotLight spotLight;
vec4 spotColor;
vec3 spotLightCoord;
bool inSpotLightMap;
#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0
SpotLightShadow spotLightShadow;
#endif
#pragma unroll_loop_start
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
spotLight = spotLights[ i ];
getSpotLightInfo( spotLight, geometryPosition, directLight );
#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )
#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX
#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS
#else
#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )
#endif
#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )
spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;
inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );
spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );
directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;
#endif
#undef SPOT_LIGHT_MAP_INDEX
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
spotLightShadow = spotLightShadows[ i ];
directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
#endif
RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
}
#pragma unroll_loop_end
#endif
#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )
DirectionalLight directionalLight;
#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0
DirectionalLightShadow directionalLightShadow;
#endif
#pragma unroll_loop_start
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
directionalLight = directionalLights[ i ];
getDirectionalLightInfo( directionalLight, directLight );
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )
directionalLightShadow = directionalLightShadows[ i ];
directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
#endif
RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
}
#pragma unroll_loop_end
#endif
#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )
RectAreaLight rectAreaLight;
#pragma unroll_loop_start
for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {
rectAreaLight = rectAreaLights[ i ];
RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
}
#pragma unroll_loop_end
#endif
#if defined( RE_IndirectDiffuse )
vec3 iblIrradiance = vec3( 0.0 );
vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );
#if defined( USE_LIGHT_PROBES )
irradiance += getLightProbeIrradiance( lightProbe, geometryNormal );
#endif
#if ( NUM_HEMI_LIGHTS > 0 )
#pragma unroll_loop_start
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );
}
#pragma unroll_loop_end
#endif
#endif
#if defined( RE_IndirectSpecular )
vec3 radiance = vec3( 0.0 );
vec3 clearcoatRadiance = vec3( 0.0 );
#endif`,Xh=`#if defined( RE_IndirectDiffuse )
#ifdef USE_LIGHTMAP
vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
irradiance += lightMapIrradiance;
#endif
#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )
iblIrradiance += getIBLIrradiance( geometryNormal );
#endif
#endif
#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )
#ifdef USE_ANISOTROPY
radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );
#else
radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );
#endif
#ifdef USE_CLEARCOAT
clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );
#endif
#endif`,IC=`#if defined( RE_IndirectDiffuse )
RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
#endif
#if defined( RE_IndirectSpecular )
RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );
#endif`,CC=`#if defined( USE_LOGDEPTHBUF )
gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;
#endif`,eE=`#if defined( USE_LOGDEPTHBUF )
uniform float logDepthBufFC;
varying float vFragDepth;
varying float vIsPerspective;
#endif`,_E=`#ifdef USE_LOGDEPTHBUF
varying float vFragDepth;
varying float vIsPerspective;
#endif`,TE=`#ifdef USE_LOGDEPTHBUF
vFragDepth = 1.0 + gl_Position.w;
vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );
#endif`,zh=`#ifdef USE_MAP
vec4 sampledDiffuseColor = texture2D( map, vMapUv );
#ifdef DECODE_VIDEO_TEXTURE
sampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );
#endif
diffuseColor *= sampledDiffuseColor;
#endif`,$h=`#ifdef USE_MAP
uniform sampler2D map;
#endif`,Al=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
#if defined( USE_POINTS_UV )
vec2 uv = vUv;
#else
vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;
#endif
#endif
#ifdef USE_MAP
diffuseColor *= texture2D( map, uv );
#endif
#ifdef USE_ALPHAMAP
diffuseColor.a *= texture2D( alphaMap, uv ).g;
#endif`,ha=`#if defined( USE_POINTS_UV )
varying vec2 vUv;
#else
#if defined( USE_MAP ) || defined( USE_ALPHAMAP )
uniform mat3 uvTransform;
#endif
#endif
#ifdef USE_MAP
uniform sampler2D map;
#endif
#ifdef USE_ALPHAMAP
uniform sampler2D alphaMap;
#endif`,el=`float metalnessFactor = metalness;
#ifdef USE_METALNESSMAP
vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );
metalnessFactor *= texelMetalness.b;
#endif`,KE=`#ifdef USE_METALNESSMAP
uniform sampler2D metalnessMap;
#endif`,tE=`#ifdef USE_INSTANCING_MORPH
float morphTargetInfluences[MORPHTARGETS_COUNT];
float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;
}
#endif`,BC=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )
vColor *= morphTargetBaseInfluence;
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
#if defined( USE_COLOR_ALPHA )
if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];
#elif defined( USE_COLOR )
if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];
#endif
}
#endif`,iB=`#ifdef USE_MORPHNORMALS
objectNormal *= morphTargetBaseInfluence;
#ifdef MORPHTARGETS_TEXTURE
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];
}
#else
objectNormal += morphNormal0 * morphTargetInfluences[ 0 ];
objectNormal += morphNormal1 * morphTargetInfluences[ 1 ];
objectNormal += morphNormal2 * morphTargetInfluences[ 2 ];
objectNormal += morphNormal3 * morphTargetInfluences[ 3 ];
#endif
#endif`,jQ=`#ifdef USE_MORPHTARGETS
#ifndef USE_INSTANCING_MORPH
uniform float morphTargetBaseInfluence;
#endif
#ifdef MORPHTARGETS_TEXTURE
#ifndef USE_INSTANCING_MORPH
uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];
#endif
uniform sampler2DArray morphTargetsTexture;
uniform ivec2 morphTargetsTextureSize;
vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {
int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;
int y = texelIndex / morphTargetsTextureSize.x;
int x = texelIndex - y * morphTargetsTextureSize.x;
ivec3 morphUV = ivec3( x, y, morphTargetIndex );
return texelFetch( morphTargetsTexture, morphUV, 0 );
}
#else
#ifndef USE_MORPHNORMALS
uniform float morphTargetInfluences[ 8 ];
#else
uniform float morphTargetInfluences[ 4 ];
#endif
#endif
#endif`,tl=`#ifdef USE_MORPHTARGETS
transformed *= morphTargetBaseInfluence;
#ifdef MORPHTARGETS_TEXTURE
for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {
if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];
}
#else
transformed += morphTarget0 * morphTargetInfluences[ 0 ];
transformed += morphTarget1 * morphTargetInfluences[ 1 ];
transformed += morphTarget2 * morphTargetInfluences[ 2 ];
transformed += morphTarget3 * morphTargetInfluences[ 3 ];
#ifndef USE_MORPHNORMALS
transformed += morphTarget4 * morphTargetInfluences[ 4 ];
transformed += morphTarget5 * morphTargetInfluences[ 5 ];
transformed += morphTarget6 * morphTargetInfluences[ 6 ];
transformed += morphTarget7 * morphTargetInfluences[ 7 ];
#endif
#endif
#endif`,JE=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;
#ifdef FLAT_SHADED
vec3 fdx = dFdx( vViewPosition );
vec3 fdy = dFdy( vViewPosition );
vec3 normal = normalize( cross( fdx, fdy ) );
#else
vec3 normal = normalize( vNormal );
#ifdef DOUBLE_SIDED
normal *= faceDirection;
#endif
#endif
#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )
#ifdef USE_TANGENT
mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );
#else
mat3 tbn = getTangentFrame( - vViewPosition, normal,
#if defined( USE_NORMALMAP )
vNormalMapUv
#elif defined( USE_CLEARCOAT_NORMALMAP )
vClearcoatNormalMapUv
#else
vUv
#endif
);
#endif
#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )
tbn[0] *= faceDirection;
tbn[1] *= faceDirection;
#endif
#endif
#ifdef USE_CLEARCOAT_NORMALMAP
#ifdef USE_TANGENT
mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );
#else
mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );
#endif
#if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )
tbn2[0] *= faceDirection;
tbn2[1] *= faceDirection;
#endif
#endif
vec3 nonPerturbedNormal = normal;`,Og=`#ifdef USE_NORMALMAP_OBJECTSPACE
normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;
#ifdef FLIP_SIDED
normal = - normal;
#endif
#ifdef DOUBLE_SIDED
normal = normal * faceDirection;
#endif
normal = normalize( normalMatrix * normal );
#elif defined( USE_NORMALMAP_TANGENTSPACE )
vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;
mapN.xy *= normalScale;
normal = normalize( tbn * mapN );
#elif defined( USE_BUMPMAP )
normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );
#endif`,iE=`#ifndef FLAT_SHADED
varying vec3 vNormal;
#ifdef USE_TANGENT
varying vec3 vTangent;
varying vec3 vBitangent;
#endif
#endif`,il=`#ifndef FLAT_SHADED
varying vec3 vNormal;
#ifdef USE_TANGENT
varying vec3 vTangent;
varying vec3 vBitangent;
#endif
#endif`,EC=`#ifndef FLAT_SHADED
vNormal = normalize( transformedNormal );
#ifdef USE_TANGENT
vTangent = normalize( transformedTangent );
vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );
#endif
#endif`,XQ=`#ifdef USE_NORMALMAP
uniform sampler2D normalMap;
uniform vec2 normalScale;
#endif
#ifdef USE_NORMALMAP_OBJECTSPACE
uniform mat3 normalMatrix;
#endif
#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )
mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {
vec3 q0 = dFdx( eye_pos.xyz );
vec3 q1 = dFdy( eye_pos.xyz );
vec2 st0 = dFdx( uv.st );
vec2 st1 = dFdy( uv.st );
vec3 N = surf_norm;
vec3 q1perp = cross( q1, N );
vec3 q0perp = cross( N, q0 );
vec3 T = q1perp * st0.x + q0perp * st1.x;
vec3 B = q1perp * st0.y + q0perp * st1.y;
float det = max( dot( T, T ), dot( B, B ) );
float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );
return mat3( T * scale, B * scale, N );
}
#endif`,ia=`#ifdef USE_CLEARCOAT
vec3 clearcoatNormal = nonPerturbedNormal;
#endif`,nE=`#ifdef USE_CLEARCOAT_NORMALMAP
vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;
clearcoatMapN.xy *= clearcoatNormalScale;
clearcoatNormal = normalize( tbn2 * clearcoatMapN );
#endif`,oE=`#ifdef USE_CLEARCOATMAP
uniform sampler2D clearcoatMap;
#endif
#ifdef USE_CLEARCOAT_NORMALMAP
uniform sampler2D clearcoatNormalMap;
uniform vec2 clearcoatNormalScale;
#endif
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
uniform sampler2D clearcoatRoughnessMap;
#endif`,zQ=`#ifdef USE_IRIDESCENCEMAP
uniform sampler2D iridescenceMap;
#endif
#ifdef USE_IRIDESCENCE_THICKNESSMAP
uniform sampler2D iridescenceThicknessMap;
#endif`,nB=`#ifdef OPAQUE
diffuseColor.a = 1.0;
#endif
#ifdef USE_TRANSMISSION
diffuseColor.a *= material.transmissionAlpha;
#endif
gl_FragColor = vec4( outgoingLight, diffuseColor.a );`,rE=`vec3 packNormalToRGB( const in vec3 normal ) {
return normalize( normal ) * 0.5 + 0.5;
}
vec3 unpackRGBToNormal( const in vec3 rgb ) {
return 2.0 * rgb.xyz - 1.0;
}
const float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;
const vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );
const vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );
const float ShiftRight8 = 1. / 256.;
vec4 packDepthToRGBA( const in float v ) {
vec4 r = vec4( fract( v * PackFactors ), v );
r.yzw -= r.xyz * ShiftRight8; return r * PackUpscale;
}
float unpackRGBAToDepth( const in vec4 v ) {
return dot( v, UnpackFactors );
}
vec2 packDepthToRG( in highp float v ) {
return packDepthToRGBA( v ).yx;
}
float unpackRGToDepth( const in highp vec2 v ) {
return unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );
}
vec4 pack2HalfToRGBA( vec2 v ) {
vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );
return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );
}
vec2 unpackRGBATo2Half( vec4 v ) {
return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );
}
float viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {
return ( viewZ + near ) / ( near - far );
}
float orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {
return depth * ( near - far ) - near;
}
float viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {
return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );
}
float perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {
return ( near * far ) / ( ( far - near ) * depth - far );
}`,YE=`#ifdef PREMULTIPLIED_ALPHA
gl_FragColor.rgb *= gl_FragColor.a;
#endif`,$Q=`vec4 mvPosition = vec4( transformed, 1.0 );
#ifdef USE_BATCHING
mvPosition = batchingMatrix * mvPosition;
#endif
#ifdef USE_INSTANCING
mvPosition = instanceMatrix * mvPosition;
#endif
mvPosition = modelViewMatrix * mvPosition;
gl_Position = projectionMatrix * mvPosition;`,zI=`#ifdef DITHERING
gl_FragColor.rgb = dithering( gl_FragColor.rgb );
#endif`,sE=`#ifdef DITHERING
vec3 dithering( vec3 color ) {
float grid_position = rand( gl_FragCoord.xy );
vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );
dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );
return color + dither_shift_RGB;
}
#endif`,Ac=`float roughnessFactor = roughness;
#ifdef USE_ROUGHNESSMAP
vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );
roughnessFactor *= texelRoughness.g;
#endif`,ec=`#ifdef USE_ROUGHNESSMAP
uniform sampler2D roughnessMap;
#endif`,cI=`#if NUM_SPOT_LIGHT_COORDS > 0
varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];
#endif
#if NUM_SPOT_LIGHT_MAPS > 0
uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];
#endif
#ifdef USE_SHADOWMAP
#if NUM_DIR_LIGHT_SHADOWS > 0
uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];
varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
struct DirectionalLightShadow {
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
};
uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];
#endif
#if NUM_SPOT_LIGHT_SHADOWS > 0
uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];
struct SpotLightShadow {
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
};
uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];
#endif
#if NUM_POINT_LIGHT_SHADOWS > 0
uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];
varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
struct PointLightShadow {
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
float shadowCameraNear;
float shadowCameraFar;
};
uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
#endif
float texture2DCompare( sampler2D depths, vec2 uv, float compare ) {
return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );
}
vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {
return unpackRGBATo2Half( texture2D( shadow, uv ) );
}
float VSMShadow (sampler2D shadow, vec2 uv, float compare ){
float occlusion = 1.0;
vec2 distribution = texture2DDistribution( shadow, uv );
float hard_shadow = step( compare , distribution.x );
if (hard_shadow != 1.0 ) {
float distance = compare - distribution.x ;
float variance = max( 0.00000, distribution.y * distribution.y );
float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );
}
return occlusion;
}
float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {
float shadow = 1.0;
shadowCoord.xyz /= shadowCoord.w;
shadowCoord.z += shadowBias;
bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;
bool frustumTest = inFrustum && shadowCoord.z <= 1.0;
if ( frustumTest ) {
#if defined( SHADOWMAP_TYPE_PCF )
vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
float dx0 = - texelSize.x * shadowRadius;
float dy0 = - texelSize.y * shadowRadius;
float dx1 = + texelSize.x * shadowRadius;
float dy1 = + texelSize.y * shadowRadius;
float dx2 = dx0 / 2.0;
float dy2 = dy0 / 2.0;
float dx3 = dx1 / 2.0;
float dy3 = dy1 / 2.0;
shadow = (
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +
texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )
) * ( 1.0 / 17.0 );
#elif defined( SHADOWMAP_TYPE_PCF_SOFT )
vec2 texelSize = vec2( 1.0 ) / shadowMapSize;
float dx = texelSize.x;
float dy = texelSize.y;
vec2 uv = shadowCoord.xy;
vec2 f = fract( uv * shadowMapSize + 0.5 );
uv -= f * texelSize;
shadow = (
texture2DCompare( shadowMap, uv, shadowCoord.z ) +
texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +
texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +
texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +
mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),
f.x ) +
mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),
f.x ) +
mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),
f.y ) +
mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),
f.y ) +
mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),
f.x ),
mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),
texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),
f.x ),
f.y )
) * ( 1.0 / 9.0 );
#elif defined( SHADOWMAP_TYPE_VSM )
shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );
#else
shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );
#endif
}
return shadow;
}
vec2 cubeToUV( vec3 v, float texelSizeY ) {
vec3 absV = abs( v );
float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );
absV *= scaleToCube;
v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );
vec2 planar = v.xy;
float almostATexel = 1.5 * texelSizeY;
float almostOne = 1.0 - almostATexel;
if ( absV.z >= almostOne ) {
if ( v.z > 0.0 )
planar.x = 4.0 - v.x;
} else if ( absV.x >= almostOne ) {
float signX = sign( v.x );
planar.x = v.z * signX + 2.0 * signX;
} else if ( absV.y >= almostOne ) {
float signY = sign( v.y );
planar.x = v.x + 2.0 * signY + 2.0;
planar.y = v.z * signY - 2.0;
}
return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );
}
float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {
float shadow = 1.0;
vec3 lightToPosition = shadowCoord.xyz;
float lightToPositionLength = length( lightToPosition );
if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {
float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias;
vec3 bd3D = normalize( lightToPosition );
vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );
#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )
vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;
shadow = (
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +
texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )
) * ( 1.0 / 9.0 );
#else
shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );
#endif
}
return shadow;
}
#endif`,tc=`#if NUM_SPOT_LIGHT_COORDS > 0
uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];
varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];
#endif
#ifdef USE_SHADOWMAP
#if NUM_DIR_LIGHT_SHADOWS > 0
uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];
varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];
struct DirectionalLightShadow {
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
};
uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];
#endif
#if NUM_SPOT_LIGHT_SHADOWS > 0
struct SpotLightShadow {
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
};
uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];
#endif
#if NUM_POINT_LIGHT_SHADOWS > 0
uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];
varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];
struct PointLightShadow {
float shadowBias;
float shadowNormalBias;
float shadowRadius;
vec2 shadowMapSize;
float shadowCameraNear;
float shadowCameraFar;
};
uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];
#endif
#endif`,HE=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )
vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );
vec4 shadowWorldPosition;
#endif
#if defined( USE_SHADOWMAP )
#if NUM_DIR_LIGHT_SHADOWS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );
vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;
}
#pragma unroll_loop_end
#endif
#if NUM_POINT_LIGHT_SHADOWS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );
vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;
}
#pragma unroll_loop_end
#endif
#endif
#if NUM_SPOT_LIGHT_COORDS > 0
#pragma unroll_loop_start
for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {
shadowWorldPosition = worldPosition;
#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;
#endif
vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;
}
#pragma unroll_loop_end
#endif`,ic=`float getShadowMask() {
float shadow = 1.0;
#ifdef USE_SHADOWMAP
#if NUM_DIR_LIGHT_SHADOWS > 0
DirectionalLightShadow directionalLight;
#pragma unroll_loop_start
for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {
directionalLight = directionalLightShadows[ i ];
shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
}
#pragma unroll_loop_end
#endif
#if NUM_SPOT_LIGHT_SHADOWS > 0
SpotLightShadow spotLight;
#pragma unroll_loop_start
for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {
spotLight = spotLightShadows[ i ];
shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;
}
#pragma unroll_loop_end
#endif
#if NUM_POINT_LIGHT_SHADOWS > 0
PointLightShadow pointLight;
#pragma unroll_loop_start
for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {
pointLight = pointLightShadows[ i ];
shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;
}
#pragma unroll_loop_end
#endif
#endif
return shadow;
}`,PE=`#ifdef USE_SKINNING
mat4 boneMatX = getBoneMatrix( skinIndex.x );
mat4 boneMatY = getBoneMatrix( skinIndex.y );
mat4 boneMatZ = getBoneMatrix( skinIndex.z );
mat4 boneMatW = getBoneMatrix( skinIndex.w );
#endif`,gE=`#ifdef USE_SKINNING
uniform mat4 bindMatrix;
uniform mat4 bindMatrixInverse;
uniform highp sampler2D boneTexture;
mat4 getBoneMatrix( const in float i ) {
int size = textureSize( boneTexture, 0 ).x;
int j = int( i ) * 4;
int x = j % size;
int y = j / size;
vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );
vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );
vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );
vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );
return mat4( v1, v2, v3, v4 );
}
#endif`,aE=`#ifdef USE_SKINNING
vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );
vec4 skinned = vec4( 0.0 );
skinned += boneMatX * skinVertex * skinWeight.x;
skinned += boneMatY * skinVertex * skinWeight.y;
skinned += boneMatZ * skinVertex * skinWeight.z;
skinned += boneMatW * skinVertex * skinWeight.w;
transformed = ( bindMatrixInverse * skinned ).xyz;
#endif`,nc=`#ifdef USE_SKINNING
mat4 skinMatrix = mat4( 0.0 );
skinMatrix += skinWeight.x * boneMatX;
skinMatrix += skinWeight.y * boneMatY;
skinMatrix += skinWeight.z * boneMatZ;
skinMatrix += skinWeight.w * boneMatW;
skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;
objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;
#ifdef USE_TANGENT
objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;
#endif
#endif`,oc=`float specularStrength;
#ifdef USE_SPECULARMAP
vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );
specularStrength = texelSpecular.r;
#else
specularStrength = 1.0;
#endif`,rc=`#ifdef USE_SPECULARMAP
uniform sampler2D specularMap;
#endif`,nl=`#if defined( TONE_MAPPING )
gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );
#endif`,ol=`#ifndef saturate
#define saturate( a ) clamp( a, 0.0, 1.0 )
#endif
uniform float toneMappingExposure;
vec3 LinearToneMapping( vec3 color ) {
return saturate( toneMappingExposure * color );
}
vec3 ReinhardToneMapping( vec3 color ) {
color *= toneMappingExposure;
return saturate( color / ( vec3( 1.0 ) + color ) );
}
vec3 OptimizedCineonToneMapping( vec3 color ) {
color *= toneMappingExposure;
color = max( vec3( 0.0 ), color - 0.004 );
return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );
}
vec3 RRTAndODTFit( vec3 v ) {
vec3 a = v * ( v + 0.0245786 ) - 0.000090537;
vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;
return a / b;
}
vec3 ACESFilmicToneMapping( vec3 color ) {
const mat3 ACESInputMat = mat3(
vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ),
vec3( 0.04823, 0.01566, 0.83777 )
);
const mat3 ACESOutputMat = mat3(
vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ),
vec3( -0.07367, -0.00605, 1.07602 )
);
color *= toneMappingExposure / 0.6;
color = ACESInputMat * color;
color = RRTAndODTFit( color );
color = ACESOutputMat * color;
return saturate( color );
}
const mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(
vec3( 1.6605, - 0.1246, - 0.0182 ),
vec3( - 0.5876, 1.1329, - 0.1006 ),
vec3( - 0.0728, - 0.0083, 1.1187 )
);
const mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(
vec3( 0.6274, 0.0691, 0.0164 ),
vec3( 0.3293, 0.9195, 0.0880 ),
vec3( 0.0433, 0.0113, 0.8956 )
);
vec3 agxDefaultContrastApprox( vec3 x ) {
vec3 x2 = x * x;
vec3 x4 = x2 * x2;
return + 15.5 * x4 * x2
- 40.14 * x4 * x
+ 31.96 * x4
- 6.868 * x2 * x
+ 0.4298 * x2
+ 0.1191 * x
- 0.00232;
}
vec3 AgXToneMapping( vec3 color ) {
const mat3 AgXInsetMatrix = mat3(
vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),
vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),
vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )
);
const mat3 AgXOutsetMatrix = mat3(
vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),
vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),
vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )
);
const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069;
color *= toneMappingExposure;
color = LINEAR_SRGB_TO_LINEAR_REC2020 * color;
color = AgXInsetMatrix * color;
color = max( color, 1e-10 ); color = log2( color );
color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );
color = clamp( color, 0.0, 1.0 );
color = agxDefaultContrastApprox( color );
color = AgXOutsetMatrix * color;
color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );
color = LINEAR_REC2020_TO_LINEAR_SRGB * color;
color = clamp( color, 0.0, 1.0 );
return color;
}
vec3 NeutralToneMapping( vec3 color ) {
const float StartCompression = 0.8 - 0.04;
const float Desaturation = 0.15;
color *= toneMappingExposure;
float x = min( color.r, min( color.g, color.b ) );
float offset = x < 0.08 ? x - 6.25 * x * x : 0.04;
color -= offset;
float peak = max( color.r, max( color.g, color.b ) );
if ( peak < StartCompression ) return color;
float d = 1. - StartCompression;
float newPeak = 1. - d * d / ( peak + d - StartCompression );
color *= newPeak / peak;
float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );
return mix( color, vec3( newPeak ), g );
}
vec3 CustomToneMapping( vec3 color ) { return color; }`,IE=`#ifdef USE_TRANSMISSION
material.transmission = transmission;
material.transmissionAlpha = 1.0;
material.thickness = thickness;
material.attenuationDistance = attenuationDistance;
material.attenuationColor = attenuationColor;
#ifdef USE_TRANSMISSIONMAP
material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;
#endif
#ifdef USE_THICKNESSMAP
material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;
#endif
vec3 pos = vWorldPosition;
vec3 v = normalize( cameraPosition - pos );
vec3 n = inverseTransformDirection( normal, viewMatrix );
vec4 transmitted = getIBLVolumeRefraction(
n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,
pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,
material.attenuationColor, material.attenuationDistance );
material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );
totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );
#endif`,rl=`#ifdef USE_TRANSMISSION
uniform float transmission;
uniform float thickness;
uniform float attenuationDistance;
uniform vec3 attenuationColor;
#ifdef USE_TRANSMISSIONMAP
uniform sampler2D transmissionMap;
#endif
#ifdef USE_THICKNESSMAP
uniform sampler2D thicknessMap;
#endif
uniform vec2 transmissionSamplerSize;
uniform sampler2D transmissionSamplerMap;
uniform mat4 modelMatrix;
uniform mat4 projectionMatrix;
varying vec3 vWorldPosition;
float w0( float a ) {
return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );
}
float w1( float a ) {
return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );
}
float w2( float a ){
return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );
}
float w3( float a ) {
return ( 1.0 / 6.0 ) * ( a * a * a );
}
float g0( float a ) {
return w0( a ) + w1( a );
}
float g1( float a ) {
return w2( a ) + w3( a );
}
float h0( float a ) {
return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );
}
float h1( float a ) {
return 1.0 + w3( a ) / ( w2( a ) + w3( a ) );
}
vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {
uv = uv * texelSize.zw + 0.5;
vec2 iuv = floor( uv );
vec2 fuv = fract( uv );
float g0x = g0( fuv.x );
float g1x = g1( fuv.x );
float h0x = h0( fuv.x );
float h1x = h1( fuv.x );
float h0y = h0( fuv.y );
float h1y = h1( fuv.y );
vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;
vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;
vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;
vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;
return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +
g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );
}
vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {
vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );
vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );
vec2 fLodSizeInv = 1.0 / fLodSize;
vec2 cLodSizeInv = 1.0 / cLodSize;
vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );
vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );
return mix( fSample, cSample, fract( lod ) );
}
vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {
vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );
vec3 modelScale;
modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );
modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );
modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );
return normalize( refractionVector ) * thickness * modelScale;
}
float applyIorToRoughness( const in float roughness, const in float ior ) {
return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );
}
vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {
float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );
return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );
}
vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {
if ( isinf( attenuationDistance ) ) {
return vec3( 1.0 );
} else {
vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;
vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance;
}
}
vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,
const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,
const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness,
const in vec3 attenuationColor, const in float attenuationDistance ) {
vec4 transmittedLight;
vec3 transmittance;
#ifdef USE_DISPERSION
float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;
vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );
for ( int i = 0; i < 3; i ++ ) {
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );
vec3 refractedRayExit = position + transmissionRay;
vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
vec2 refractionCoords = ndcPos.xy / ndcPos.w;
refractionCoords += 1.0;
refractionCoords /= 2.0;
vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );
transmittedLight[ i ] = transmissionSample[ i ];
transmittedLight.a += transmissionSample.a;
transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];
}
transmittedLight.a /= 3.0;
#else
vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );
vec3 refractedRayExit = position + transmissionRay;
vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );
vec2 refractionCoords = ndcPos.xy / ndcPos.w;
refractionCoords += 1.0;
refractionCoords /= 2.0;
transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );
transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );
#endif
vec3 attenuatedColor = transmittance * transmittedLight.rgb;
vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );
float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;
return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );
}
#endif`,sl=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
varying vec2 vUv;
#endif
#ifdef USE_MAP
varying vec2 vMapUv;
#endif
#ifdef USE_ALPHAMAP
varying vec2 vAlphaMapUv;
#endif
#ifdef USE_LIGHTMAP
varying vec2 vLightMapUv;
#endif
#ifdef USE_AOMAP
varying vec2 vAoMapUv;
#endif
#ifdef USE_BUMPMAP
varying vec2 vBumpMapUv;
#endif
#ifdef USE_NORMALMAP
varying vec2 vNormalMapUv;
#endif
#ifdef USE_EMISSIVEMAP
varying vec2 vEmissiveMapUv;
#endif
#ifdef USE_METALNESSMAP
varying vec2 vMetalnessMapUv;
#endif
#ifdef USE_ROUGHNESSMAP
varying vec2 vRoughnessMapUv;
#endif
#ifdef USE_ANISOTROPYMAP
varying vec2 vAnisotropyMapUv;
#endif
#ifdef USE_CLEARCOATMAP
varying vec2 vClearcoatMapUv;
#endif
#ifdef USE_CLEARCOAT_NORMALMAP
varying vec2 vClearcoatNormalMapUv;
#endif
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
varying vec2 vClearcoatRoughnessMapUv;
#endif
#ifdef USE_IRIDESCENCEMAP
varying vec2 vIridescenceMapUv;
#endif
#ifdef USE_IRIDESCENCE_THICKNESSMAP
varying vec2 vIridescenceThicknessMapUv;
#endif
#ifdef USE_SHEEN_COLORMAP
varying vec2 vSheenColorMapUv;
#endif
#ifdef USE_SHEEN_ROUGHNESSMAP
varying vec2 vSheenRoughnessMapUv;
#endif
#ifdef USE_SPECULARMAP
varying vec2 vSpecularMapUv;
#endif
#ifdef USE_SPECULAR_COLORMAP
varying vec2 vSpecularColorMapUv;
#endif
#ifdef USE_SPECULAR_INTENSITYMAP
varying vec2 vSpecularIntensityMapUv;
#endif
#ifdef USE_TRANSMISSIONMAP
uniform mat3 transmissionMapTransform;
varying vec2 vTransmissionMapUv;
#endif
#ifdef USE_THICKNESSMAP
uniform mat3 thicknessMapTransform;
varying vec2 vThicknessMapUv;
#endif`,gl=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
varying vec2 vUv;
#endif
#ifdef USE_MAP
uniform mat3 mapTransform;
varying vec2 vMapUv;
#endif
#ifdef USE_ALPHAMAP
uniform mat3 alphaMapTransform;
varying vec2 vAlphaMapUv;
#endif
#ifdef USE_LIGHTMAP
uniform mat3 lightMapTransform;
varying vec2 vLightMapUv;
#endif
#ifdef USE_AOMAP
uniform mat3 aoMapTransform;
varying vec2 vAoMapUv;
#endif
#ifdef USE_BUMPMAP
uniform mat3 bumpMapTransform;
varying vec2 vBumpMapUv;
#endif
#ifdef USE_NORMALMAP
uniform mat3 normalMapTransform;
varying vec2 vNormalMapUv;
#endif
#ifdef USE_DISPLACEMENTMAP
uniform mat3 displacementMapTransform;
varying vec2 vDisplacementMapUv;
#endif
#ifdef USE_EMISSIVEMAP
uniform mat3 emissiveMapTransform;
varying vec2 vEmissiveMapUv;
#endif
#ifdef USE_METALNESSMAP
uniform mat3 metalnessMapTransform;
varying vec2 vMetalnessMapUv;
#endif
#ifdef USE_ROUGHNESSMAP
uniform mat3 roughnessMapTransform;
varying vec2 vRoughnessMapUv;
#endif
#ifdef USE_ANISOTROPYMAP
uniform mat3 anisotropyMapTransform;
varying vec2 vAnisotropyMapUv;
#endif
#ifdef USE_CLEARCOATMAP
uniform mat3 clearcoatMapTransform;
varying vec2 vClearcoatMapUv;
#endif
#ifdef USE_CLEARCOAT_NORMALMAP
uniform mat3 clearcoatNormalMapTransform;
varying vec2 vClearcoatNormalMapUv;
#endif
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
uniform mat3 clearcoatRoughnessMapTransform;
varying vec2 vClearcoatRoughnessMapUv;
#endif
#ifdef USE_SHEEN_COLORMAP
uniform mat3 sheenColorMapTransform;
varying vec2 vSheenColorMapUv;
#endif
#ifdef USE_SHEEN_ROUGHNESSMAP
uniform mat3 sheenRoughnessMapTransform;
varying vec2 vSheenRoughnessMapUv;
#endif
#ifdef USE_IRIDESCENCEMAP
uniform mat3 iridescenceMapTransform;
varying vec2 vIridescenceMapUv;
#endif
#ifdef USE_IRIDESCENCE_THICKNESSMAP
uniform mat3 iridescenceThicknessMapTransform;
varying vec2 vIridescenceThicknessMapUv;
#endif
#ifdef USE_SPECULARMAP
uniform mat3 specularMapTransform;
varying vec2 vSpecularMapUv;
#endif
#ifdef USE_SPECULAR_COLORMAP
uniform mat3 specularColorMapTransform;
varying vec2 vSpecularColorMapUv;
#endif
#ifdef USE_SPECULAR_INTENSITYMAP
uniform mat3 specularIntensityMapTransform;
varying vec2 vSpecularIntensityMapUv;
#endif
#ifdef USE_TRANSMISSIONMAP
uniform mat3 transmissionMapTransform;
varying vec2 vTransmissionMapUv;
#endif
#ifdef USE_THICKNESSMAP
uniform mat3 thicknessMapTransform;
varying vec2 vThicknessMapUv;
#endif`,al=`#if defined( USE_UV ) || defined( USE_ANISOTROPY )
vUv = vec3( uv, 1 ).xy;
#endif
#ifdef USE_MAP
vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;
#endif
#ifdef USE_ALPHAMAP
vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_LIGHTMAP
vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_AOMAP
vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_BUMPMAP
vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_NORMALMAP
vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_DISPLACEMENTMAP
vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_EMISSIVEMAP
vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_METALNESSMAP
vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_ROUGHNESSMAP
vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_ANISOTROPYMAP
vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_CLEARCOATMAP
vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_CLEARCOAT_NORMALMAP
vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_IRIDESCENCEMAP
vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_IRIDESCENCE_THICKNESSMAP
vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_SHEEN_COLORMAP
vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_SHEEN_ROUGHNESSMAP
vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_SPECULARMAP
vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_SPECULAR_COLORMAP
vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_SPECULAR_INTENSITYMAP
vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_TRANSMISSIONMAP
vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;
#endif
#ifdef USE_THICKNESSMAP
vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;
#endif`,eI=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0
vec4 worldPosition = vec4( transformed, 1.0 );
#ifdef USE_BATCHING
worldPosition = batchingMatrix * worldPosition;
#endif
#ifdef USE_INSTANCING
worldPosition = instanceMatrix * worldPosition;
#endif
worldPosition = modelMatrix * worldPosition;
#endif`;const No={alphahash_fragment:QI,alphahash_pars_fragment:$B,alphamap_fragment:_C,alphamap_pars_fragment:sC,alphatest_fragment:FI,alphatest_pars_fragment:$C,aomap_fragment:gC,aomap_pars_fragment:kg,batching_pars_vertex:vI,batching_vertex:AB,begin_vertex:ZI,beginnormal_vertex:aC,bsdfs:jI,iridescence_fragment:WA,bumpmap_pars_fragment:qe,clipping_planes_fragment:It,clipping_planes_pars_fragment:lt,clipping_planes_pars_vertex:ze,clipping_planes_vertex:Ii,color_fragment:Ki,color_pars_fragment:rn,color_pars_vertex:gn,color_vertex:ho,common:uo,cube_uv_reflection_fragment:Tn,defaultnormal_vertex:Vo,displacementmap_pars_vertex:Dr,displacementmap_vertex:_s,emissivemap_fragment:ws,emissivemap_pars_fragment:rr,colorspace_fragment:wg,colorspace_pars_fragment:Hn,envmap_fragment:XI,envmap_common_pars_fragment:sr,envmap_pars_fragment:_g,envmap_pars_vertex:ba,envmap_physical_pars_fragment:AE,envmap_vertex:za,fog_vertex:NI,fog_pars_vertex:vr,fog_fragment:es,fog_pars_fragment:$a,gradientmap_pars_fragment:Ps,lightmap_pars_fragment:AI,lights_lambert_fragment:ka,lights_lambert_pars_fragment:UI,lights_pars_begin:WQ,lights_toon_fragment:VQ,lights_toon_pars_fragment:Zh,lights_phong_fragment:eB,lights_phong_pars_fragment:tB,lights_physical_fragment:ZQ,lights_physical_pars_fragment:kE,lights_fragment_begin:jh,lights_fragment_maps:Xh,lights_fragment_end:IC,logdepthbuf_fragment:CC,logdepthbuf_pars_fragment:eE,logdepthbuf_pars_vertex:_E,logdepthbuf_vertex:TE,map_fragment:zh,map_pars_fragment:$h,map_particle_fragment:Al,map_particle_pars_fragment:ha,metalnessmap_fragment:el,metalnessmap_pars_fragment:KE,morphinstance_vertex:tE,morphcolor_vertex:BC,morphnormal_vertex:iB,morphtarget_pars_vertex:jQ,morphtarget_vertex:tl,normal_fragment_begin:JE,normal_fragment_maps:Og,normal_pars_fragment:iE,normal_pars_vertex:il,normal_vertex:EC,normalmap_pars_fragment:XQ,clearcoat_normal_fragment_begin:ia,clearcoat_normal_fragment_maps:nE,clearcoat_pars_fragment:oE,iridescence_pars_fragment:zQ,opaque_fragment:nB,packing:rE,premultiplied_alpha_fragment:YE,project_vertex:$Q,dithering_fragment:zI,dithering_pars_fragment:sE,roughnessmap_fragment:Ac,roughnessmap_pars_fragment:ec,shadowmap_pars_fragment:cI,shadowmap_pars_vertex:tc,shadowmap_vertex:HE,shadowmask_pars_fragment:ic,skinbase_vertex:PE,skinning_pars_vertex:gE,skinning_vertex:aE,skinnormal_vertex:nc,specularmap_fragment:oc,specularmap_pars_fragment:rc,tonemapping_fragment:nl,tonemapping_pars_fragment:ol,transmission_fragment:IE,transmission_pars_fragment:rl,uv_pars_fragment:sl,uv_pars_vertex:gl,uv_vertex:al,worldpos_vertex:eI,background_vert:`varying vec2 vUv;
uniform mat3 uvTransform;
void main() {
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
gl_Position = vec4( position.xy, 1.0, 1.0 );
}`,background_frag:`uniform sampler2D t2D;
uniform float backgroundIntensity;
varying vec2 vUv;
void main() {
vec4 texColor = texture2D( t2D, vUv );
#ifdef DECODE_VIDEO_TEXTURE
texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );
#endif
texColor.rgb *= backgroundIntensity;
gl_FragColor = texColor;
#include <tonemapping_fragment>
#include <colorspace_fragment>
}`,backgroundCube_vert:`varying vec3 vWorldDirection;
#include <common>
void main() {
vWorldDirection = transformDirection( position, modelMatrix );
#include <begin_vertex>
#include <project_vertex>
gl_Position.z = gl_Position.w;
}`,backgroundCube_frag:`#ifdef ENVMAP_TYPE_CUBE
uniform samplerCube envMap;
#elif defined( ENVMAP_TYPE_CUBE_UV )
uniform sampler2D envMap;
#endif
uniform float flipEnvMap;
uniform float backgroundBlurriness;
uniform float backgroundIntensity;
uniform mat3 backgroundRotation;
varying vec3 vWorldDirection;
#include <cube_uv_reflection_fragment>
void main() {
#ifdef ENVMAP_TYPE_CUBE
vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );
#elif defined( ENVMAP_TYPE_CUBE_UV )
vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );
#else
vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );
#endif
texColor.rgb *= backgroundIntensity;
gl_FragColor = texColor;
#include <tonemapping_fragment>
#include <colorspace_fragment>
}`,cube_vert:`varying vec3 vWorldDirection;
#include <common>
void main() {
vWorldDirection = transformDirection( position, modelMatrix );
#include <begin_vertex>
#include <project_vertex>
gl_Position.z = gl_Position.w;
}`,cube_frag:`uniform samplerCube tCube;
uniform float tFlip;
uniform float opacity;
varying vec3 vWorldDirection;
void main() {
vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );
gl_FragColor = texColor;
gl_FragColor.a *= opacity;
#include <tonemapping_fragment>
#include <colorspace_fragment>
}`,depth_vert:`#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <displacementmap_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
varying vec2 vHighPrecisionZW;
void main() {
#include <uv_vertex>
#include <batching_vertex>
#include <skinbase_vertex>
#include <morphinstance_vertex>
#ifdef USE_DISPLACEMENTMAP
#include <beginnormal_vertex>
#include <morphnormal_vertex>
#include <skinnormal_vertex>
#endif
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
vHighPrecisionZW = gl_Position.zw;
}`,depth_frag:`#if DEPTH_PACKING == 3200
uniform float opacity;
#endif
#include <common>
#include <packing>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
varying vec2 vHighPrecisionZW;
void main() {
vec4 diffuseColor = vec4( 1.0 );
#include <clipping_planes_fragment>
#if DEPTH_PACKING == 3200
diffuseColor.a = opacity;
#endif
#include <map_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
#include <logdepthbuf_fragment>
float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;
#if DEPTH_PACKING == 3200
gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );
#elif DEPTH_PACKING == 3201
gl_FragColor = packDepthToRGBA( fragCoordZ );
#endif
}`,distanceRGBA_vert:`#define DISTANCE
varying vec3 vWorldPosition;
#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <displacementmap_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <batching_vertex>
#include <skinbase_vertex>
#include <morphinstance_vertex>
#ifdef USE_DISPLACEMENTMAP
#include <beginnormal_vertex>
#include <morphnormal_vertex>
#include <skinnormal_vertex>
#endif
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <worldpos_vertex>
#include <clipping_planes_vertex>
vWorldPosition = worldPosition.xyz;
}`,distanceRGBA_frag:`#define DISTANCE
uniform vec3 referencePosition;
uniform float nearDistance;
uniform float farDistance;
varying vec3 vWorldPosition;
#include <common>
#include <packing>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <clipping_planes_pars_fragment>
void main () {
vec4 diffuseColor = vec4( 1.0 );
#include <clipping_planes_fragment>
#include <map_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
float dist = length( vWorldPosition - referencePosition );
dist = ( dist - nearDistance ) / ( farDistance - nearDistance );
dist = saturate( dist );
gl_FragColor = packDepthToRGBA( dist );
}`,equirect_vert:`varying vec3 vWorldDirection;
#include <common>
void main() {
vWorldDirection = transformDirection( position, modelMatrix );
#include <begin_vertex>
#include <project_vertex>
}`,equirect_frag:`uniform sampler2D tEquirect;
varying vec3 vWorldDirection;
#include <common>
void main() {
vec3 direction = normalize( vWorldDirection );
vec2 sampleUV = equirectUv( direction );
gl_FragColor = texture2D( tEquirect, sampleUV );
#include <tonemapping_fragment>
#include <colorspace_fragment>
}`,linedashed_vert:`uniform float scale;
attribute float lineDistance;
varying float vLineDistance;
#include <common>
#include <uv_pars_vertex>
#include <color_pars_vertex>
#include <fog_pars_vertex>
#include <morphtarget_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
vLineDistance = scale * lineDistance;
#include <uv_vertex>
#include <color_vertex>
#include <morphinstance_vertex>
#include <morphcolor_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
#include <fog_vertex>
}`,linedashed_frag:`uniform vec3 diffuse;
uniform float opacity;
uniform float dashSize;
uniform float totalSize;
varying float vLineDistance;
#include <common>
#include <color_pars_fragment>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <fog_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
if ( mod( vLineDistance, totalSize ) > dashSize ) {
discard;
}
vec3 outgoingLight = vec3( 0.0 );
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <color_fragment>
outgoingLight = diffuseColor.rgb;
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
}`,meshbasic_vert:`#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <envmap_pars_vertex>
#include <color_pars_vertex>
#include <fog_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <color_vertex>
#include <morphinstance_vertex>
#include <morphcolor_vertex>
#include <batching_vertex>
#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )
#include <beginnormal_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#endif
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
#include <worldpos_vertex>
#include <envmap_vertex>
#include <fog_vertex>
}`,meshbasic_frag:`uniform vec3 diffuse;
uniform float opacity;
#ifndef FLAT_SHADED
varying vec3 vNormal;
#endif
#include <common>
#include <dithering_pars_fragment>
#include <color_pars_fragment>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <aomap_pars_fragment>
#include <lightmap_pars_fragment>
#include <envmap_common_pars_fragment>
#include <envmap_pars_fragment>
#include <fog_pars_fragment>
#include <specularmap_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <color_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
#include <specularmap_fragment>
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
#ifdef USE_LIGHTMAP
vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );
reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;
#else
reflectedLight.indirectDiffuse += vec3( 1.0 );
#endif
#include <aomap_fragment>
reflectedLight.indirectDiffuse *= diffuseColor.rgb;
vec3 outgoingLight = reflectedLight.indirectDiffuse;
#include <envmap_fragment>
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
#include <dithering_fragment>
}`,meshlambert_vert:`#define LAMBERT
varying vec3 vViewPosition;
#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <displacementmap_pars_vertex>
#include <envmap_pars_vertex>
#include <color_pars_vertex>
#include <fog_pars_vertex>
#include <normal_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <shadowmap_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <color_vertex>
#include <morphinstance_vertex>
#include <morphcolor_vertex>
#include <batching_vertex>
#include <beginnormal_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#include <normal_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
vViewPosition = - mvPosition.xyz;
#include <worldpos_vertex>
#include <envmap_vertex>
#include <shadowmap_vertex>
#include <fog_vertex>
}`,meshlambert_frag:`#define LAMBERT
uniform vec3 diffuse;
uniform vec3 emissive;
uniform float opacity;
#include <common>
#include <packing>
#include <dithering_pars_fragment>
#include <color_pars_fragment>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <aomap_pars_fragment>
#include <lightmap_pars_fragment>
#include <emissivemap_pars_fragment>
#include <envmap_common_pars_fragment>
#include <envmap_pars_fragment>
#include <fog_pars_fragment>
#include <bsdfs>
#include <lights_pars_begin>
#include <normal_pars_fragment>
#include <lights_lambert_pars_fragment>
#include <shadowmap_pars_fragment>
#include <bumpmap_pars_fragment>
#include <normalmap_pars_fragment>
#include <specularmap_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
vec3 totalEmissiveRadiance = emissive;
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <color_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
#include <specularmap_fragment>
#include <normal_fragment_begin>
#include <normal_fragment_maps>
#include <emissivemap_fragment>
#include <lights_lambert_fragment>
#include <lights_fragment_begin>
#include <lights_fragment_maps>
#include <lights_fragment_end>
#include <aomap_fragment>
vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
#include <envmap_fragment>
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
#include <dithering_fragment>
}`,meshmatcap_vert:`#define MATCAP
varying vec3 vViewPosition;
#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <color_pars_vertex>
#include <displacementmap_pars_vertex>
#include <fog_pars_vertex>
#include <normal_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <color_vertex>
#include <morphinstance_vertex>
#include <morphcolor_vertex>
#include <batching_vertex>
#include <beginnormal_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#include <normal_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
#include <fog_vertex>
vViewPosition = - mvPosition.xyz;
}`,meshmatcap_frag:`#define MATCAP
uniform vec3 diffuse;
uniform float opacity;
uniform sampler2D matcap;
varying vec3 vViewPosition;
#include <common>
#include <dithering_pars_fragment>
#include <color_pars_fragment>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <fog_pars_fragment>
#include <normal_pars_fragment>
#include <bumpmap_pars_fragment>
#include <normalmap_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <color_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
#include <normal_fragment_begin>
#include <normal_fragment_maps>
vec3 viewDir = normalize( vViewPosition );
vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );
vec3 y = cross( viewDir, x );
vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;
#ifdef USE_MATCAP
vec4 matcapColor = texture2D( matcap, uv );
#else
vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );
#endif
vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
#include <dithering_fragment>
}`,meshnormal_vert:`#define NORMAL
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )
varying vec3 vViewPosition;
#endif
#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <displacementmap_pars_vertex>
#include <normal_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <batching_vertex>
#include <beginnormal_vertex>
#include <morphinstance_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#include <normal_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )
vViewPosition = - mvPosition.xyz;
#endif
}`,meshnormal_frag:`#define NORMAL
uniform float opacity;
#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )
varying vec3 vViewPosition;
#endif
#include <packing>
#include <uv_pars_fragment>
#include <normal_pars_fragment>
#include <bumpmap_pars_fragment>
#include <normalmap_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );
#include <clipping_planes_fragment>
#include <logdepthbuf_fragment>
#include <normal_fragment_begin>
#include <normal_fragment_maps>
gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );
#ifdef OPAQUE
gl_FragColor.a = 1.0;
#endif
}`,meshphong_vert:`#define PHONG
varying vec3 vViewPosition;
#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <displacementmap_pars_vertex>
#include <envmap_pars_vertex>
#include <color_pars_vertex>
#include <fog_pars_vertex>
#include <normal_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <shadowmap_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <color_vertex>
#include <morphcolor_vertex>
#include <batching_vertex>
#include <beginnormal_vertex>
#include <morphinstance_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#include <normal_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
vViewPosition = - mvPosition.xyz;
#include <worldpos_vertex>
#include <envmap_vertex>
#include <shadowmap_vertex>
#include <fog_vertex>
}`,meshphong_frag:`#define PHONG
uniform vec3 diffuse;
uniform vec3 emissive;
uniform vec3 specular;
uniform float shininess;
uniform float opacity;
#include <common>
#include <packing>
#include <dithering_pars_fragment>
#include <color_pars_fragment>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <aomap_pars_fragment>
#include <lightmap_pars_fragment>
#include <emissivemap_pars_fragment>
#include <envmap_common_pars_fragment>
#include <envmap_pars_fragment>
#include <fog_pars_fragment>
#include <bsdfs>
#include <lights_pars_begin>
#include <normal_pars_fragment>
#include <lights_phong_pars_fragment>
#include <shadowmap_pars_fragment>
#include <bumpmap_pars_fragment>
#include <normalmap_pars_fragment>
#include <specularmap_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
vec3 totalEmissiveRadiance = emissive;
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <color_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
#include <specularmap_fragment>
#include <normal_fragment_begin>
#include <normal_fragment_maps>
#include <emissivemap_fragment>
#include <lights_phong_fragment>
#include <lights_fragment_begin>
#include <lights_fragment_maps>
#include <lights_fragment_end>
#include <aomap_fragment>
vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;
#include <envmap_fragment>
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
#include <dithering_fragment>
}`,meshphysical_vert:`#define STANDARD
varying vec3 vViewPosition;
#ifdef USE_TRANSMISSION
varying vec3 vWorldPosition;
#endif
#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <displacementmap_pars_vertex>
#include <color_pars_vertex>
#include <fog_pars_vertex>
#include <normal_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <shadowmap_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <color_vertex>
#include <morphinstance_vertex>
#include <morphcolor_vertex>
#include <batching_vertex>
#include <beginnormal_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#include <normal_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
vViewPosition = - mvPosition.xyz;
#include <worldpos_vertex>
#include <shadowmap_vertex>
#include <fog_vertex>
#ifdef USE_TRANSMISSION
vWorldPosition = worldPosition.xyz;
#endif
}`,meshphysical_frag:`#define STANDARD
#ifdef PHYSICAL
#define IOR
#define USE_SPECULAR
#endif
uniform vec3 diffuse;
uniform vec3 emissive;
uniform float roughness;
uniform float metalness;
uniform float opacity;
#ifdef IOR
uniform float ior;
#endif
#ifdef USE_SPECULAR
uniform float specularIntensity;
uniform vec3 specularColor;
#ifdef USE_SPECULAR_COLORMAP
uniform sampler2D specularColorMap;
#endif
#ifdef USE_SPECULAR_INTENSITYMAP
uniform sampler2D specularIntensityMap;
#endif
#endif
#ifdef USE_CLEARCOAT
uniform float clearcoat;
uniform float clearcoatRoughness;
#endif
#ifdef USE_DISPERSION
uniform float dispersion;
#endif
#ifdef USE_IRIDESCENCE
uniform float iridescence;
uniform float iridescenceIOR;
uniform float iridescenceThicknessMinimum;
uniform float iridescenceThicknessMaximum;
#endif
#ifdef USE_SHEEN
uniform vec3 sheenColor;
uniform float sheenRoughness;
#ifdef USE_SHEEN_COLORMAP
uniform sampler2D sheenColorMap;
#endif
#ifdef USE_SHEEN_ROUGHNESSMAP
uniform sampler2D sheenRoughnessMap;
#endif
#endif
#ifdef USE_ANISOTROPY
uniform vec2 anisotropyVector;
#ifdef USE_ANISOTROPYMAP
uniform sampler2D anisotropyMap;
#endif
#endif
varying vec3 vViewPosition;
#include <common>
#include <packing>
#include <dithering_pars_fragment>
#include <color_pars_fragment>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <aomap_pars_fragment>
#include <lightmap_pars_fragment>
#include <emissivemap_pars_fragment>
#include <iridescence_fragment>
#include <cube_uv_reflection_fragment>
#include <envmap_common_pars_fragment>
#include <envmap_physical_pars_fragment>
#include <fog_pars_fragment>
#include <lights_pars_begin>
#include <normal_pars_fragment>
#include <lights_physical_pars_fragment>
#include <transmission_pars_fragment>
#include <shadowmap_pars_fragment>
#include <bumpmap_pars_fragment>
#include <normalmap_pars_fragment>
#include <clearcoat_pars_fragment>
#include <iridescence_pars_fragment>
#include <roughnessmap_pars_fragment>
#include <metalnessmap_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
vec3 totalEmissiveRadiance = emissive;
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <color_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
#include <roughnessmap_fragment>
#include <metalnessmap_fragment>
#include <normal_fragment_begin>
#include <normal_fragment_maps>
#include <clearcoat_normal_fragment_begin>
#include <clearcoat_normal_fragment_maps>
#include <emissivemap_fragment>
#include <lights_physical_fragment>
#include <lights_fragment_begin>
#include <lights_fragment_maps>
#include <lights_fragment_end>
#include <aomap_fragment>
vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;
vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;
#include <transmission_fragment>
vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
#ifdef USE_SHEEN
float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );
outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;
#endif
#ifdef USE_CLEARCOAT
float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );
vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;
#endif
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
#include <dithering_fragment>
}`,meshtoon_vert:`#define TOON
varying vec3 vViewPosition;
#include <common>
#include <batching_pars_vertex>
#include <uv_pars_vertex>
#include <displacementmap_pars_vertex>
#include <color_pars_vertex>
#include <fog_pars_vertex>
#include <normal_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <shadowmap_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
#include <color_vertex>
#include <morphinstance_vertex>
#include <morphcolor_vertex>
#include <batching_vertex>
#include <beginnormal_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#include <normal_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <displacementmap_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
vViewPosition = - mvPosition.xyz;
#include <worldpos_vertex>
#include <shadowmap_vertex>
#include <fog_vertex>
}`,meshtoon_frag:`#define TOON
uniform vec3 diffuse;
uniform vec3 emissive;
uniform float opacity;
#include <common>
#include <packing>
#include <dithering_pars_fragment>
#include <color_pars_fragment>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <aomap_pars_fragment>
#include <lightmap_pars_fragment>
#include <emissivemap_pars_fragment>
#include <gradientmap_pars_fragment>
#include <fog_pars_fragment>
#include <bsdfs>
#include <lights_pars_begin>
#include <normal_pars_fragment>
#include <lights_toon_pars_fragment>
#include <shadowmap_pars_fragment>
#include <bumpmap_pars_fragment>
#include <normalmap_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
vec3 totalEmissiveRadiance = emissive;
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <color_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
#include <normal_fragment_begin>
#include <normal_fragment_maps>
#include <emissivemap_fragment>
#include <lights_toon_fragment>
#include <lights_fragment_begin>
#include <lights_fragment_maps>
#include <lights_fragment_end>
#include <aomap_fragment>
vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
#include <dithering_fragment>
}`,points_vert:`uniform float size;
uniform float scale;
#include <common>
#include <color_pars_vertex>
#include <fog_pars_vertex>
#include <morphtarget_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
#ifdef USE_POINTS_UV
varying vec2 vUv;
uniform mat3 uvTransform;
#endif
void main() {
#ifdef USE_POINTS_UV
vUv = ( uvTransform * vec3( uv, 1 ) ).xy;
#endif
#include <color_vertex>
#include <morphinstance_vertex>
#include <morphcolor_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <project_vertex>
gl_PointSize = size;
#ifdef USE_SIZEATTENUATION
bool isPerspective = isPerspectiveMatrix( projectionMatrix );
if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );
#endif
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
#include <worldpos_vertex>
#include <fog_vertex>
}`,points_frag:`uniform vec3 diffuse;
uniform float opacity;
#include <common>
#include <color_pars_fragment>
#include <map_particle_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <fog_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
vec3 outgoingLight = vec3( 0.0 );
#include <logdepthbuf_fragment>
#include <map_particle_fragment>
#include <color_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
outgoingLight = diffuseColor.rgb;
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
#include <premultiplied_alpha_fragment>
}`,shadow_vert:`#include <common>
#include <batching_pars_vertex>
#include <fog_pars_vertex>
#include <morphtarget_pars_vertex>
#include <skinning_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <shadowmap_pars_vertex>
void main() {
#include <batching_vertex>
#include <beginnormal_vertex>
#include <morphinstance_vertex>
#include <morphnormal_vertex>
#include <skinbase_vertex>
#include <skinnormal_vertex>
#include <defaultnormal_vertex>
#include <begin_vertex>
#include <morphtarget_vertex>
#include <skinning_vertex>
#include <project_vertex>
#include <logdepthbuf_vertex>
#include <worldpos_vertex>
#include <shadowmap_vertex>
#include <fog_vertex>
}`,shadow_frag:`uniform vec3 color;
uniform float opacity;
#include <common>
#include <packing>
#include <fog_pars_fragment>
#include <bsdfs>
#include <lights_pars_begin>
#include <logdepthbuf_pars_fragment>
#include <shadowmap_pars_fragment>
#include <shadowmask_pars_fragment>
void main() {
#include <logdepthbuf_fragment>
gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
}`,sprite_vert:`uniform float rotation;
uniform vec2 center;
#include <common>
#include <uv_pars_vertex>
#include <fog_pars_vertex>
#include <logdepthbuf_pars_vertex>
#include <clipping_planes_pars_vertex>
void main() {
#include <uv_vertex>
vec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );
vec2 scale;
scale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );
scale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );
#ifndef USE_SIZEATTENUATION
bool isPerspective = isPerspectiveMatrix( projectionMatrix );
if ( isPerspective ) scale *= - mvPosition.z;
#endif
vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;
vec2 rotatedPosition;
rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;
rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;
mvPosition.xy += rotatedPosition;
gl_Position = projectionMatrix * mvPosition;
#include <logdepthbuf_vertex>
#include <clipping_planes_vertex>
#include <fog_vertex>
}`,sprite_frag:`uniform vec3 diffuse;
uniform float opacity;
#include <common>
#include <uv_pars_fragment>
#include <map_pars_fragment>
#include <alphamap_pars_fragment>
#include <alphatest_pars_fragment>
#include <alphahash_pars_fragment>
#include <fog_pars_fragment>
#include <logdepthbuf_pars_fragment>
#include <clipping_planes_pars_fragment>
void main() {
vec4 diffuseColor = vec4( diffuse, opacity );
#include <clipping_planes_fragment>
vec3 outgoingLight = vec3( 0.0 );
#include <logdepthbuf_fragment>
#include <map_fragment>
#include <alphamap_fragment>
#include <alphatest_fragment>
#include <alphahash_fragment>
outgoingLight = diffuseColor.rgb;
#include <opaque_fragment>
#include <tonemapping_fragment>
#include <colorspace_fragment>
#include <fog_fragment>
}`},ki={common:{diffuse:{value:new ve(16777215)},opacity:{value:1},map:{value:null},mapTransform:{value:new Bo},alphaMap:{value:null},alphaMapTransform:{value:new Bo},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Bo}},envmap:{envMap:{value:null},envMapRotation:{value:new Bo},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Bo}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Bo}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Bo},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Bo},normalScale:{value:new Ot(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Bo},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Bo}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Bo}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Bo}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new ve(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new ve(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Bo},alphaTest:{value:0},uvTransform:{value:new Bo}},sprite:{diffuse:{value:new ve(16777215)},opacity:{value:1},center:{value:new Ot(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Bo},alphaMap:{value:null},alphaMapTransform:{value:new Bo},alphaTest:{value:0}}},la={basic:{uniforms:kt([ki.common,ki.specularmap,ki.envmap,ki.aomap,ki.lightmap,ki.fog]),vertexShader:No.meshbasic_vert,fragmentShader:No.meshbasic_frag},lambert:{uniforms:kt([ki.common,ki.specularmap,ki.envmap,ki.aomap,ki.lightmap,ki.emissivemap,ki.bumpmap,ki.normalmap,ki.displacementmap,ki.fog,ki.lights,{emissive:{value:new ve(0)}}]),vertexShader:No.meshlambert_vert,fragmentShader:No.meshlambert_frag},phong:{uniforms:kt([ki.common,ki.specularmap,ki.envmap,ki.aomap,ki.lightmap,ki.emissivemap,ki.bumpmap,ki.normalmap,ki.displacementmap,ki.fog,ki.lights,{emissive:{value:new ve(0)},specular:{value:new ve(1118481)},shininess:{value:30}}]),vertexShader:No.meshphong_vert,fragmentShader:No.meshphong_frag},standard:{uniforms:kt([ki.common,ki.envmap,ki.aomap,ki.lightmap,ki.emissivemap,ki.bumpmap,ki.normalmap,ki.displacementmap,ki.roughnessmap,ki.metalnessmap,ki.fog,ki.lights,{emissive:{value:new ve(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:No.meshphysical_vert,fragmentShader:No.meshphysical_frag},toon:{uniforms:kt([ki.common,ki.aomap,ki.lightmap,ki.emissivemap,ki.bumpmap,ki.normalmap,ki.displacementmap,ki.gradientmap,ki.fog,ki.lights,{emissive:{value:new ve(0)}}]),vertexShader:No.meshtoon_vert,fragmentShader:No.meshtoon_frag},matcap:{uniforms:kt([ki.common,ki.bumpmap,ki.normalmap,ki.displacementmap,ki.fog,{matcap:{value:null}}]),vertexShader:No.meshmatcap_vert,fragmentShader:No.meshmatcap_frag},points:{uniforms:kt([ki.points,ki.fog]),vertexShader:No.points_vert,fragmentShader:No.points_frag},dashed:{uniforms:kt([ki.common,ki.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:No.linedashed_vert,fragmentShader:No.linedashed_frag},depth:{uniforms:kt([ki.common,ki.displacementmap]),vertexShader:No.depth_vert,fragmentShader:No.depth_frag},normal:{uniforms:kt([ki.common,ki.bumpmap,ki.normalmap,ki.displacementmap,{opacity:{value:1}}]),vertexShader:No.meshnormal_vert,fragmentShader:No.meshnormal_frag},sprite:{uniforms:kt([ki.sprite,ki.fog]),vertexShader:No.sprite_vert,fragmentShader:No.sprite_frag},background:{uniforms:{uvTransform:{value:new Bo},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:No.background_vert,fragmentShader:No.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Bo}},vertexShader:No.backgroundCube_vert,fragmentShader:No.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:No.cube_vert,fragmentShader:No.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:No.equirect_vert,fragmentShader:No.equirect_frag},distanceRGBA:{uniforms:kt([ki.common,ki.displacementmap,{referencePosition:{value:new Ee},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:No.distanceRGBA_vert,fragmentShader:No.distanceRGBA_frag},shadow:{uniforms:kt([ki.lights,ki.fog,{color:{value:new ve(0)},opacity:{value:1}}]),vertexShader:No.shadow_vert,fragmentShader:No.shadow_frag}};la.physical={uniforms:kt([la.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Bo},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Bo},clearcoatNormalScale:{value:new Ot(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Bo},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Bo},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Bo},sheen:{value:0},sheenColor:{value:new ve(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Bo},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Bo},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Bo},transmissionSamplerSize:{value:new Ot},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Bo},attenuationDistance:{value:0},attenuationColor:{value:new ve(0)},specularColor:{value:new ve(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Bo},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Bo},anisotropyVector:{value:new Ot},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Bo}}]),vertexShader:No.meshphysical_vert,fragmentShader:No.meshphysical_frag};const TC={r:0,b:0,g:0},hI=new Er,hc=new tn;function cC(I,A,t,n,r,a,B){const Q=new ve(0);let y=a===!0?0:1,M,K,W=null,V=0,X=null;function iA(RA){let mA=RA.isScene===!0?RA.background:null;return mA&&mA.isTexture&&(mA=(RA.backgroundBlurriness>0?t:A).get(mA)),mA}function BA(RA){let mA=!1;const kA=iA(RA);kA===null?tA(Q,y):kA&&kA.isColor&&(tA(kA,1),mA=!0);const _e=I.xr.getEnvironmentBlendMode();_e==="additive"?n.buffers.color.setClear(0,0,0,1,B):_e==="alpha-blend"&&n.buffers.color.setClear(0,0,0,0,B),(I.autoClear||mA)&&I.clear(I.autoClearColor,I.autoClearDepth,I.autoClearStencil)}function nA(RA,mA){const kA=iA(mA);kA&&(kA.isCubeTexture||kA.mapping===xA)?(K===void 0&&(K=new mo(new ot(1,1,1),new di({name:"BackgroundCubeMaterial",uniforms:Wt(la.backgroundCube.uniforms),vertexShader:la.backgroundCube.vertexShader,fragmentShader:la.backgroundCube.fragmentShader,side:_,depthTest:!1,depthWrite:!1,fog:!1})),K.geometry.deleteAttribute("normal"),K.geometry.deleteAttribute("uv"),K.onBeforeRender=function(_e,ae,fe){this.matrixWorld.copyPosition(fe.matrixWorld)},Object.defineProperty(K.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(K)),hI.copy(mA.backgroundRotation),hI.x*=-1,hI.y*=-1,hI.z*=-1,kA.isCubeTexture&&kA.isRenderTargetTexture===!1&&(hI.y*=-1,hI.z*=-1),K.material.uniforms.envMap.value=kA,K.material.uniforms.flipEnvMap.value=kA.isCubeTexture&&kA.isRenderTargetTexture===!1?-1:1,K.material.uniforms.backgroundBlurriness.value=mA.backgroundBlurriness,K.material.uniforms.backgroundIntensity.value=mA.backgroundIntensity,K.material.uniforms.backgroundRotation.value.setFromMatrix4(hc.makeRotationFromEuler(hI)),K.material.toneMapped=oo.getTransfer(kA.colorSpace)!==eA,(W!==kA||V!==kA.version||X!==I.toneMapping)&&(K.material.needsUpdate=!0,W=kA,V=kA.version,X=I.toneMapping),K.layers.enableAll(),RA.unshift(K,K.geometry,K.material,0,0,null)):kA&&kA.isTexture&&(M===void 0&&(M=new mo(new EI(2,2),new di({name:"BackgroundMaterial",uniforms:Wt(la.background.uniforms),vertexShader:la.background.vertexShader,fragmentShader:la.background.fragmentShader,side:z,depthTest:!1,depthWrite:!1,fog:!1})),M.geometry.deleteAttribute("normal"),Object.defineProperty(M.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(M)),M.material.uniforms.t2D.value=kA,M.material.uniforms.backgroundIntensity.value=mA.backgroundIntensity,M.material.toneMapped=oo.getTransfer(kA.colorSpace)!==eA,kA.matrixAutoUpdate===!0&&kA.updateMatrix(),M.material.uniforms.uvTransform.value.copy(kA.matrix),(W!==kA||V!==kA.version||X!==I.toneMapping)&&(M.material.needsUpdate=!0,W=kA,V=kA.version,X=I.toneMapping),M.layers.enableAll(),RA.unshift(M,M.geometry,M.material,0,0,null))}function tA(RA,mA){RA.getRGB(TC,ji(I)),n.buffers.color.setClear(TC.r,TC.g,TC.b,mA,B)}return{getClearColor:function(){return Q},setClearColor:function(RA,mA=1){Q.set(RA),y=mA,tA(Q,y)},getClearAlpha:function(){return y},setClearAlpha:function(RA){y=RA,tA(Q,y)},render:BA,addToRenderList:nA}}function hl(I,A){const t=I.getParameter(I.MAX_VERTEX_ATTRIBS),n={},r=V(null);let a=r,B=!1;function Q(KA,tt,Rt,Ze,yt){let jt=!1;const oi=W(Ze,Rt,tt);a!==oi&&(a=oi,M(a.object)),jt=X(KA,Ze,Rt,yt),jt&&iA(KA,Ze,Rt,yt),yt!==null&&A.update(yt,I.ELEMENT_ARRAY_BUFFER),(jt||B)&&(B=!1,kA(KA,tt,Rt,Ze),yt!==null&&I.bindBuffer(I.ELEMENT_ARRAY_BUFFER,A.get(yt).buffer))}function y(){return I.createVertexArray()}function M(KA){return I.bindVertexArray(KA)}function K(KA){return I.deleteVertexArray(KA)}function W(KA,tt,Rt){const Ze=Rt.wireframe===!0;let yt=n[KA.id];yt===void 0&&(yt={},n[KA.id]=yt);let jt=yt[tt.id];jt===void 0&&(jt={},yt[tt.id]=jt);let oi=jt[Ze];return oi===void 0&&(oi=V(y()),jt[Ze]=oi),oi}function V(KA){const tt=[],Rt=[],Ze=[];for(let yt=0;yt<t;yt++)tt[yt]=0,Rt[yt]=0,Ze[yt]=0;return{geometry:null,program:null,wireframe:!1,newAttributes:tt,enabledAttributes:Rt,attributeDivisors:Ze,object:KA,attributes:{},index:null}}function X(KA,tt,Rt,Ze){const yt=a.attributes,jt=tt.attributes;let oi=0;const Hi=Rt.getAttributes();for(const Nt in Hi)if(Hi[Nt].location>=0){const Di=yt[Nt];let Gn=jt[Nt];if(Gn===void 0&&(Nt==="instanceMatrix"&&KA.instanceMatrix&&(Gn=KA.instanceMatrix),Nt==="instanceColor"&&KA.instanceColor&&(Gn=KA.instanceColor)),Di===void 0||Di.attribute!==Gn||Gn&&Di.data!==Gn.data)return!0;oi++}return a.attributesNum!==oi||a.index!==Ze}function iA(KA,tt,Rt,Ze){const yt={},jt=tt.attributes;let oi=0;const Hi=Rt.getAttributes();for(const Nt in Hi)if(Hi[Nt].location>=0){let Di=jt[Nt];Di===void 0&&(Nt==="instanceMatrix"&&KA.instanceMatrix&&(Di=KA.instanceMatrix),Nt==="instanceColor"&&KA.instanceColor&&(Di=KA.instanceColor));const Gn={};Gn.attribute=Di,Di&&Di.data&&(Gn.data=Di.data),yt[Nt]=Gn,oi++}a.attributes=yt,a.attributesNum=oi,a.index=Ze}function BA(){const KA=a.newAttributes;for(let tt=0,Rt=KA.length;tt<Rt;tt++)KA[tt]=0}function nA(KA){tA(KA,0)}function tA(KA,tt){const Rt=a.newAttributes,Ze=a.enabledAttributes,yt=a.attributeDivisors;Rt[KA]=1,Ze[KA]===0&&(I.enableVertexAttribArray(KA),Ze[KA]=1),yt[KA]!==tt&&(I.vertexAttribDivisor(KA,tt),yt[KA]=tt)}function RA(){const KA=a.newAttributes,tt=a.enabledAttributes;for(let Rt=0,Ze=tt.length;Rt<Ze;Rt++)tt[Rt]!==KA[Rt]&&(I.disableVertexAttribArray(Rt),tt[Rt]=0)}function mA(KA,tt,Rt,Ze,yt,jt,oi){oi===!0?I.vertexAttribIPointer(KA,tt,Rt,yt,jt):I.vertexAttribPointer(KA,tt,Rt,Ze,yt,jt)}function kA(KA,tt,Rt,Ze){BA();const yt=Ze.attributes,jt=Rt.getAttributes(),oi=tt.defaultAttributeValues;for(const Hi in jt){const Nt=jt[Hi];if(Nt.location>=0){let wi=yt[Hi];if(wi===void 0&&(Hi==="instanceMatrix"&&KA.instanceMatrix&&(wi=KA.instanceMatrix),Hi==="instanceColor"&&KA.instanceColor&&(wi=KA.instanceColor)),wi!==void 0){const Di=wi.normalized,Gn=wi.itemSize,Zo=A.get(wi);if(Zo===void 0)continue;const Is=Zo.buffer,Pt=Zo.type,Gi=Zo.bytesPerElement,Un=Pt===I.INT||Pt===I.UNSIGNED_INT||wi.gpuType===Zr;if(wi.isInterleavedBufferAttribute){const Fi=wi.data,jo=Fi.stride,cr=wi.offset;if(Fi.isInstancedInterleavedBuffer){for(let st=0;st<Nt.locationSize;st++)tA(Nt.location+st,Fi.meshPerAttribute);KA.isInstancedMesh!==!0&&Ze._maxInstanceCount===void 0&&(Ze._maxInstanceCount=Fi.meshPerAttribute*Fi.count)}else for(let st=0;st<Nt.locationSize;st++)nA(Nt.location+st);I.bindBuffer(I.ARRAY_BUFFER,Is);for(let st=0;st<Nt.locationSize;st++)mA(Nt.location+st,Gn/Nt.locationSize,Pt,Di,jo*Gi,(cr+Gn/Nt.locationSize*st)*Gi,Un)}else{if(wi.isInstancedBufferAttribute){for(let Fi=0;Fi<Nt.locationSize;Fi++)tA(Nt.location+Fi,wi.meshPerAttribute);KA.isInstancedMesh!==!0&&Ze._maxInstanceCount===void 0&&(Ze._maxInstanceCount=wi.meshPerAttribute*wi.count)}else for(let Fi=0;Fi<Nt.locationSize;Fi++)nA(Nt.location+Fi);I.bindBuffer(I.ARRAY_BUFFER,Is);for(let Fi=0;Fi<Nt.locationSize;Fi++)mA(Nt.location+Fi,Gn/Nt.locationSize,Pt,Di,Gn*Gi,Gn/Nt.locationSize*Fi*Gi,Un)}}else if(oi!==void 0){const Di=oi[Hi];if(Di!==void 0)switch(Di.length){case 2:I.vertexAttrib2fv(Nt.location,Di);break;case 3:I.vertexAttrib3fv(Nt.location,Di);break;case 4:I.vertexAttrib4fv(Nt.location,Di);break;default:I.vertexAttrib1fv(Nt.location,Di)}}}}RA()}function _e(){Je();for(const KA in n){const tt=n[KA];for(const Rt in tt){const Ze=tt[Rt];for(const yt in Ze)K(Ze[yt].object),delete Ze[yt];delete tt[Rt]}delete n[KA]}}function ae(KA){if(n[KA.id]===void 0)return;const tt=n[KA.id];for(const Rt in tt){const Ze=tt[Rt];for(const yt in Ze)K(Ze[yt].object),delete Ze[yt];delete tt[Rt]}delete n[KA.id]}function fe(KA){for(const tt in n){const Rt=n[tt];if(Rt[KA.id]===void 0)continue;const Ze=Rt[KA.id];for(const yt in Ze)K(Ze[yt].object),delete Ze[yt];delete Rt[KA.id]}}function Je(){zA(),B=!0,a!==r&&(a=r,M(a.object))}function zA(){r.geometry=null,r.program=null,r.wireframe=!1}return{setup:Q,reset:Je,resetDefaultState:zA,dispose:_e,releaseStatesOfGeometry:ae,releaseStatesOfProgram:fe,initAttributes:BA,enableAttribute:nA,disableUnusedAttributes:RA}}function lc(I,A,t){let n;function r(M){n=M}function a(M,K){I.drawArrays(n,M,K),t.update(K,n,1)}function B(M,K,W){W!==0&&(I.drawArraysInstanced(n,M,K,W),t.update(K,n,W))}function Q(M,K,W){if(W===0)return;const V=A.get("WEBGL_multi_draw");if(V===null)for(let X=0;X<W;X++)this.render(M[X],K[X]);else{V.multiDrawArraysWEBGL(n,M,0,K,0,W);let X=0;for(let iA=0;iA<W;iA++)X+=K[iA];t.update(X,n,1)}}function y(M,K,W,V){if(W===0)return;const X=A.get("WEBGL_multi_draw");if(X===null)for(let iA=0;iA<M.length;iA++)B(M[iA],K[iA],V[iA]);else{X.multiDrawArraysInstancedWEBGL(n,M,0,K,0,V,0,W);let iA=0;for(let BA=0;BA<W;BA++)iA+=K[BA];for(let BA=0;BA<V.length;BA++)t.update(iA,n,V[BA])}}this.setMode=r,this.render=a,this.renderInstances=B,this.renderMultiDraw=Q,this.renderMultiDrawInstances=y}function hC(I,A,t,n){let r;function a(){if(r!==void 0)return r;if(A.has("EXT_texture_filter_anisotropic")===!0){const ae=A.get("EXT_texture_filter_anisotropic");r=I.getParameter(ae.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else r=0;return r}function B(ae){return!(ae!==os&&n.convert(ae)!==I.getParameter(I.IMPLEMENTATION_COLOR_READ_FORMAT))}function Q(ae){const fe=ae===Ss&&(A.has("EXT_color_buffer_half_float")||A.has("EXT_color_buffer_float"));return!(ae!==Mi&&n.convert(ae)!==I.getParameter(I.IMPLEMENTATION_COLOR_READ_TYPE)&&ae!==hr&&!fe)}function y(ae){if(ae==="highp"){if(I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.HIGH_FLOAT).precision>0&&I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.HIGH_FLOAT).precision>0)return"highp";ae="mediump"}return ae==="mediump"&&I.getShaderPrecisionFormat(I.VERTEX_SHADER,I.MEDIUM_FLOAT).precision>0&&I.getShaderPrecisionFormat(I.FRAGMENT_SHADER,I.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let M=t.precision!==void 0?t.precision:"highp";const K=y(M);K!==M&&(console.warn("THREE.WebGLRenderer:",M,"not supported, using",K,"instead."),M=K);const W=t.logarithmicDepthBuffer===!0,V=I.getParameter(I.MAX_TEXTURE_IMAGE_UNITS),X=I.getParameter(I.MAX_VERTEX_TEXTURE_IMAGE_UNITS),iA=I.getParameter(I.MAX_TEXTURE_SIZE),BA=I.getParameter(I.MAX_CUBE_MAP_TEXTURE_SIZE),nA=I.getParameter(I.MAX_VERTEX_ATTRIBS),tA=I.getParameter(I.MAX_VERTEX_UNIFORM_VECTORS),RA=I.getParameter(I.MAX_VARYING_VECTORS),mA=I.getParameter(I.MAX_FRAGMENT_UNIFORM_VECTORS),kA=X>0,_e=I.getParameter(I.MAX_SAMPLES);return{isWebGL2:!0,getMaxAnisotropy:a,getMaxPrecision:y,textureFormatReadable:B,textureTypeReadable:Q,precision:M,logarithmicDepthBuffer:W,maxTextures:V,maxVertexTextures:X,maxTextureSize:iA,maxCubemapSize:BA,maxAttributes:nA,maxVertexUniforms:tA,maxVaryings:RA,maxFragmentUniforms:mA,vertexTextures:kA,maxSamples:_e}}function rB(I){const A=this;let t=null,n=0,r=!1,a=!1;const B=new zr,Q=new Bo,y={value:null,needsUpdate:!1};this.uniform=y,this.numPlanes=0,this.numIntersection=0,this.init=function(W,V){const X=W.length!==0||V||n!==0||r;return r=V,n=W.length,X},this.beginShadows=function(){a=!0,K(null)},this.endShadows=function(){a=!1},this.setGlobalState=function(W,V){t=K(W,V,0)},this.setState=function(W,V,X){const iA=W.clippingPlanes,BA=W.clipIntersection,nA=W.clipShadows,tA=I.get(W);if(!r||iA===null||iA.length===0||a&&!nA)a?K(null):M();else{const RA=a?0:n,mA=RA*4;let kA=tA.clippingState||null;y.value=kA,kA=K(iA,V,mA,X);for(let _e=0;_e!==mA;++_e)kA[_e]=t[_e];tA.clippingState=kA,this.numIntersection=BA?this.numPlanes:0,this.numPlanes+=RA}};function M(){y.value!==t&&(y.value=t,y.needsUpdate=n>0),A.numPlanes=n,A.numIntersection=0}function K(W,V,X,iA){const BA=W!==null?W.length:0;let nA=null;if(BA!==0){if(nA=y.value,iA!==!0||nA===null){const tA=X+BA*4,RA=V.matrixWorldInverse;Q.getNormalMatrix(RA),(nA===null||nA.length<tA)&&(nA=new Float32Array(tA));for(let mA=0,kA=X;mA!==BA;++mA,kA+=4)B.copy(W[mA]).applyMatrix4(RA,Q),B.normal.toArray(nA,kA),nA[kA+3]=B.constant}y.value=nA,y.needsUpdate=!0}return A.numPlanes=BA,A.numIntersection=0,nA}}function ll(I){let A=new WeakMap;function t(B,Q){return Q===_o?B.mapping=Ao:Q===Kt&&(B.mapping=Kn),B}function n(B){if(B&&B.isTexture){const Q=B.mapping;if(Q===_o||Q===Kt)if(A.has(B)){const y=A.get(B).texture;return t(y,B.mapping)}else{const y=B.image;if(y&&y.height>0){const M=new Ni(y.height);return M.fromEquirectangularTexture(I,B),A.set(B,M),B.addEventListener("dispose",r),t(M.texture,B.mapping)}else return null}}return B}function r(B){const Q=B.target;Q.removeEventListener("dispose",r);const y=A.get(Q);y!==void 0&&(A.delete(Q),y.dispose())}function a(){A=new WeakMap}return{get:n,dispose:a}}class cE extends Mn{constructor(A=-1,t=1,n=1,r=-1,a=.1,B=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=A,this.right=t,this.top=n,this.bottom=r,this.near=a,this.far=B,this.updateProjectionMatrix()}copy(A,t){return super.copy(A,t),this.left=A.left,this.right=A.right,this.top=A.top,this.bottom=A.bottom,this.near=A.near,this.far=A.far,this.zoom=A.zoom,this.view=A.view===null?null:Object.assign({},A.view),this}setViewOffset(A,t,n,r,a,B){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=A,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=r,this.view.width=a,this.view.height=B,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){const A=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,r=(this.top+this.bottom)/2;let a=n-A,B=n+A,Q=r+t,y=r-t;if(this.view!==null&&this.view.enabled){const M=(this.right-this.left)/this.view.fullWidth/this.zoom,K=(this.top-this.bottom)/this.view.fullHeight/this.zoom;a+=M*this.view.offsetX,B=a+M*this.view.width,Q-=K*this.view.offsetY,y=Q-K*this.view.height}this.projectionMatrix.makeOrthographic(a,B,Q,y,this.near,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(A){const t=super.toJSON(A);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,this.view!==null&&(t.object.view=Object.assign({},this.view)),t}}const KC=4,dc=[.125,.215,.35,.446,.526,.582],lC=20,XE=new cE,uc=new ve;let zE=null,$E=0,AQ=0,eQ=!1;const LI=(1+Math.sqrt(5))/2,JC=1/LI,dC=[new Ee(-LI,JC,0),new Ee(LI,JC,0),new Ee(-JC,0,LI),new Ee(JC,0,LI),new Ee(0,LI,-JC),new Ee(0,LI,JC),new Ee(-1,1,-1),new Ee(1,1,-1),new Ee(-1,1,1),new Ee(1,1,1)];class tQ{constructor(A){this._renderer=A,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(A,t=0,n=.1,r=100){zE=this._renderer.getRenderTarget(),$E=this._renderer.getActiveCubeFace(),AQ=this._renderer.getActiveMipmapLevel(),eQ=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);const a=this._allocateTargets();return a.depthBuffer=!0,this._sceneToCubeUV(A,n,r,a),t>0&&this._blur(a,0,0,t),this._applyPMREM(a),this._cleanup(a),a}fromEquirectangular(A,t=null){return this._fromTexture(A,t)}fromCubemap(A,t=null){return this._fromTexture(A,t)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=fc(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=aB(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(A){this._lodMax=Math.floor(Math.log2(A)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let A=0;A<this._lodPlanes.length;A++)this._lodPlanes[A].dispose()}_cleanup(A){this._renderer.setRenderTarget(zE,$E,AQ),this._renderer.xr.enabled=eQ,A.scissorTest=!1,gB(A,0,0,A.width,A.height)}_fromTexture(A,t){A.mapping===Ao||A.mapping===Kn?this._setSize(A.image.length===0?16:A.image[0].width||A.image[0].image.width):this._setSize(A.image.width/4),zE=this._renderer.getRenderTarget(),$E=this._renderer.getActiveCubeFace(),AQ=this._renderer.getActiveMipmapLevel(),eQ=this._renderer.xr.enabled,this._renderer.xr.enabled=!1;const n=t||this._allocateTargets();return this._textureToCubeUV(A,n),this._applyPMREM(n),this._cleanup(n),n}_allocateTargets(){const A=3*Math.max(this._cubeSize,112),t=4*this._cubeSize,n={magFilter:DA,minFilter:DA,generateMipmaps:!1,type:Ss,format:os,colorSpace:jr,depthBuffer:!1},r=sB(A,t,n);if(this._pingPongRenderTarget===null||this._pingPongRenderTarget.width!==A||this._pingPongRenderTarget.height!==t){this._pingPongRenderTarget!==null&&this._dispose(),this._pingPongRenderTarget=sB(A,t,n);const{_lodMax:a}=this;({sizeLods:this._sizeLods,lodPlanes:this._lodPlanes,sigmas:this._sigmas}=Ts(a)),this._blurMaterial=hE(a,A,t)}return r}_compileMaterial(A){const t=new mo(this._lodPlanes[0],A);this._renderer.compile(t,XE)}_sceneToCubeUV(A,t,n,r){const Q=new ti(90,1,t,n),y=[1,-1,1,1,1,1],M=[1,1,1,-1,-1,-1],K=this._renderer,W=K.autoClear,V=K.toneMapping;K.getClearColor(uc),K.toneMapping=le,K.autoClear=!1;const X=new At({name:"PMREM.Background",side:_,depthWrite:!1,depthTest:!1}),iA=new mo(new ot,X);let BA=!1;const nA=A.background;nA?nA.isColor&&(X.color.copy(nA),A.background=null,BA=!0):(X.color.copy(uc),BA=!0);for(let tA=0;tA<6;tA++){const RA=tA%3;RA===0?(Q.up.set(0,y[tA],0),Q.lookAt(M[tA],0,0)):RA===1?(Q.up.set(0,0,y[tA]),Q.lookAt(0,M[tA],0)):(Q.up.set(0,y[tA],0),Q.lookAt(0,0,M[tA]));const mA=this._cubeSize;gB(r,RA*mA,tA>2?mA:0,mA,mA),K.setRenderTarget(r),BA&&K.render(iA,Q),K.render(A,Q)}iA.geometry.dispose(),iA.material.dispose(),K.toneMapping=V,K.autoClear=W,A.background=nA}_textureToCubeUV(A,t){const n=this._renderer,r=A.mapping===Ao||A.mapping===Kn;r?(this._cubemapMaterial===null&&(this._cubemapMaterial=fc()),this._cubemapMaterial.uniforms.flipEnvMap.value=A.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=aB());const a=r?this._cubemapMaterial:this._equirectMaterial,B=new mo(this._lodPlanes[0],a),Q=a.uniforms;Q.envMap.value=A;const y=this._cubeSize;gB(t,0,0,3*y,2*y),n.setRenderTarget(t),n.render(B,XE)}_applyPMREM(A){const t=this._renderer,n=t.autoClear;t.autoClear=!1;const r=this._lodPlanes.length;for(let a=1;a<r;a++){const B=Math.sqrt(this._sigmas[a]*this._sigmas[a]-this._sigmas[a-1]*this._sigmas[a-1]),Q=dC[(r-a-1)%dC.length];this._blur(A,a-1,a,B,Q)}t.autoClear=n}_blur(A,t,n,r,a){const B=this._pingPongRenderTarget;this._halfBlur(A,B,t,n,r,"latitudinal",a),this._halfBlur(B,A,n,n,r,"longitudinal",a)}_halfBlur(A,t,n,r,a,B,Q){const y=this._renderer,M=this._blurMaterial;B!=="latitudinal"&&B!=="longitudinal"&&console.error("blur direction must be either latitudinal or longitudinal!");const K=3,W=new mo(this._lodPlanes[r],M),V=M.uniforms,X=this._sizeLods[n]-1,iA=isFinite(a)?Math.PI/(2*X):2*Math.PI/(2*lC-1),BA=a/iA,nA=isFinite(a)?1+Math.floor(K*BA):lC;nA>lC&&console.warn(`sigmaRadians, ${a}, is too large and will clip, as it requested ${nA} samples when the maximum is set to ${lC}`);const tA=[];let RA=0;for(let fe=0;fe<lC;++fe){const Je=fe/BA,zA=Math.exp(-Je*Je/2);tA.push(zA),fe===0?RA+=zA:fe<nA&&(RA+=2*zA)}for(let fe=0;fe<tA.length;fe++)tA[fe]=tA[fe]/RA;V.envMap.value=A.texture,V.samples.value=nA,V.weights.value=tA,V.latitudinal.value=B==="latitudinal",Q&&(V.poleAxis.value=Q);const{_lodMax:mA}=this;V.dTheta.value=iA,V.mipInt.value=mA-n;const kA=this._sizeLods[r],_e=3*kA*(r>mA-KC?r-mA+KC:0),ae=4*(this._cubeSize-kA);gB(t,_e,ae,3*kA,2*kA),y.setRenderTarget(t),y.render(W,XE)}}function Ts(I){const A=[],t=[],n=[];let r=I;const a=I-KC+1+dc.length;for(let B=0;B<a;B++){const Q=Math.pow(2,r);t.push(Q);let y=1/Q;B>I-KC?y=dc[B-I+KC-1]:B===0&&(y=0),n.push(y);const M=1/(Q-2),K=-M,W=1+M,V=[K,K,W,K,W,W,K,K,W,W,K,W],X=6,iA=6,BA=3,nA=2,tA=1,RA=new Float32Array(BA*iA*X),mA=new Float32Array(nA*iA*X),kA=new Float32Array(tA*iA*X);for(let ae=0;ae<X;ae++){const fe=ae%3*2/3-1,Je=ae>2?0:-1,zA=[fe,Je,0,fe+2/3,Je,0,fe+2/3,Je+1,0,fe,Je,0,fe+2/3,Je+1,0,fe,Je+1,0];RA.set(zA,BA*iA*ae),mA.set(V,nA*iA*ae);const KA=[ae,ae,ae,ae,ae,ae];kA.set(KA,tA*iA*ae)}const _e=new li;_e.setAttribute("position",new oe(RA,BA)),_e.setAttribute("uv",new oe(mA,nA)),_e.setAttribute("faceIndex",new oe(kA,tA)),A.push(_e),r>KC&&r--}return{lodPlanes:A,sizeLods:t,sigmas:n}}function sB(I,A,t){const n=new zo(I,A,t);return n.texture.mapping=xA,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function gB(I,A,t,n,r){I.viewport.set(A,t,n,r),I.scissor.set(A,t,n,r)}function hE(I,A,t){const n=new Float32Array(lC),r=new Ee(0,1,0);return new di({name:"SphericalGaussianBlur",defines:{n:lC,CUBEUV_TEXEL_WIDTH:1/A,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${I}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:r}},vertexShader:uC(),fragmentShader:`
precision mediump float;
precision mediump int;
varying vec3 vOutputDirection;
uniform sampler2D envMap;
uniform int samples;
uniform float weights[ n ];
uniform bool latitudinal;
uniform float dTheta;
uniform float mipInt;
uniform vec3 poleAxis;
#define ENVMAP_TYPE_CUBE_UV
#include <cube_uv_reflection_fragment>
vec3 getSample( float theta, vec3 axis ) {
float cosTheta = cos( theta );
// Rodrigues' axis-angle rotation
vec3 sampleDirection = vOutputDirection * cosTheta
+ cross( axis, vOutputDirection ) * sin( theta )
+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );
return bilinearCubeUV( envMap, sampleDirection, mipInt );
}
void main() {
vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );
if ( all( equal( axis, vec3( 0.0 ) ) ) ) {
axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );
}
axis = normalize( axis );
gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );
gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );
for ( int i = 1; i < n; i++ ) {
if ( i >= samples ) {
break;
}
float theta = dTheta * float( i );
gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );
gl_FragColor.rgb += weights[ i ] * getSample( theta, axis );
}
}
`,blending:v,depthTest:!1,depthWrite:!1})}function aB(){return new di({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:uC(),fragmentShader:`
precision mediump float;
precision mediump int;
varying vec3 vOutputDirection;
uniform sampler2D envMap;
#include <common>
void main() {
vec3 outputDirection = normalize( vOutputDirection );
vec2 uv = equirectUv( outputDirection );
gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );
}
`,blending:v,depthTest:!1,depthWrite:!1})}function fc(){return new di({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:uC(),fragmentShader:`
precision mediump float;
precision mediump int;
uniform float flipEnvMap;
varying vec3 vOutputDirection;
uniform samplerCube envMap;
void main() {
gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );
}
`,blending:v,depthTest:!1,depthWrite:!1})}function uC(){return`
precision mediump float;
precision mediump int;
attribute float faceIndex;
varying vec3 vOutputDirection;
// RH coordinate system; PMREM face-indexing convention
vec3 getDirection( vec2 uv, float face ) {
uv = 2.0 * uv - 1.0;
vec3 direction = vec3( uv, 1.0 );
if ( face == 0.0 ) {
direction = direction.zyx; // ( 1, v, u ) pos x
} else if ( face == 1.0 ) {
direction = direction.xzy;
direction.xz *= -1.0; // ( -u, 1, -v ) pos y
} else if ( face == 2.0 ) {
direction.x *= -1.0; // ( -u, v, 1 ) pos z
} else if ( face == 3.0 ) {
direction = direction.zyx;
direction.xz *= -1.0; // ( -1, v, -u ) neg x
} else if ( face == 4.0 ) {
direction = direction.xzy;
direction.xy *= -1.0; // ( -u, -1, v ) neg y
} else if ( face == 5.0 ) {
direction.z *= -1.0; // ( u, v, -1 ) neg z
}
return direction;
}
void main() {
vOutputDirection = getDirection( uv, faceIndex );
gl_Position = vec4( position, 1.0 );
}
`}function dl(I){let A=new WeakMap,t=null;function n(Q){if(Q&&Q.isTexture){const y=Q.mapping,M=y===_o||y===Kt,K=y===Ao||y===Kn;if(M||K){let W=A.get(Q);const V=W!==void 0?W.texture.pmremVersion:0;if(Q.isRenderTargetTexture&&Q.pmremVersion!==V)return t===null&&(t=new tQ(I)),W=M?t.fromEquirectangular(Q,W):t.fromCubemap(Q,W),W.texture.pmremVersion=Q.pmremVersion,A.set(Q,W),W.texture;if(W!==void 0)return W.texture;{const X=Q.image;return M&&X&&X.height>0||K&&X&&r(X)?(t===null&&(t=new tQ(I)),W=M?t.fromEquirectangular(Q):t.fromCubemap(Q),W.texture.pmremVersion=Q.pmremVersion,A.set(Q,W),Q.addEventListener("dispose",a),W.texture):null}}}return Q}function r(Q){let y=0;const M=6;for(let K=0;K<M;K++)Q[K]!==void 0&&y++;return y===M}function a(Q){const y=Q.target;y.removeEventListener("dispose",a);const M=A.get(y);M!==void 0&&(A.delete(y),M.dispose())}function B(){A=new WeakMap,t!==null&&(t.dispose(),t=null)}return{get:n,dispose:B}}function pc(I){const A={};function t(n){if(A[n]!==void 0)return A[n];let r;switch(n){case"WEBGL_depth_texture":r=I.getExtension("WEBGL_depth_texture")||I.getExtension("MOZ_WEBGL_depth_texture")||I.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":r=I.getExtension("EXT_texture_filter_anisotropic")||I.getExtension("MOZ_EXT_texture_filter_anisotropic")||I.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":r=I.getExtension("WEBGL_compressed_texture_s3tc")||I.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||I.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":r=I.getExtension("WEBGL_compressed_texture_pvrtc")||I.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:r=I.getExtension(n)}return A[n]=r,r}return{has:function(n){return t(n)!==null},init:function(){t("EXT_color_buffer_float"),t("WEBGL_clip_cull_distance"),t("OES_texture_float_linear"),t("EXT_color_buffer_half_float"),t("WEBGL_multisampled_render_to_texture"),t("WEBGL_render_shared_exponent")},get:function(n){const r=t(n);return r===null&&console.warn("THREE.WebGLRenderer: "+n+" extension not supported."),r}}}function mc(I,A,t,n){const r={},a=new WeakMap;function B(W){const V=W.target;V.index!==null&&A.remove(V.index);for(const iA in V.attributes)A.remove(V.attributes[iA]);for(const iA in V.morphAttributes){const BA=V.morphAttributes[iA];for(let nA=0,tA=BA.length;nA<tA;nA++)A.remove(BA[nA])}V.removeEventListener("dispose",B),delete r[V.id];const X=a.get(V);X&&(A.remove(X),a.delete(V)),n.releaseStatesOfGeometry(V),V.isInstancedBufferGeometry===!0&&delete V._maxInstanceCount,t.memory.geometries--}function Q(W,V){return r[V.id]===!0||(V.addEventListener("dispose",B),r[V.id]=!0,t.memory.geometries++),V}function y(W){const V=W.attributes;for(const iA in V)A.update(V[iA],I.ARRAY_BUFFER);const X=W.morphAttributes;for(const iA in X){const BA=X[iA];for(let nA=0,tA=BA.length;nA<tA;nA++)A.update(BA[nA],I.ARRAY_BUFFER)}}function M(W){const V=[],X=W.index,iA=W.attributes.position;let BA=0;if(X!==null){const RA=X.array;BA=X.version;for(let mA=0,kA=RA.length;mA<kA;mA+=3){const _e=RA[mA+0],ae=RA[mA+1],fe=RA[mA+2];V.push(_e,ae,ae,fe,fe,_e)}}else if(iA!==void 0){const RA=iA.array;BA=iA.version;for(let mA=0,kA=RA.length/3-1;mA<kA;mA+=3){const _e=mA+0,ae=mA+1,fe=mA+2;V.push(_e,ae,ae,fe,fe,_e)}}else return;const nA=new(Na(V)?Bi:mi)(V,1);nA.version=BA;const tA=a.get(W);tA&&A.remove(tA),a.set(W,nA)}function K(W){const V=a.get(W);if(V){const X=W.index;X!==null&&V.version<X.version&&M(W)}else M(W);return a.get(W)}return{get:Q,update:y,getWireframeAttribute:K}}function IB(I,A,t){let n;function r(V){n=V}let a,B;function Q(V){a=V.type,B=V.bytesPerElement}function y(V,X){I.drawElements(n,X,a,V*B),t.update(X,n,1)}function M(V,X,iA){iA!==0&&(I.drawElementsInstanced(n,X,a,V*B,iA),t.update(X,n,iA))}function K(V,X,iA){if(iA===0)return;const BA=A.get("WEBGL_multi_draw");if(BA===null)for(let nA=0;nA<iA;nA++)this.render(V[nA]/B,X[nA]);else{BA.multiDrawElementsWEBGL(n,X,0,a,V,0,iA);let nA=0;for(let tA=0;tA<iA;tA++)nA+=X[tA];t.update(nA,n,1)}}function W(V,X,iA,BA){if(iA===0)return;const nA=A.get("WEBGL_multi_draw");if(nA===null)for(let tA=0;tA<V.length;tA++)M(V[tA]/B,X[tA],BA[tA]);else{nA.multiDrawElementsInstancedWEBGL(n,X,0,a,V,0,BA,0,iA);let tA=0;for(let RA=0;RA<iA;RA++)tA+=X[RA];for(let RA=0;RA<BA.length;RA++)t.update(tA,n,BA[RA])}}this.setMode=r,this.setIndex=Q,this.render=y,this.renderInstances=M,this.renderMultiDraw=K,this.renderMultiDrawInstances=W}function iQ(I){const A={geometries:0,textures:0},t={frame:0,calls:0,triangles:0,points:0,lines:0};function n(a,B,Q){switch(t.calls++,B){case I.TRIANGLES:t.triangles+=Q*(a/3);break;case I.LINES:t.lines+=Q*(a/2);break;case I.LINE_STRIP:t.lines+=Q*(a-1);break;case I.LINE_LOOP:t.lines+=Q*a;break;case I.POINTS:t.points+=Q*a;break;default:console.error("THREE.WebGLInfo: Unknown draw mode:",B);break}}function r(){t.calls=0,t.triangles=0,t.points=0,t.lines=0}return{memory:A,render:t,programs:null,autoReset:!0,reset:r,update:n}}function ul(I,A,t){const n=new WeakMap,r=new xo;function a(B,Q,y){const M=B.morphTargetInfluences,K=Q.morphAttributes.position||Q.morphAttributes.normal||Q.morphAttributes.color,W=K!==void 0?K.length:0;let V=n.get(Q);if(V===void 0||V.count!==W){let zA=function(){fe.dispose(),n.delete(Q),Q.removeEventListener("dispose",zA)};V!==void 0&&V.texture.dispose();const X=Q.morphAttributes.position!==void 0,iA=Q.morphAttributes.normal!==void 0,BA=Q.morphAttributes.color!==void 0,nA=Q.morphAttributes.position||[],tA=Q.morphAttributes.normal||[],RA=Q.morphAttributes.color||[];let mA=0;X===!0&&(mA=1),iA===!0&&(mA=2),BA===!0&&(mA=3);let kA=Q.attributes.position.count*mA,_e=1;kA>A.maxTextureSize&&(_e=Math.ceil(kA/A.maxTextureSize),kA=A.maxTextureSize);const ae=new Float32Array(kA*_e*4*W),fe=new Ds(ae,kA,_e,W);fe.type=hr,fe.needsUpdate=!0;const Je=mA*4;for(let KA=0;KA<W;KA++){const tt=nA[KA],Rt=tA[KA],Ze=RA[KA],yt=kA*_e*4*KA;for(let jt=0;jt<tt.count;jt++){const oi=jt*Je;X===!0&&(r.fromBufferAttribute(tt,jt),ae[yt+oi+0]=r.x,ae[yt+oi+1]=r.y,ae[yt+oi+2]=r.z,ae[yt+oi+3]=0),iA===!0&&(r.fromBufferAttribute(Rt,jt),ae[yt+oi+4]=r.x,ae[yt+oi+5]=r.y,ae[yt+oi+6]=r.z,ae[yt+oi+7]=0),BA===!0&&(r.fromBufferAttribute(Ze,jt),ae[yt+oi+8]=r.x,ae[yt+oi+9]=r.y,ae[yt+oi+10]=r.z,ae[yt+oi+11]=Ze.itemSize===4?r.w:1)}}V={count:W,texture:fe,size:new Ot(kA,_e)},n.set(Q,V),Q.addEventListener("dispose",zA)}if(B.isInstancedMesh===!0&&B.morphTexture!==null)y.getUniforms().setValue(I,"morphTexture",B.morphTexture,t);else{let X=0;for(let BA=0;BA<M.length;BA++)X+=M[BA];const iA=Q.morphTargetsRelative?1:1-X;y.getUniforms().setValue(I,"morphTargetBaseInfluence",iA),y.getUniforms().setValue(I,"morphTargetInfluences",M)}y.getUniforms().setValue(I,"morphTargetsTexture",V.texture,t),y.getUniforms().setValue(I,"morphTargetsTextureSize",V.size)}return{update:a}}function lI(I,A,t,n){let r=new WeakMap;function a(y){const M=n.render.frame,K=y.geometry,W=A.get(y,K);if(r.get(W)!==M&&(A.update(W),r.set(W,M)),y.isInstancedMesh&&(y.hasEventListener("dispose",Q)===!1&&y.addEventListener("dispose",Q),r.get(y)!==M&&(t.update(y.instanceMatrix,I.ARRAY_BUFFER),y.instanceColor!==null&&t.update(y.instanceColor,I.ARRAY_BUFFER),r.set(y,M))),y.isSkinnedMesh){const V=y.skeleton;r.get(V)!==M&&(V.update(),r.set(V,M))}return W}function B(){r=new WeakMap}function Q(y){const M=y.target;M.removeEventListener("dispose",Q),t.remove(M.instanceMatrix),M.instanceColor!==null&&t.remove(M.instanceColor)}return{update:a,dispose:B}}class lE extends Sr{constructor(A,t,n,r,a,B,Q,y,M,K){if(K=K!==void 0?K:lr,K!==lr&&K!==Nr)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&K===lr&&(n=kn),n===void 0&&K===Nr&&(n=ns),super(null,r,a,B,Q,y,K,n,M),this.isDepthTexture=!0,this.image={width:A,height:t},this.magFilter=Q!==void 0?Q:jA,this.minFilter=y!==void 0?y:jA,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(A){return super.copy(A),this.compareFunction=A.compareFunction,this}toJSON(A){const t=super.toJSON(A);return this.compareFunction!==null&&(t.compareFunction=this.compareFunction),t}}const nQ=new Sr,CB=new lE(1,1);CB.compareFunction=Pr;const Dc=new Ds,yc=new mg,BB=new zn,YC=[],EB=[],QB=new Float32Array(16),cB=new Float32Array(9),wc=new Float32Array(4);function dI(I,A,t){const n=I[0];if(n<=0||n>0)return I;const r=A*t;let a=YC[r];if(a===void 0&&(a=new Float32Array(r),YC[r]=a),A!==0){n.toArray(a,0);for(let B=1,Q=0;B!==A;++B)Q+=t,I[B].toArray(a,Q)}return a}function Os(I,A){if(I.length!==A.length)return!1;for(let t=0,n=I.length;t<n;t++)if(I[t]!==A[t])return!1;return!0}function qs(I,A){for(let t=0,n=A.length;t<n;t++)I[t]=A[t]}function fC(I,A){let t=EB[A];t===void 0&&(t=new Int32Array(A),EB[A]=t);for(let n=0;n!==A;++n)t[n]=I.allocateTextureUnit();return t}function dE(I,A){const t=this.cache;t[0]!==A&&(I.uniform1f(this.addr,A),t[0]=A)}function Mc(I,A){const t=this.cache;if(A.x!==void 0)(t[0]!==A.x||t[1]!==A.y)&&(I.uniform2f(this.addr,A.x,A.y),t[0]=A.x,t[1]=A.y);else{if(Os(t,A))return;I.uniform2fv(this.addr,A),qs(t,A)}}function Sc(I,A){const t=this.cache;if(A.x!==void 0)(t[0]!==A.x||t[1]!==A.y||t[2]!==A.z)&&(I.uniform3f(this.addr,A.x,A.y,A.z),t[0]=A.x,t[1]=A.y,t[2]=A.z);else if(A.r!==void 0)(t[0]!==A.r||t[1]!==A.g||t[2]!==A.b)&&(I.uniform3f(this.addr,A.r,A.g,A.b),t[0]=A.r,t[1]=A.g,t[2]=A.b);else{if(Os(t,A))return;I.uniform3fv(this.addr,A),qs(t,A)}}function Rc(I,A){const t=this.cache;if(A.x!==void 0)(t[0]!==A.x||t[1]!==A.y||t[2]!==A.z||t[3]!==A.w)&&(I.uniform4f(this.addr,A.x,A.y,A.z,A.w),t[0]=A.x,t[1]=A.y,t[2]=A.z,t[3]=A.w);else{if(Os(t,A))return;I.uniform4fv(this.addr,A),qs(t,A)}}function Gc(I,A){const t=this.cache,n=A.elements;if(n===void 0){if(Os(t,A))return;I.uniformMatrix2fv(this.addr,!1,A),qs(t,A)}else{if(Os(t,n))return;wc.set(n),I.uniformMatrix2fv(this.addr,!1,wc),qs(t,n)}}function Fc(I,A){const t=this.cache,n=A.elements;if(n===void 0){if(Os(t,A))return;I.uniformMatrix3fv(this.addr,!1,A),qs(t,A)}else{if(Os(t,n))return;cB.set(n),I.uniformMatrix3fv(this.addr,!1,cB),qs(t,n)}}function oQ(I,A){const t=this.cache,n=A.elements;if(n===void 0){if(Os(t,A))return;I.uniformMatrix4fv(this.addr,!1,A),qs(t,A)}else{if(Os(t,n))return;QB.set(n),I.uniformMatrix4fv(this.addr,!1,QB),qs(t,n)}}function vc(I,A){const t=this.cache;t[0]!==A&&(I.uniform1i(this.addr,A),t[0]=A)}function Nc(I,A){const t=this.cache;if(A.x!==void 0)(t[0]!==A.x||t[1]!==A.y)&&(I.uniform2i(this.addr,A.x,A.y),t[0]=A.x,t[1]=A.y);else{if(Os(t,A))return;I.uniform2iv(this.addr,A),qs(t,A)}}function Uc(I,A){const t=this.cache;if(A.x!==void 0)(t[0]!==A.x||t[1]!==A.y||t[2]!==A.z)&&(I.uniform3i(this.addr,A.x,A.y,A.z),t[0]=A.x,t[1]=A.y,t[2]=A.z);else{if(Os(t,A))return;I.uniform3iv(this.addr,A),qs(t,A)}}function Lc(I,A){const t=this.cache;if(A.x!==void 0)(t[0]!==A.x||t[1]!==A.y||t[2]!==A.z||t[3]!==A.w)&&(I.uniform4i(this.addr,A.x,A.y,A.z,A.w),t[0]=A.x,t[1]=A.y,t[2]=A.z,t[3]=A.w);else{if(Os(t,A))return;I.uniform4iv(this.addr,A),qs(t,A)}}function xc(I,A){const t=this.cache;t[0]!==A&&(I.uniform1ui(this.addr,A),t[0]=A)}function bc(I,A){const t=this.cache;if(A.x!==void 0)(t[0]!==A.x||t[1]!==A.y)&&(I.uniform2ui(this.addr,A.x,A.y),t[0]=A.x,t[1]=A.y);else{if(Os(t,A))return;I.uniform2uiv(this.addr,A),qs(t,A)}}function kc(I,A){const t=this.cache;if(A.x!==void 0)(t[0]!==A.x||t[1]!==A.y||t[2]!==A.z)&&(I.uniform3ui(this.addr,A.x,A.y,A.z),t[0]=A.x,t[1]=A.y,t[2]=A.z);else{if(Os(t,A))return;I.uniform3uiv(this.addr,A),qs(t,A)}}function _c(I,A){const t=this.cache;if(A.x!==void 0)(t[0]!==A.x||t[1]!==A.y||t[2]!==A.z||t[3]!==A.w)&&(I.uniform4ui(this.addr,A.x,A.y,A.z,A.w),t[0]=A.x,t[1]=A.y,t[2]=A.z,t[3]=A.w);else{if(Os(t,A))return;I.uniform4uiv(this.addr,A),qs(t,A)}}function Tc(I,A,t){const n=this.cache,r=t.allocateTextureUnit();n[0]!==r&&(I.uniform1i(this.addr,r),n[0]=r);const a=this.type===I.SAMPLER_2D_SHADOW?CB:nQ;t.setTexture2D(A||a,r)}function pC(I,A,t){const n=this.cache,r=t.allocateTextureUnit();n[0]!==r&&(I.uniform1i(this.addr,r),n[0]=r),t.setTexture3D(A||yc,r)}function Kc(I,A,t){const n=this.cache,r=t.allocateTextureUnit();n[0]!==r&&(I.uniform1i(this.addr,r),n[0]=r),t.setTextureCube(A||BB,r)}function Jc(I,A,t){const n=this.cache,r=t.allocateTextureUnit();n[0]!==r&&(I.uniform1i(this.addr,r),n[0]=r),t.setTexture2DArray(A||Dc,r)}function rQ(I){switch(I){case 5126:return dE;case 35664:return Mc;case 35665:return Sc;case 35666:return Rc;case 35674:return Gc;case 35675:return Fc;case 35676:return oQ;case 5124:case 35670:return vc;case 35667:case 35671:return Nc;case 35668:case 35672:return Uc;case 35669:case 35673:return Lc;case 5125:return xc;case 36294:return bc;case 36295:return kc;case 36296:return _c;case 35678:case 36198:case 36298:case 36306:case 35682:return Tc;case 35679:case 36299:case 36307:return pC;case 35680:case 36300:case 36308:case 36293:return Kc;case 36289:case 36303:case 36311:case 36292:return Jc}}function sQ(I,A){I.uniform1fv(this.addr,A)}function fl(I,A){const t=dI(A,this.size,2);I.uniform2fv(this.addr,t)}function pl(I,A){const t=dI(A,this.size,3);I.uniform3fv(this.addr,t)}function ml(I,A){const t=dI(A,this.size,4);I.uniform4fv(this.addr,t)}function hB(I,A){const t=dI(A,this.size,4);I.uniformMatrix2fv(this.addr,!1,t)}function Yc(I,A){const t=dI(A,this.size,9);I.uniformMatrix3fv(this.addr,!1,t)}function gQ(I,A){const t=dI(A,this.size,16);I.uniformMatrix4fv(this.addr,!1,t)}function Hc(I,A){I.uniform1iv(this.addr,A)}function tI(I,A){I.uniform2iv(this.addr,A)}function mC(I,A){I.uniform3iv(this.addr,A)}function aQ(I,A){I.uniform4iv(this.addr,A)}function lB(I,A){I.uniform1uiv(this.addr,A)}function Pc(I,A){I.uniform2uiv(this.addr,A)}function dB(I,A){I.uniform3uiv(this.addr,A)}function DC(I,A){I.uniform4uiv(this.addr,A)}function uB(I,A,t){const n=this.cache,r=A.length,a=fC(t,r);Os(n,a)||(I.uniform1iv(this.addr,a),qs(n,a));for(let B=0;B!==r;++B)t.setTexture2D(A[B]||nQ,a[B])}function fB(I,A,t){const n=this.cache,r=A.length,a=fC(t,r);Os(n,a)||(I.uniform1iv(this.addr,a),qs(n,a));for(let B=0;B!==r;++B)t.setTexture3D(A[B]||yc,a[B])}function Dl(I,A,t){const n=this.cache,r=A.length,a=fC(t,r);Os(n,a)||(I.uniform1iv(this.addr,a),qs(n,a));for(let B=0;B!==r;++B)t.setTextureCube(A[B]||BB,a[B])}function yl(I,A,t){const n=this.cache,r=A.length,a=fC(t,r);Os(n,a)||(I.uniform1iv(this.addr,a),qs(n,a));for(let B=0;B!==r;++B)t.setTexture2DArray(A[B]||Dc,a[B])}function xI(I){switch(I){case 5126:return sQ;case 35664:return fl;case 35665:return pl;case 35666:return ml;case 35674:return hB;case 35675:return Yc;case 35676:return gQ;case 5124:case 35670:return Hc;case 35667:case 35671:return tI;case 35668:case 35672:return mC;case 35669:case 35673:return aQ;case 5125:return lB;case 36294:return Pc;case 36295:return dB;case 36296:return DC;case 35678:case 36198:case 36298:case 36306:case 35682:return uB;case 35679:case 36299:case 36307:return fB;case 35680:case 36300:case 36308:case 36293:return Dl;case 36289:case 36303:case 36311:case 36292:return yl}}class IQ{constructor(A,t,n){this.id=A,this.addr=n,this.cache=[],this.type=t.type,this.setValue=rQ(t.type)}}class Oc{constructor(A,t,n){this.id=A,this.addr=n,this.cache=[],this.type=t.type,this.size=t.size,this.setValue=xI(t.type)}}class da{constructor(A){this.id=A,this.seq=[],this.map={}}setValue(A,t,n){const r=this.seq;for(let a=0,B=r.length;a!==B;++a){const Q=r[a];Q.setValue(A,t[Q.id],n)}}}const iI=/(\w+)(\])?(\[|\.)?/g;function qc(I,A){I.seq.push(A),I.map[A.id]=A}function bI(I,A,t){const n=I.name,r=n.length;for(iI.lastIndex=0;;){const a=iI.exec(n),B=iI.lastIndex;let Q=a[1];const y=a[2]==="]",M=a[3];if(y&&(Q=Q|0),M===void 0||M==="["&&B+2===r){qc(t,M===void 0?new IQ(Q,I,A):new Oc(Q,I,A));break}else{let W=t.map[Q];W===void 0&&(W=new da(Q),qc(t,W)),t=W}}}class uE{constructor(A,t){this.seq=[],this.map={};const n=A.getProgramParameter(t,A.ACTIVE_UNIFORMS);for(let r=0;r<n;++r){const a=A.getActiveUniform(t,r),B=A.getUniformLocation(t,a.name);bI(a,B,this)}}setValue(A,t,n,r){const a=this.map[t];a!==void 0&&a.setValue(A,n,r)}setOptional(A,t,n){const r=t[n];r!==void 0&&this.setValue(A,n,r)}static upload(A,t,n,r){for(let a=0,B=t.length;a!==B;++a){const Q=t[a],y=n[Q.id];y.needsUpdate!==!1&&Q.setValue(A,y.value,r)}}static seqWithValue(A,t){const n=[];for(let r=0,a=A.length;r!==a;++r){const B=A[r];B.id in t&&n.push(B)}return n}}function Wc(I,A,t){const n=I.createShader(A);return I.shaderSource(n,t),I.compileShader(n),n}const pB=37297;let wl=0;function Ml(I,A){const t=I.split(`
`),n=[],r=Math.max(A-6,0),a=Math.min(A+6,t.length);for(let B=r;B<a;B++){const Q=B+1;n.push(`${Q===A?">":" "} ${Q}: ${t[B]}`)}return n.join(`
`)}function Sl(I){const A=oo.getPrimaries(oo.workingColorSpace),t=oo.getPrimaries(I);let n;switch(A===t?n="":A===$A&&t===LA?n="LinearDisplayP3ToLinearSRGB":A===LA&&t===$A&&(n="LinearSRGBToLinearDisplayP3"),I){case jr:case xg:return[n,"LinearTransferOETF"];case ii:case Jg:return[n,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space:",I),[n,"LinearTransferOETF"]}}function kI(I,A,t){const n=I.getShaderParameter(A,I.COMPILE_STATUS),r=I.getShaderInfoLog(A).trim();if(n&&r==="")return"";const a=/ERROR: 0:(\d+)/.exec(r);if(a){const B=parseInt(a[1]);return t.toUpperCase()+`
`+r+`
`+Ml(I.getShaderSource(A),B)}else return r}function Vc(I,A){const t=Sl(A);return`vec4 ${I}( vec4 value ) { return ${t[0]}( ${t[1]}( value ) ); }`}function CQ(I,A){let t;switch(A){case Qt:t="Linear";break;case Ct:t="Reinhard";break;case bt:t="OptimizedCineon";break;case pi:t="ACESFilmic";break;case un:t="AgX";break;case sn:t="Neutral";break;case hi:t="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",A),t="Linear"}return"vec3 "+I+"( vec3 color ) { return "+t+"ToneMapping( color ); }"}function Zc(I){return[I.extensionClipCullDistance?"#extension GL_ANGLE_clip_cull_distance : require":"",I.extensionMultiDraw?"#extension GL_ANGLE_multi_draw : require":""].filter(mB).join(`
`)}function jc(I){const A=[];for(const t in I){const n=I[t];n!==!1&&A.push("#define "+t+" "+n)}return A.join(`
`)}function BQ(I,A){const t={},n=I.getProgramParameter(A,I.ACTIVE_ATTRIBUTES);for(let r=0;r<n;r++){const a=I.getActiveAttrib(A,r),B=a.name;let Q=1;a.type===I.FLOAT_MAT2&&(Q=2),a.type===I.FLOAT_MAT3&&(Q=3),a.type===I.FLOAT_MAT4&&(Q=4),t[B]={type:a.type,location:I.getAttribLocation(A,B),locationSize:Q}}return t}function mB(I){return I!==""}function EQ(I,A){const t=A.numSpotLightShadows+A.numSpotLightMaps-A.numSpotLightShadowsWithMaps;return I.replace(/NUM_DIR_LIGHTS/g,A.numDirLights).replace(/NUM_SPOT_LIGHTS/g,A.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,A.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,t).replace(/NUM_RECT_AREA_LIGHTS/g,A.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,A.numPointLights).replace(/NUM_HEMI_LIGHTS/g,A.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,A.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,A.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,A.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,A.numPointLightShadows)}function QQ(I,A){return I.replace(/NUM_CLIPPING_PLANES/g,A.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,A.numClippingPlanes-A.numClipIntersection)}const DB=/^[ \t]*#include +<([\w\d./]+)>/gm;function yB(I){return I.replace(DB,Xc)}const Rl=new Map;function Xc(I,A){let t=No[A];if(t===void 0){const n=Rl.get(A);if(n!==void 0)t=No[n],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',A,n);else throw new Error("Can not resolve #include <"+A+">")}return yB(t)}const cQ=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function zc(I){return I.replace(cQ,$c)}function $c(I,A,t,n){let r="";for(let a=parseInt(A);a<parseInt(t);a++)r+=n.replace(/\[\s*i\s*\]/g,"[ "+a+" ]").replace(/UNROLLED_LOOP_INDEX/g,a);return r}function hQ(I){let A=`precision ${I.precision} float;
precision ${I.precision} int;
precision ${I.precision} sampler2D;
precision ${I.precision} samplerCube;
precision ${I.precision} sampler3D;
precision ${I.precision} sampler2DArray;
precision ${I.precision} sampler2DShadow;
precision ${I.precision} samplerCubeShadow;
precision ${I.precision} sampler2DArrayShadow;
precision ${I.precision} isampler2D;
precision ${I.precision} isampler3D;
precision ${I.precision} isamplerCube;
precision ${I.precision} isampler2DArray;
precision ${I.precision} usampler2D;
precision ${I.precision} usampler3D;
precision ${I.precision} usamplerCube;
precision ${I.precision} usampler2DArray;
`;return I.precision==="highp"?A+=`
#define HIGH_PRECISION`:I.precision==="mediump"?A+=`
#define MEDIUM_PRECISION`:I.precision==="lowp"&&(A+=`
#define LOW_PRECISION`),A}function Ah(I){let A="SHADOWMAP_TYPE_BASIC";return I.shadowMapType===O?A="SHADOWMAP_TYPE_PCF":I.shadowMapType===d?A="SHADOWMAP_TYPE_PCF_SOFT":I.shadowMapType===s&&(A="SHADOWMAP_TYPE_VSM"),A}function eh(I){let A="ENVMAP_TYPE_CUBE";if(I.envMap)switch(I.envMapMode){case Ao:case Kn:A="ENVMAP_TYPE_CUBE";break;case xA:A="ENVMAP_TYPE_CUBE_UV";break}return A}function th(I){let A="ENVMAP_MODE_REFLECTION";if(I.envMap)switch(I.envMapMode){case Kn:A="ENVMAP_MODE_REFRACTION";break}return A}function fE(I){let A="ENVMAP_BLENDING_NONE";if(I.envMap)switch(I.combine){case gA:A="ENVMAP_BLENDING_MULTIPLY";break;case yA:A="ENVMAP_BLENDING_MIX";break;case ge:A="ENVMAP_BLENDING_ADD";break}return A}function lQ(I){const A=I.envMapCubeUVHeight;if(A===null)return null;const t=Math.log2(A)-2,n=1/A;return{texelWidth:1/(3*Math.max(Math.pow(2,t),7*16)),texelHeight:n,maxMip:t}}function ih(I,A,t,n){const r=I.getContext(),a=t.defines;let B=t.vertexShader,Q=t.fragmentShader;const y=Ah(t),M=eh(t),K=th(t),W=fE(t),V=lQ(t),X=Zc(t),iA=jc(a),BA=r.createProgram();let nA,tA,RA=t.glslVersion?"#version "+t.glslVersion+`
`:"";t.isRawShaderMaterial?(nA=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,iA].filter(mB).join(`
`),nA.length>0&&(nA+=`
`),tA=["#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,iA].filter(mB).join(`
`),tA.length>0&&(tA+=`
`)):(nA=[hQ(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,iA,t.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",t.batching?"#define USE_BATCHING":"",t.instancing?"#define USE_INSTANCING":"",t.instancingColor?"#define USE_INSTANCING_COLOR":"",t.instancingMorph?"#define USE_INSTANCING_MORPH":"",t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.map?"#define USE_MAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+K:"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.displacementMap?"#define USE_DISPLACEMENTMAP":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.mapUv?"#define MAP_UV "+t.mapUv:"",t.alphaMapUv?"#define ALPHAMAP_UV "+t.alphaMapUv:"",t.lightMapUv?"#define LIGHTMAP_UV "+t.lightMapUv:"",t.aoMapUv?"#define AOMAP_UV "+t.aoMapUv:"",t.emissiveMapUv?"#define EMISSIVEMAP_UV "+t.emissiveMapUv:"",t.bumpMapUv?"#define BUMPMAP_UV "+t.bumpMapUv:"",t.normalMapUv?"#define NORMALMAP_UV "+t.normalMapUv:"",t.displacementMapUv?"#define DISPLACEMENTMAP_UV "+t.displacementMapUv:"",t.metalnessMapUv?"#define METALNESSMAP_UV "+t.metalnessMapUv:"",t.roughnessMapUv?"#define ROUGHNESSMAP_UV "+t.roughnessMapUv:"",t.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+t.anisotropyMapUv:"",t.clearcoatMapUv?"#define CLEARCOATMAP_UV "+t.clearcoatMapUv:"",t.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+t.clearcoatNormalMapUv:"",t.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+t.clearcoatRoughnessMapUv:"",t.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+t.iridescenceMapUv:"",t.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+t.iridescenceThicknessMapUv:"",t.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+t.sheenColorMapUv:"",t.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+t.sheenRoughnessMapUv:"",t.specularMapUv?"#define SPECULARMAP_UV "+t.specularMapUv:"",t.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+t.specularColorMapUv:"",t.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+t.specularIntensityMapUv:"",t.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+t.transmissionMapUv:"",t.thicknessMapUv?"#define THICKNESSMAP_UV "+t.thicknessMapUv:"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.flatShading?"#define FLAT_SHADED":"",t.skinning?"#define USE_SKINNING":"",t.morphTargets?"#define USE_MORPHTARGETS":"",t.morphNormals&&t.flatShading===!1?"#define USE_MORPHNORMALS":"",t.morphColors?"#define USE_MORPHCOLORS":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE":"",t.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+t.morphTextureStride:"",t.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+t.morphTargetsCount:"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+y:"",t.sizeAttenuation?"#define USE_SIZEATTENUATION":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.useLegacyLights?"#define LEGACY_LIGHTS":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )"," attribute vec3 morphTarget0;"," attribute vec3 morphTarget1;"," attribute vec3 morphTarget2;"," attribute vec3 morphTarget3;"," #ifdef USE_MORPHNORMALS"," attribute vec3 morphNormal0;"," attribute vec3 morphNormal1;"," attribute vec3 morphNormal2;"," attribute vec3 morphNormal3;"," #else"," attribute vec3 morphTarget4;"," attribute vec3 morphTarget5;"," attribute vec3 morphTarget6;"," attribute vec3 morphTarget7;"," #endif","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif",`
`].filter(mB).join(`
`),tA=[hQ(t),"#define SHADER_TYPE "+t.shaderType,"#define SHADER_NAME "+t.shaderName,iA,t.useFog&&t.fog?"#define USE_FOG":"",t.useFog&&t.fogExp2?"#define FOG_EXP2":"",t.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",t.map?"#define USE_MAP":"",t.matcap?"#define USE_MATCAP":"",t.envMap?"#define USE_ENVMAP":"",t.envMap?"#define "+M:"",t.envMap?"#define "+K:"",t.envMap?"#define "+W:"",V?"#define CUBEUV_TEXEL_WIDTH "+V.texelWidth:"",V?"#define CUBEUV_TEXEL_HEIGHT "+V.texelHeight:"",V?"#define CUBEUV_MAX_MIP "+V.maxMip+".0":"",t.lightMap?"#define USE_LIGHTMAP":"",t.aoMap?"#define USE_AOMAP":"",t.bumpMap?"#define USE_BUMPMAP":"",t.normalMap?"#define USE_NORMALMAP":"",t.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",t.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",t.emissiveMap?"#define USE_EMISSIVEMAP":"",t.anisotropy?"#define USE_ANISOTROPY":"",t.anisotropyMap?"#define USE_ANISOTROPYMAP":"",t.clearcoat?"#define USE_CLEARCOAT":"",t.clearcoatMap?"#define USE_CLEARCOATMAP":"",t.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",t.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",t.dispersion?"#define USE_DISPERSION":"",t.iridescence?"#define USE_IRIDESCENCE":"",t.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",t.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",t.specularMap?"#define USE_SPECULARMAP":"",t.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",t.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",t.roughnessMap?"#define USE_ROUGHNESSMAP":"",t.metalnessMap?"#define USE_METALNESSMAP":"",t.alphaMap?"#define USE_ALPHAMAP":"",t.alphaTest?"#define USE_ALPHATEST":"",t.alphaHash?"#define USE_ALPHAHASH":"",t.sheen?"#define USE_SHEEN":"",t.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",t.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",t.transmission?"#define USE_TRANSMISSION":"",t.transmissionMap?"#define USE_TRANSMISSIONMAP":"",t.thicknessMap?"#define USE_THICKNESSMAP":"",t.vertexTangents&&t.flatShading===!1?"#define USE_TANGENT":"",t.vertexColors||t.instancingColor?"#define USE_COLOR":"",t.vertexAlphas?"#define USE_COLOR_ALPHA":"",t.vertexUv1s?"#define USE_UV1":"",t.vertexUv2s?"#define USE_UV2":"",t.vertexUv3s?"#define USE_UV3":"",t.pointsUvs?"#define USE_POINTS_UV":"",t.gradientMap?"#define USE_GRADIENTMAP":"",t.flatShading?"#define FLAT_SHADED":"",t.doubleSided?"#define DOUBLE_SIDED":"",t.flipSided?"#define FLIP_SIDED":"",t.shadowMapEnabled?"#define USE_SHADOWMAP":"",t.shadowMapEnabled?"#define "+y:"",t.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",t.numLightProbes>0?"#define USE_LIGHT_PROBES":"",t.useLegacyLights?"#define LEGACY_LIGHTS":"",t.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",t.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",t.toneMapping!==le?"#define TONE_MAPPING":"",t.toneMapping!==le?No.tonemapping_pars_fragment:"",t.toneMapping!==le?CQ("toneMapping",t.toneMapping):"",t.dithering?"#define DITHERING":"",t.opaque?"#define OPAQUE":"",No.colorspace_pars_fragment,Vc("linearToOutputTexel",t.outputColorSpace),t.useDepthPacking?"#define DEPTH_PACKING "+t.depthPacking:"",`
`].filter(mB).join(`
`)),B=yB(B),B=EQ(B,t),B=QQ(B,t),Q=yB(Q),Q=EQ(Q,t),Q=QQ(Q,t),B=zc(B),Q=zc(Q),t.isRawShaderMaterial!==!0&&(RA=`#version 300 es
`,nA=[X,"#define attribute in","#define varying out","#define texture2D texture"].join(`
`)+`
`+nA,tA=["#define varying in",t.glslVersion===js?"":"layout(location = 0) out highp vec4 pc_fragColor;",t.glslVersion===js?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(`
`)+`
`+tA);const mA=RA+nA+B,kA=RA+tA+Q,_e=Wc(r,r.VERTEX_SHADER,mA),ae=Wc(r,r.FRAGMENT_SHADER,kA);r.attachShader(BA,_e),r.attachShader(BA,ae),t.index0AttributeName!==void 0?r.bindAttribLocation(BA,0,t.index0AttributeName):t.morphTargets===!0&&r.bindAttribLocation(BA,0,"position"),r.linkProgram(BA);function fe(tt){if(I.debug.checkShaderErrors){const Rt=r.getProgramInfoLog(BA).trim(),Ze=r.getShaderInfoLog(_e).trim(),yt=r.getShaderInfoLog(ae).trim();let jt=!0,oi=!0;if(r.getProgramParameter(BA,r.LINK_STATUS)===!1)if(jt=!1,typeof I.debug.onShaderError=="function")I.debug.onShaderError(r,BA,_e,ae);else{const Hi=kI(r,_e,"vertex"),Nt=kI(r,ae,"fragment");console.error("THREE.WebGLProgram: Shader Error "+r.getError()+" - VALIDATE_STATUS "+r.getProgramParameter(BA,r.VALIDATE_STATUS)+`
Material Name: `+tt.name+`
Material Type: `+tt.type+`
Program Info Log: `+Rt+`
`+Hi+`
`+Nt)}else Rt!==""?console.warn("THREE.WebGLProgram: Program Info Log:",Rt):(Ze===""||yt==="")&&(oi=!1);oi&&(tt.diagnostics={runnable:jt,programLog:Rt,vertexShader:{log:Ze,prefix:nA},fragmentShader:{log:yt,prefix:tA}})}r.deleteShader(_e),r.deleteShader(ae),Je=new uE(r,BA),zA=BQ(r,BA)}let Je;this.getUniforms=function(){return Je===void 0&&fe(this),Je};let zA;this.getAttributes=function(){return zA===void 0&&fe(this),zA};let KA=t.rendererExtensionParallelShaderCompile===!1;return this.isReady=function(){return KA===!1&&(KA=r.getProgramParameter(BA,pB)),KA},this.destroy=function(){n.releaseStatesOfProgram(this),r.deleteProgram(BA),this.program=void 0},this.type=t.shaderType,this.name=t.shaderName,this.id=wl++,this.cacheKey=A,this.usedTimes=1,this.program=BA,this.vertexShader=_e,this.fragmentShader=ae,this}let nh=0;class Gl{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(A){const t=A.vertexShader,n=A.fragmentShader,r=this._getShaderStage(t),a=this._getShaderStage(n),B=this._getShaderCacheForMaterial(A);return B.has(r)===!1&&(B.add(r),r.usedTimes++),B.has(a)===!1&&(B.add(a),a.usedTimes++),this}remove(A){const t=this.materialCache.get(A);for(const n of t)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(A),this}getVertexShaderID(A){return this._getShaderStage(A.vertexShader).id}getFragmentShaderID(A){return this._getShaderStage(A.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(A){const t=this.materialCache;let n=t.get(A);return n===void 0&&(n=new Set,t.set(A,n)),n}_getShaderStage(A){const t=this.shaderCache;let n=t.get(A);return n===void 0&&(n=new Fl(A),t.set(A,n)),n}}class Fl{constructor(A){this.id=nh++,this.code=A,this.usedTimes=0}}function oh(I,A,t,n,r,a,B){const Q=new eg,y=new Gl,M=new Set,K=[],W=r.logarithmicDepthBuffer,V=r.vertexTextures;let X=r.precision;const iA={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function BA(zA){return M.add(zA),zA===0?"uv":`uv${zA}`}function nA(zA,KA,tt,Rt,Ze){const yt=Rt.fog,jt=Ze.geometry,oi=zA.isMeshStandardMaterial?Rt.environment:null,Hi=(zA.isMeshStandardMaterial?t:A).get(zA.envMap||oi),Nt=Hi&&Hi.mapping===xA?Hi.image.height:null,wi=iA[zA.type];zA.precision!==null&&(X=r.getMaxPrecision(zA.precision),X!==zA.precision&&console.warn("THREE.WebGLProgram.getParameters:",zA.precision,"not supported, using",X,"instead."));const Di=jt.morphAttributes.position||jt.morphAttributes.normal||jt.morphAttributes.color,Gn=Di!==void 0?Di.length:0;let Zo=0;jt.morphAttributes.position!==void 0&&(Zo=1),jt.morphAttributes.normal!==void 0&&(Zo=2),jt.morphAttributes.color!==void 0&&(Zo=3);let Is,Pt,Gi,Un;if(wi){const Cs=la[wi];Is=Cs.vertexShader,Pt=Cs.fragmentShader}else Is=zA.vertexShader,Pt=zA.fragmentShader,y.update(zA),Gi=y.getVertexShaderID(zA),Un=y.getFragmentShaderID(zA);const Fi=I.getRenderTarget(),jo=Ze.isInstancedMesh===!0,cr=Ze.isBatchedMesh===!0,st=!!zA.map,wr=!!zA.matcap,qt=!!Hi,ui=!!zA.aoMap,ei=!!zA.lightMap,Ji=!!zA.bumpMap,Ei=!!zA.normalMap,pn=!!zA.displacementMap,so=!!zA.emissiveMap,we=!!zA.metalnessMap,VA=!!zA.roughnessMap,dt=zA.anisotropy>0,Ai=zA.clearcoat>0,Ci=zA.dispersion>0,ri=zA.iridescence>0,$n=zA.sheen>0,Xi=zA.transmission>0,Zi=dt&&!!zA.anisotropyMap,Wo=Ai&&!!zA.clearcoatMap,Ti=Ai&&!!zA.clearcoatNormalMap,jn=Ai&&!!zA.clearcoatRoughnessMap,fr=ri&&!!zA.iridescenceMap,yo=ri&&!!zA.iridescenceThicknessMap,Fn=$n&&!!zA.sheenColorMap,er=$n&&!!zA.sheenRoughnessMap,Mr=!!zA.specularMap,Rg=!!zA.specularColorMap,tr=!!zA.specularIntensityMap,$e=Xi&&!!zA.transmissionMap,gi=Xi&&!!zA.thicknessMap,Xt=!!zA.gradientMap,An=!!zA.alphaMap,ln=zA.alphaTest>0,Vr=!!zA.alphaHash,Js=!!zA.extensions;let Qg=le;zA.toneMapped&&(Fi===null||Fi.isXRRenderTarget===!0)&&(Qg=I.toneMapping);const fa={shaderID:wi,shaderType:zA.type,shaderName:zA.name,vertexShader:Is,fragmentShader:Pt,defines:zA.defines,customVertexShaderID:Gi,customFragmentShaderID:Un,isRawShaderMaterial:zA.isRawShaderMaterial===!0,glslVersion:zA.glslVersion,precision:X,batching:cr,instancing:jo,instancingColor:jo&&Ze.instanceColor!==null,instancingMorph:jo&&Ze.morphTexture!==null,supportsVertexTextures:V,outputColorSpace:Fi===null?I.outputColorSpace:Fi.isXRRenderTarget===!0?Fi.texture.colorSpace:jr,alphaToCoverage:!!zA.alphaToCoverage,map:st,matcap:wr,envMap:qt,envMapMode:qt&&Hi.mapping,envMapCubeUVHeight:Nt,aoMap:ui,lightMap:ei,bumpMap:Ji,normalMap:Ei,displacementMap:V&&pn,emissiveMap:so,normalMapObjectSpace:Ei&&zA.normalMapType===Sa,normalMapTangentSpace:Ei&&zA.normalMapType===Cr,metalnessMap:we,roughnessMap:VA,anisotropy:dt,anisotropyMap:Zi,clearcoat:Ai,clearcoatMap:Wo,clearcoatNormalMap:Ti,clearcoatRoughnessMap:jn,dispersion:Ci,iridescence:ri,iridescenceMap:fr,iridescenceThicknessMap:yo,sheen:$n,sheenColorMap:Fn,sheenRoughnessMap:er,specularMap:Mr,specularColorMap:Rg,specularIntensityMap:tr,transmission:Xi,transmissionMap:$e,thicknessMap:gi,gradientMap:Xt,opaque:zA.transparent===!1&&zA.blending===D&&zA.alphaToCoverage===!1,alphaMap:An,alphaTest:ln,alphaHash:Vr,combine:zA.combine,mapUv:st&&BA(zA.map.channel),aoMapUv:ui&&BA(zA.aoMap.channel),lightMapUv:ei&&BA(zA.lightMap.channel),bumpMapUv:Ji&&BA(zA.bumpMap.channel),normalMapUv:Ei&&BA(zA.normalMap.channel),displacementMapUv:pn&&BA(zA.displacementMap.channel),emissiveMapUv:so&&BA(zA.emissiveMap.channel),metalnessMapUv:we&&BA(zA.metalnessMap.channel),roughnessMapUv:VA&&BA(zA.roughnessMap.channel),anisotropyMapUv:Zi&&BA(zA.anisotropyMap.channel),clearcoatMapUv:Wo&&BA(zA.clearcoatMap.channel),clearcoatNormalMapUv:Ti&&BA(zA.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:jn&&BA(zA.clearcoatRoughnessMap.channel),iridescenceMapUv:fr&&BA(zA.iridescenceMap.channel),iridescenceThicknessMapUv:yo&&BA(zA.iridescenceThicknessMap.channel),sheenColorMapUv:Fn&&BA(zA.sheenColorMap.channel),sheenRoughnessMapUv:er&&BA(zA.sheenRoughnessMap.channel),specularMapUv:Mr&&BA(zA.specularMap.channel),specularColorMapUv:Rg&&BA(zA.specularColorMap.channel),specularIntensityMapUv:tr&&BA(zA.specularIntensityMap.channel),transmissionMapUv:$e&&BA(zA.transmissionMap.channel),thicknessMapUv:gi&&BA(zA.thicknessMap.channel),alphaMapUv:An&&BA(zA.alphaMap.channel),vertexTangents:!!jt.attributes.tangent&&(Ei||dt),vertexColors:zA.vertexColors,vertexAlphas:zA.vertexColors===!0&&!!jt.attributes.color&&jt.attributes.color.itemSize===4,pointsUvs:Ze.isPoints===!0&&!!jt.attributes.uv&&(st||An),fog:!!yt,useFog:zA.fog===!0,fogExp2:!!yt&&yt.isFogExp2,flatShading:zA.flatShading===!0,sizeAttenuation:zA.sizeAttenuation===!0,logarithmicDepthBuffer:W,skinning:Ze.isSkinnedMesh===!0,morphTargets:jt.morphAttributes.position!==void 0,morphNormals:jt.morphAttributes.normal!==void 0,morphColors:jt.morphAttributes.color!==void 0,morphTargetsCount:Gn,morphTextureStride:Zo,numDirLights:KA.directional.length,numPointLights:KA.point.length,numSpotLights:KA.spot.length,numSpotLightMaps:KA.spotLightMap.length,numRectAreaLights:KA.rectArea.length,numHemiLights:KA.hemi.length,numDirLightShadows:KA.directionalShadowMap.length,numPointLightShadows:KA.pointShadowMap.length,numSpotLightShadows:KA.spotShadowMap.length,numSpotLightShadowsWithMaps:KA.numSpotLightShadowsWithMaps,numLightProbes:KA.numLightProbes,numClippingPlanes:B.numPlanes,numClipIntersection:B.numIntersection,dithering:zA.dithering,shadowMapEnabled:I.shadowMap.enabled&&tt.length>0,shadowMapType:I.shadowMap.type,toneMapping:Qg,useLegacyLights:I._useLegacyLights,decodeVideoTexture:st&&zA.map.isVideoTexture===!0&&oo.getTransfer(zA.map.colorSpace)===eA,premultipliedAlpha:zA.premultipliedAlpha,doubleSided:zA.side===T,flipSided:zA.side===_,useDepthPacking:zA.depthPacking>=0,depthPacking:zA.depthPacking||0,index0AttributeName:zA.index0AttributeName,extensionClipCullDistance:Js&&zA.extensions.clipCullDistance===!0&&n.has("WEBGL_clip_cull_distance"),extensionMultiDraw:Js&&zA.extensions.multiDraw===!0&&n.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:n.has("KHR_parallel_shader_compile"),customProgramCacheKey:zA.customProgramCacheKey()};return fa.vertexUv1s=M.has(1),fa.vertexUv2s=M.has(2),fa.vertexUv3s=M.has(3),M.clear(),fa}function tA(zA){const KA=[];if(zA.shaderID?KA.push(zA.shaderID):(KA.push(zA.customVertexShaderID),KA.push(zA.customFragmentShaderID)),zA.defines!==void 0)for(const tt in zA.defines)KA.push(tt),KA.push(zA.defines[tt]);return zA.isRawShaderMaterial===!1&&(RA(KA,zA),mA(KA,zA),KA.push(I.outputColorSpace)),KA.push(zA.customProgramCacheKey),KA.join()}function RA(zA,KA){zA.push(KA.precision),zA.push(KA.outputColorSpace),zA.push(KA.envMapMode),zA.push(KA.envMapCubeUVHeight),zA.push(KA.mapUv),zA.push(KA.alphaMapUv),zA.push(KA.lightMapUv),zA.push(KA.aoMapUv),zA.push(KA.bumpMapUv),zA.push(KA.normalMapUv),zA.push(KA.displacementMapUv),zA.push(KA.emissiveMapUv),zA.push(KA.metalnessMapUv),zA.push(KA.roughnessMapUv),zA.push(KA.anisotropyMapUv),zA.push(KA.clearcoatMapUv),zA.push(KA.clearcoatNormalMapUv),zA.push(KA.clearcoatRoughnessMapUv),zA.push(KA.iridescenceMapUv),zA.push(KA.iridescenceThicknessMapUv),zA.push(KA.sheenColorMapUv),zA.push(KA.sheenRoughnessMapUv),zA.push(KA.specularMapUv),zA.push(KA.specularColorMapUv),zA.push(KA.specularIntensityMapUv),zA.push(KA.transmissionMapUv),zA.push(KA.thicknessMapUv),zA.push(KA.combine),zA.push(KA.fogExp2),zA.push(KA.sizeAttenuation),zA.push(KA.morphTargetsCount),zA.push(KA.morphAttributeCount),zA.push(KA.numDirLights),zA.push(KA.numPointLights),zA.push(KA.numSpotLights),zA.push(KA.numSpotLightMaps),zA.push(KA.numHemiLights),zA.push(KA.numRectAreaLights),zA.push(KA.numDirLightShadows),zA.push(KA.numPointLightShadows),zA.push(KA.numSpotLightShadows),zA.push(KA.numSpotLightShadowsWithMaps),zA.push(KA.numLightProbes),zA.push(KA.shadowMapType),zA.push(KA.toneMapping),zA.push(KA.numClippingPlanes),zA.push(KA.numClipIntersection),zA.push(KA.depthPacking)}function mA(zA,KA){Q.disableAll(),KA.supportsVertexTextures&&Q.enable(0),KA.instancing&&Q.enable(1),KA.instancingColor&&Q.enable(2),KA.instancingMorph&&Q.enable(3),KA.matcap&&Q.enable(4),KA.envMap&&Q.enable(5),KA.normalMapObjectSpace&&Q.enable(6),KA.normalMapTangentSpace&&Q.enable(7),KA.clearcoat&&Q.enable(8),KA.iridescence&&Q.enable(9),KA.alphaTest&&Q.enable(10),KA.vertexColors&&Q.enable(11),KA.vertexAlphas&&Q.enable(12),KA.vertexUv1s&&Q.enable(13),KA.vertexUv2s&&Q.enable(14),KA.vertexUv3s&&Q.enable(15),KA.vertexTangents&&Q.enable(16),KA.anisotropy&&Q.enable(17),KA.alphaHash&&Q.enable(18),KA.batching&&Q.enable(19),KA.dispersion&&Q.enable(20),zA.push(Q.mask),Q.disableAll(),KA.fog&&Q.enable(0),KA.useFog&&Q.enable(1),KA.flatShading&&Q.enable(2),KA.logarithmicDepthBuffer&&Q.enable(3),KA.skinning&&Q.enable(4),KA.morphTargets&&Q.enable(5),KA.morphNormals&&Q.enable(6),KA.morphColors&&Q.enable(7),KA.premultipliedAlpha&&Q.enable(8),KA.shadowMapEnabled&&Q.enable(9),KA.useLegacyLights&&Q.enable(10),KA.doubleSided&&Q.enable(11),KA.flipSided&&Q.enable(12),KA.useDepthPacking&&Q.enable(13),KA.dithering&&Q.enable(14),KA.transmission&&Q.enable(15),KA.sheen&&Q.enable(16),KA.opaque&&Q.enable(17),KA.pointsUvs&&Q.enable(18),KA.decodeVideoTexture&&Q.enable(19),KA.alphaToCoverage&&Q.enable(20),zA.push(Q.mask)}function kA(zA){const KA=iA[zA.type];let tt;if(KA){const Rt=la[KA];tt=ci.clone(Rt.uniforms)}else tt=zA.uniforms;return tt}function _e(zA,KA){let tt;for(let Rt=0,Ze=K.length;Rt<Ze;Rt++){const yt=K[Rt];if(yt.cacheKey===KA){tt=yt,++tt.usedTimes;break}}return tt===void 0&&(tt=new ih(I,KA,zA,a),K.push(tt)),tt}function ae(zA){if(--zA.usedTimes===0){const KA=K.indexOf(zA);K[KA]=K[K.length-1],K.pop(),zA.destroy()}}function fe(zA){y.remove(zA)}function Je(){y.dispose()}return{getParameters:nA,getProgramCacheKey:tA,getUniforms:kA,acquireProgram:_e,releaseProgram:ae,releaseShaderCache:fe,programs:K,dispose:Je}}function rh(){let I=new WeakMap;function A(a){let B=I.get(a);return B===void 0&&(B={},I.set(a,B)),B}function t(a){I.delete(a)}function n(a,B,Q){I.get(a)[B]=Q}function r(){I=new WeakMap}return{get:A,remove:t,update:n,dispose:r}}function vl(I,A){return I.groupOrder!==A.groupOrder?I.groupOrder-A.groupOrder:I.renderOrder!==A.renderOrder?I.renderOrder-A.renderOrder:I.material.id!==A.material.id?I.material.id-A.material.id:I.z!==A.z?I.z-A.z:I.id-A.id}function wB(I,A){return I.groupOrder!==A.groupOrder?I.groupOrder-A.groupOrder:I.renderOrder!==A.renderOrder?I.renderOrder-A.renderOrder:I.z!==A.z?A.z-I.z:I.id-A.id}function pE(){const I=[];let A=0;const t=[],n=[],r=[];function a(){A=0,t.length=0,n.length=0,r.length=0}function B(W,V,X,iA,BA,nA){let tA=I[A];return tA===void 0?(tA={id:W.id,object:W,geometry:V,material:X,groupOrder:iA,renderOrder:W.renderOrder,z:BA,group:nA},I[A]=tA):(tA.id=W.id,tA.object=W,tA.geometry=V,tA.material=X,tA.groupOrder=iA,tA.renderOrder=W.renderOrder,tA.z=BA,tA.group=nA),A++,tA}function Q(W,V,X,iA,BA,nA){const tA=B(W,V,X,iA,BA,nA);X.transmission>0?n.push(tA):X.transparent===!0?r.push(tA):t.push(tA)}function y(W,V,X,iA,BA,nA){const tA=B(W,V,X,iA,BA,nA);X.transmission>0?n.unshift(tA):X.transparent===!0?r.unshift(tA):t.unshift(tA)}function M(W,V){t.length>1&&t.sort(W||vl),n.length>1&&n.sort(V||wB),r.length>1&&r.sort(V||wB)}function K(){for(let W=A,V=I.length;W<V;W++){const X=I[W];if(X.id===null)break;X.id=null,X.object=null,X.geometry=null,X.material=null,X.group=null}}return{opaque:t,transmissive:n,transparent:r,init:a,push:Q,unshift:y,finish:K,sort:M}}function Nl(){let I=new WeakMap;function A(n,r){const a=I.get(n);let B;return a===void 0?(B=new pE,I.set(n,[B])):r>=a.length?(B=new pE,a.push(B)):B=a[r],B}function t(){I=new WeakMap}return{get:A,dispose:t}}function sh(){const I={};return{get:function(A){if(I[A.id]!==void 0)return I[A.id];let t;switch(A.type){case"DirectionalLight":t={direction:new Ee,color:new ve};break;case"SpotLight":t={position:new Ee,direction:new Ee,color:new ve,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":t={position:new Ee,color:new ve,distance:0,decay:0};break;case"HemisphereLight":t={direction:new Ee,skyColor:new ve,groundColor:new ve};break;case"RectAreaLight":t={color:new ve,position:new Ee,halfWidth:new Ee,halfHeight:new Ee};break}return I[A.id]=t,t}}}function gh(){const I={};return{get:function(A){if(I[A.id]!==void 0)return I[A.id];let t;switch(A.type){case"DirectionalLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ot};break;case"SpotLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ot};break;case"PointLight":t={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Ot,shadowCameraNear:1,shadowCameraFar:1e3};break}return I[A.id]=t,t}}}let yC=0;function Ul(I,A){return(A.castShadow?2:0)-(I.castShadow?2:0)+(A.map?1:0)-(I.map?1:0)}function Ll(I){const A=new sh,t=gh(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let M=0;M<9;M++)n.probe.push(new Ee);const r=new Ee,a=new tn,B=new tn;function Q(M,K){let W=0,V=0,X=0;for(let tt=0;tt<9;tt++)n.probe[tt].set(0,0,0);let iA=0,BA=0,nA=0,tA=0,RA=0,mA=0,kA=0,_e=0,ae=0,fe=0,Je=0;M.sort(Ul);const zA=K===!0?Math.PI:1;for(let tt=0,Rt=M.length;tt<Rt;tt++){const Ze=M[tt],yt=Ze.color,jt=Ze.intensity,oi=Ze.distance,Hi=Ze.shadow&&Ze.shadow.map?Ze.shadow.map.texture:null;if(Ze.isAmbientLight)W+=yt.r*jt*zA,V+=yt.g*jt*zA,X+=yt.b*jt*zA;else if(Ze.isLightProbe){for(let Nt=0;Nt<9;Nt++)n.probe[Nt].addScaledVector(Ze.sh.coefficients[Nt],jt);Je++}else if(Ze.isDirectionalLight){const Nt=A.get(Ze);if(Nt.color.copy(Ze.color).multiplyScalar(Ze.intensity*zA),Ze.castShadow){const wi=Ze.shadow,Di=t.get(Ze);Di.shadowBias=wi.bias,Di.shadowNormalBias=wi.normalBias,Di.shadowRadius=wi.radius,Di.shadowMapSize=wi.mapSize,n.directionalShadow[iA]=Di,n.directionalShadowMap[iA]=Hi,n.directionalShadowMatrix[iA]=Ze.shadow.matrix,mA++}n.directional[iA]=Nt,iA++}else if(Ze.isSpotLight){const Nt=A.get(Ze);Nt.position.setFromMatrixPosition(Ze.matrixWorld),Nt.color.copy(yt).multiplyScalar(jt*zA),Nt.distance=oi,Nt.coneCos=Math.cos(Ze.angle),Nt.penumbraCos=Math.cos(Ze.angle*(1-Ze.penumbra)),Nt.decay=Ze.decay,n.spot[nA]=Nt;const wi=Ze.shadow;if(Ze.map&&(n.spotLightMap[ae]=Ze.map,ae++,wi.updateMatrices(Ze),Ze.castShadow&&fe++),n.spotLightMatrix[nA]=wi.matrix,Ze.castShadow){const Di=t.get(Ze);Di.shadowBias=wi.bias,Di.shadowNormalBias=wi.normalBias,Di.shadowRadius=wi.radius,Di.shadowMapSize=wi.mapSize,n.spotShadow[nA]=Di,n.spotShadowMap[nA]=Hi,_e++}nA++}else if(Ze.isRectAreaLight){const Nt=A.get(Ze);Nt.color.copy(yt).multiplyScalar(jt),Nt.halfWidth.set(Ze.width*.5,0,0),Nt.halfHeight.set(0,Ze.height*.5,0),n.rectArea[tA]=Nt,tA++}else if(Ze.isPointLight){const Nt=A.get(Ze);if(Nt.color.copy(Ze.color).multiplyScalar(Ze.intensity*zA),Nt.distance=Ze.distance,Nt.decay=Ze.decay,Ze.castShadow){const wi=Ze.shadow,Di=t.get(Ze);Di.shadowBias=wi.bias,Di.shadowNormalBias=wi.normalBias,Di.shadowRadius=wi.radius,Di.shadowMapSize=wi.mapSize,Di.shadowCameraNear=wi.camera.near,Di.shadowCameraFar=wi.camera.far,n.pointShadow[BA]=Di,n.pointShadowMap[BA]=Hi,n.pointShadowMatrix[BA]=Ze.shadow.matrix,kA++}n.point[BA]=Nt,BA++}else if(Ze.isHemisphereLight){const Nt=A.get(Ze);Nt.skyColor.copy(Ze.color).multiplyScalar(jt*zA),Nt.groundColor.copy(Ze.groundColor).multiplyScalar(jt*zA),n.hemi[RA]=Nt,RA++}}tA>0&&(I.has("OES_texture_float_linear")===!0?(n.rectAreaLTC1=ki.LTC_FLOAT_1,n.rectAreaLTC2=ki.LTC_FLOAT_2):(n.rectAreaLTC1=ki.LTC_HALF_1,n.rectAreaLTC2=ki.LTC_HALF_2)),n.ambient[0]=W,n.ambient[1]=V,n.ambient[2]=X;const KA=n.hash;(KA.directionalLength!==iA||KA.pointLength!==BA||KA.spotLength!==nA||KA.rectAreaLength!==tA||KA.hemiLength!==RA||KA.numDirectionalShadows!==mA||KA.numPointShadows!==kA||KA.numSpotShadows!==_e||KA.numSpotMaps!==ae||KA.numLightProbes!==Je)&&(n.directional.length=iA,n.spot.length=nA,n.rectArea.length=tA,n.point.length=BA,n.hemi.length=RA,n.directionalShadow.length=mA,n.directionalShadowMap.length=mA,n.pointShadow.length=kA,n.pointShadowMap.length=kA,n.spotShadow.length=_e,n.spotShadowMap.length=_e,n.directionalShadowMatrix.length=mA,n.pointShadowMatrix.length=kA,n.spotLightMatrix.length=_e+ae-fe,n.spotLightMap.length=ae,n.numSpotLightShadowsWithMaps=fe,n.numLightProbes=Je,KA.directionalLength=iA,KA.pointLength=BA,KA.spotLength=nA,KA.rectAreaLength=tA,KA.hemiLength=RA,KA.numDirectionalShadows=mA,KA.numPointShadows=kA,KA.numSpotShadows=_e,KA.numSpotMaps=ae,KA.numLightProbes=Je,n.version=yC++)}function y(M,K){let W=0,V=0,X=0,iA=0,BA=0;const nA=K.matrixWorldInverse;for(let tA=0,RA=M.length;tA<RA;tA++){const mA=M[tA];if(mA.isDirectionalLight){const kA=n.directional[W];kA.direction.setFromMatrixPosition(mA.matrixWorld),r.setFromMatrixPosition(mA.target.matrixWorld),kA.direction.sub(r),kA.direction.transformDirection(nA),W++}else if(mA.isSpotLight){const kA=n.spot[X];kA.position.setFromMatrixPosition(mA.matrixWorld),kA.position.applyMatrix4(nA),kA.direction.setFromMatrixPosition(mA.matrixWorld),r.setFromMatrixPosition(mA.target.matrixWorld),kA.direction.sub(r),kA.direction.transformDirection(nA),X++}else if(mA.isRectAreaLight){const kA=n.rectArea[iA];kA.position.setFromMatrixPosition(mA.matrixWorld),kA.position.applyMatrix4(nA),B.identity(),a.copy(mA.matrixWorld),a.premultiply(nA),B.extractRotation(a),kA.halfWidth.set(mA.width*.5,0,0),kA.halfHeight.set(0,mA.height*.5,0),kA.halfWidth.applyMatrix4(B),kA.halfHeight.applyMatrix4(B),iA++}else if(mA.isPointLight){const kA=n.point[V];kA.position.setFromMatrixPosition(mA.matrixWorld),kA.position.applyMatrix4(nA),V++}else if(mA.isHemisphereLight){const kA=n.hemi[BA];kA.direction.setFromMatrixPosition(mA.matrixWorld),kA.direction.transformDirection(nA),BA++}}}return{setup:Q,setupView:y,state:n}}function dQ(I){const A=new Ll(I),t=[],n=[];function r(K){M.camera=K,t.length=0,n.length=0}function a(K){t.push(K)}function B(K){n.push(K)}function Q(K){A.setup(t,K)}function y(K){A.setupView(t,K)}const M={lightsArray:t,shadowsArray:n,camera:null,lights:A,transmissionRenderTarget:{}};return{init:r,state:M,setupLights:Q,setupLightsView:y,pushLight:a,pushShadow:B}}function ah(I){let A=new WeakMap;function t(r,a=0){const B=A.get(r);let Q;return B===void 0?(Q=new dQ(I),A.set(r,[Q])):a>=B.length?(Q=new dQ(I),B.push(Q)):Q=B[a],Q}function n(){A=new WeakMap}return{get:t,dispose:n}}class _I extends FA{constructor(A){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=Ma,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(A)}copy(A){return super.copy(A),this.depthPacking=A.depthPacking,this.map=A.map,this.alphaMap=A.alphaMap,this.displacementMap=A.displacementMap,this.displacementScale=A.displacementScale,this.displacementBias=A.displacementBias,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this}}class mE extends FA{constructor(A){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(A)}copy(A){return super.copy(A),this.map=A.map,this.alphaMap=A.alphaMap,this.displacementMap=A.displacementMap,this.displacementScale=A.displacementScale,this.displacementBias=A.displacementBias,this}}const xl=`void main() {
gl_Position = vec4( position, 1.0 );
}`,wC=`uniform sampler2D shadow_pass;
uniform vec2 resolution;
uniform float radius;
#include <packing>
void main() {
const float samples = float( VSM_SAMPLES );
float mean = 0.0;
float squared_mean = 0.0;
float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );
float uvStart = samples <= 1.0 ? 0.0 : - 1.0;
for ( float i = 0.0; i < samples; i ++ ) {
float uvOffset = uvStart + i * uvStride;
#ifdef HORIZONTAL_PASS
vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );
mean += distribution.x;
squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;
#else
float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );
mean += depth;
squared_mean += depth * depth;
#endif
}
mean = mean / samples;
squared_mean = squared_mean / samples;
float std_dev = sqrt( squared_mean - mean * mean );
gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );
}`;function bl(I,A,t){let n=new xa;const r=new Ot,a=new Ot,B=new xo,Q=new _I({depthPacking:gI}),y=new mE,M={},K=t.maxTextureSize,W={[z]:_,[_]:z,[T]:T},V=new di({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Ot},radius:{value:4}},vertexShader:xl,fragmentShader:wC}),X=V.clone();X.defines.HORIZONTAL_PASS=1;const iA=new li;iA.setAttribute("position",new oe(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));const BA=new mo(iA,V),nA=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=O;let tA=this.type;this.render=function(ae,fe,Je){if(nA.enabled===!1||nA.autoUpdate===!1&&nA.needsUpdate===!1||ae.length===0)return;const zA=I.getRenderTarget(),KA=I.getActiveCubeFace(),tt=I.getActiveMipmapLevel(),Rt=I.state;Rt.setBlending(v),Rt.buffers.color.setClear(1,1,1,1),Rt.buffers.depth.setTest(!0),Rt.setScissorTest(!1);const Ze=tA!==s&&this.type===s,yt=tA===s&&this.type!==s;for(let jt=0,oi=ae.length;jt<oi;jt++){const Hi=ae[jt],Nt=Hi.shadow;if(Nt===void 0){console.warn("THREE.WebGLShadowMap:",Hi,"has no shadow.");continue}if(Nt.autoUpdate===!1&&Nt.needsUpdate===!1)continue;r.copy(Nt.mapSize);const wi=Nt.getFrameExtents();if(r.multiply(wi),a.copy(Nt.mapSize),(r.x>K||r.y>K)&&(r.x>K&&(a.x=Math.floor(K/wi.x),r.x=a.x*wi.x,Nt.mapSize.x=a.x),r.y>K&&(a.y=Math.floor(K/wi.y),r.y=a.y*wi.y,Nt.mapSize.y=a.y)),Nt.map===null||Ze===!0||yt===!0){const Gn=this.type!==s?{minFilter:jA,magFilter:jA}:{};Nt.map!==null&&Nt.map.dispose(),Nt.map=new zo(r.x,r.y,Gn),Nt.map.texture.name=Hi.name+".shadowMap",Nt.camera.updateProjectionMatrix()}I.setRenderTarget(Nt.map),I.clear();const Di=Nt.getViewportCount();for(let Gn=0;Gn<Di;Gn++){const Zo=Nt.getViewport(Gn);B.set(a.x*Zo.x,a.y*Zo.y,a.x*Zo.z,a.y*Zo.w),Rt.viewport(B),Nt.updateMatrices(Hi,Gn),n=Nt.getFrustum(),kA(fe,Je,Nt.camera,Hi,this.type)}Nt.isPointLightShadow!==!0&&this.type===s&&RA(Nt,Je),Nt.needsUpdate=!1}tA=this.type,nA.needsUpdate=!1,I.setRenderTarget(zA,KA,tt)};function RA(ae,fe){const Je=A.update(BA);V.defines.VSM_SAMPLES!==ae.blurSamples&&(V.defines.VSM_SAMPLES=ae.blurSamples,X.defines.VSM_SAMPLES=ae.blurSamples,V.needsUpdate=!0,X.needsUpdate=!0),ae.mapPass===null&&(ae.mapPass=new zo(r.x,r.y)),V.uniforms.shadow_pass.value=ae.map.texture,V.uniforms.resolution.value=ae.mapSize,V.uniforms.radius.value=ae.radius,I.setRenderTarget(ae.mapPass),I.clear(),I.renderBufferDirect(fe,null,Je,V,BA,null),X.uniforms.shadow_pass.value=ae.mapPass.texture,X.uniforms.resolution.value=ae.mapSize,X.uniforms.radius.value=ae.radius,I.setRenderTarget(ae.map),I.clear(),I.renderBufferDirect(fe,null,Je,X,BA,null)}function mA(ae,fe,Je,zA){let KA=null;const tt=Je.isPointLight===!0?ae.customDistanceMaterial:ae.customDepthMaterial;if(tt!==void 0)KA=tt;else if(KA=Je.isPointLight===!0?y:Q,I.localClippingEnabled&&fe.clipShadows===!0&&Array.isArray(fe.clippingPlanes)&&fe.clippingPlanes.length!==0||fe.displacementMap&&fe.displacementScale!==0||fe.alphaMap&&fe.alphaTest>0||fe.map&&fe.alphaTest>0){const Rt=KA.uuid,Ze=fe.uuid;let yt=M[Rt];yt===void 0&&(yt={},M[Rt]=yt);let jt=yt[Ze];jt===void 0&&(jt=KA.clone(),yt[Ze]=jt,fe.addEventListener("dispose",_e)),KA=jt}if(KA.visible=fe.visible,KA.wireframe=fe.wireframe,zA===s?KA.side=fe.shadowSide!==null?fe.shadowSide:fe.side:KA.side=fe.shadowSide!==null?fe.shadowSide:W[fe.side],KA.alphaMap=fe.alphaMap,KA.alphaTest=fe.alphaTest,KA.map=fe.map,KA.clipShadows=fe.clipShadows,KA.clippingPlanes=fe.clippingPlanes,KA.clipIntersection=fe.clipIntersection,KA.displacementMap=fe.displacementMap,KA.displacementScale=fe.displacementScale,KA.displacementBias=fe.displacementBias,KA.wireframeLinewidth=fe.wireframeLinewidth,KA.linewidth=fe.linewidth,Je.isPointLight===!0&&KA.isMeshDistanceMaterial===!0){const Rt=I.properties.get(KA);Rt.light=Je}return KA}function kA(ae,fe,Je,zA,KA){if(ae.visible===!1)return;if(ae.layers.test(fe.layers)&&(ae.isMesh||ae.isLine||ae.isPoints)&&(ae.castShadow||ae.receiveShadow&&KA===s)&&(!ae.frustumCulled||n.intersectsObject(ae))){ae.modelViewMatrix.multiplyMatrices(Je.matrixWorldInverse,ae.matrixWorld);const Ze=A.update(ae),yt=ae.material;if(Array.isArray(yt)){const jt=Ze.groups;for(let oi=0,Hi=jt.length;oi<Hi;oi++){const Nt=jt[oi],wi=yt[Nt.materialIndex];if(wi&&wi.visible){const Di=mA(ae,wi,zA,KA);ae.onBeforeShadow(I,ae,fe,Je,Ze,Di,Nt),I.renderBufferDirect(Je,null,Ze,Di,ae,Nt),ae.onAfterShadow(I,ae,fe,Je,Ze,Di,Nt)}}}else if(yt.visible){const jt=mA(ae,yt,zA,KA);ae.onBeforeShadow(I,ae,fe,Je,Ze,jt,null),I.renderBufferDirect(Je,null,Ze,jt,ae,null),ae.onAfterShadow(I,ae,fe,Je,Ze,jt,null)}}const Rt=ae.children;for(let Ze=0,yt=Rt.length;Ze<yt;Ze++)kA(Rt[Ze],fe,Je,zA,KA)}function _e(ae){ae.target.removeEventListener("dispose",_e);for(const Je in M){const zA=M[Je],KA=ae.target.uuid;KA in zA&&(zA[KA].dispose(),delete zA[KA])}}}function Ih(I){function A(){let $e=!1;const gi=new xo;let Xt=null;const An=new xo(0,0,0,0);return{setMask:function(ln){Xt!==ln&&!$e&&(I.colorMask(ln,ln,ln,ln),Xt=ln)},setLocked:function(ln){$e=ln},setClear:function(ln,Vr,Js,Qg,fa){fa===!0&&(ln*=Qg,Vr*=Qg,Js*=Qg),gi.set(ln,Vr,Js,Qg),An.equals(gi)===!1&&(I.clearColor(ln,Vr,Js,Qg),An.copy(gi))},reset:function(){$e=!1,Xt=null,An.set(-1,0,0,0)}}}function t(){let $e=!1,gi=null,Xt=null,An=null;return{setTest:function(ln){ln?Un(I.DEPTH_TEST):Fi(I.DEPTH_TEST)},setMask:function(ln){gi!==ln&&!$e&&(I.depthMask(ln),gi=ln)},setFunc:function(ln){if(Xt!==ln){switch(ln){case pe:I.depthFunc(I.NEVER);break;case He:I.depthFunc(I.ALWAYS);break;case Oe:I.depthFunc(I.LESS);break;case ye:I.depthFunc(I.LEQUAL);break;case Ye:I.depthFunc(I.EQUAL);break;case Et:I.depthFunc(I.GEQUAL);break;case ct:I.depthFunc(I.GREATER);break;case q:I.depthFunc(I.NOTEQUAL);break;default:I.depthFunc(I.LEQUAL)}Xt=ln}},setLocked:function(ln){$e=ln},setClear:function(ln){An!==ln&&(I.clearDepth(ln),An=ln)},reset:function(){$e=!1,gi=null,Xt=null,An=null}}}function n(){let $e=!1,gi=null,Xt=null,An=null,ln=null,Vr=null,Js=null,Qg=null,fa=null;return{setTest:function(Cs){$e||(Cs?Un(I.STENCIL_TEST):Fi(I.STENCIL_TEST))},setMask:function(Cs){gi!==Cs&&!$e&&(I.stencilMask(Cs),gi=Cs)},setFunc:function(Cs,nC,Ta){(Xt!==Cs||An!==nC||ln!==Ta)&&(I.stencilFunc(Cs,nC,Ta),Xt=Cs,An=nC,ln=Ta)},setOp:function(Cs,nC,Ta){(Vr!==Cs||Js!==nC||Qg!==Ta)&&(I.stencilOp(Cs,nC,Ta),Vr=Cs,Js=nC,Qg=Ta)},setLocked:function(Cs){$e=Cs},setClear:function(Cs){fa!==Cs&&(I.clearStencil(Cs),fa=Cs)},reset:function(){$e=!1,gi=null,Xt=null,An=null,ln=null,Vr=null,Js=null,Qg=null,fa=null}}}const r=new A,a=new t,B=new n,Q=new WeakMap,y=new WeakMap;let M={},K={},W=new WeakMap,V=[],X=null,iA=!1,BA=null,nA=null,tA=null,RA=null,mA=null,kA=null,_e=null,ae=new ve(0,0,0),fe=0,Je=!1,zA=null,KA=null,tt=null,Rt=null,Ze=null;const yt=I.getParameter(I.MAX_COMBINED_TEXTURE_IMAGE_UNITS);let jt=!1,oi=0;const Hi=I.getParameter(I.VERSION);Hi.indexOf("WebGL")!==-1?(oi=parseFloat(/^WebGL (\d)/.exec(Hi)[1]),jt=oi>=1):Hi.indexOf("OpenGL ES")!==-1&&(oi=parseFloat(/^OpenGL ES (\d)/.exec(Hi)[1]),jt=oi>=2);let Nt=null,wi={};const Di=I.getParameter(I.SCISSOR_BOX),Gn=I.getParameter(I.VIEWPORT),Zo=new xo().fromArray(Di),Is=new xo().fromArray(Gn);function Pt($e,gi,Xt,An){const ln=new Uint8Array(4),Vr=I.createTexture();I.bindTexture($e,Vr),I.texParameteri($e,I.TEXTURE_MIN_FILTER,I.NEAREST),I.texParameteri($e,I.TEXTURE_MAG_FILTER,I.NEAREST);for(let Js=0;Js<Xt;Js++)$e===I.TEXTURE_3D||$e===I.TEXTURE_2D_ARRAY?I.texImage3D(gi,0,I.RGBA,1,1,An,0,I.RGBA,I.UNSIGNED_BYTE,ln):I.texImage2D(gi+Js,0,I.RGBA,1,1,0,I.RGBA,I.UNSIGNED_BYTE,ln);return Vr}const Gi={};Gi[I.TEXTURE_2D]=Pt(I.TEXTURE_2D,I.TEXTURE_2D,1),Gi[I.TEXTURE_CUBE_MAP]=Pt(I.TEXTURE_CUBE_MAP,I.TEXTURE_CUBE_MAP_POSITIVE_X,6),Gi[I.TEXTURE_2D_ARRAY]=Pt(I.TEXTURE_2D_ARRAY,I.TEXTURE_2D_ARRAY,1,1),Gi[I.TEXTURE_3D]=Pt(I.TEXTURE_3D,I.TEXTURE_3D,1,1),r.setClear(0,0,0,1),a.setClear(1),B.setClear(0),Un(I.DEPTH_TEST),a.setFunc(ye),Ji(!1),Ei(ng),Un(I.CULL_FACE),ui(v);function Un($e){M[$e]!==!0&&(I.enable($e),M[$e]=!0)}function Fi($e){M[$e]!==!1&&(I.disable($e),M[$e]=!1)}function jo($e,gi){return K[$e]!==gi?(I.bindFramebuffer($e,gi),K[$e]=gi,$e===I.DRAW_FRAMEBUFFER&&(K[I.FRAMEBUFFER]=gi),$e===I.FRAMEBUFFER&&(K[I.DRAW_FRAMEBUFFER]=gi),!0):!1}function cr($e,gi){let Xt=V,An=!1;if($e){Xt=W.get(gi),Xt===void 0&&(Xt=[],W.set(gi,Xt));const ln=$e.textures;if(Xt.length!==ln.length||Xt[0]!==I.COLOR_ATTACHMENT0){for(let Vr=0,Js=ln.length;Vr<Js;Vr++)Xt[Vr]=I.COLOR_ATTACHMENT0+Vr;Xt.length=ln.length,An=!0}}else Xt[0]!==I.BACK&&(Xt[0]=I.BACK,An=!0);An&&I.drawBuffers(Xt)}function st($e){return X!==$e?(I.useProgram($e),X=$e,!0):!1}const wr={[l]:I.FUNC_ADD,[R]:I.FUNC_SUBTRACT,[N]:I.FUNC_REVERSE_SUBTRACT};wr[Y]=I.MIN,wr[G]=I.MAX;const qt={[x]:I.ZERO,[U]:I.ONE,[j]:I.SRC_COLOR,[CA]:I.SRC_ALPHA,[hA]:I.SRC_ALPHA_SATURATE,[TA]:I.DST_COLOR,[SA]:I.DST_ALPHA,[Z]:I.ONE_MINUS_SRC_COLOR,[QA]:I.ONE_MINUS_SRC_ALPHA,[pA]:I.ONE_MINUS_DST_COLOR,[UA]:I.ONE_MINUS_DST_ALPHA,[uA]:I.CONSTANT_COLOR,[lA]:I.ONE_MINUS_CONSTANT_COLOR,[NA]:I.CONSTANT_ALPHA,[HA]:I.ONE_MINUS_CONSTANT_ALPHA};function ui($e,gi,Xt,An,ln,Vr,Js,Qg,fa,Cs){if($e===v){iA===!0&&(Fi(I.BLEND),iA=!1);return}if(iA===!1&&(Un(I.BLEND),iA=!0),$e!==u){if($e!==BA||Cs!==Je){if((nA!==l||mA!==l)&&(I.blendEquation(I.FUNC_ADD),nA=l,mA=l),Cs)switch($e){case D:I.blendFuncSeparate(I.ONE,I.ONE_MINUS_SRC_ALPHA,I.ONE,I.ONE_MINUS_SRC_ALPHA);break;case h:I.blendFunc(I.ONE,I.ONE);break;case p:I.blendFuncSeparate(I.ZERO,I.ONE_MINUS_SRC_COLOR,I.ZERO,I.ONE);break;case m:I.blendFuncSeparate(I.ZERO,I.SRC_COLOR,I.ZERO,I.SRC_ALPHA);break;default:console.error("THREE.WebGLState: Invalid blending: ",$e);break}else switch($e){case D:I.blendFuncSeparate(I.SRC_ALPHA,I.ONE_MINUS_SRC_ALPHA,I.ONE,I.ONE_MINUS_SRC_ALPHA);break;case h:I.blendFunc(I.SRC_ALPHA,I.ONE);break;case p:I.blendFuncSeparate(I.ZERO,I.ONE_MINUS_SRC_COLOR,I.ZERO,I.ONE);break;case m:I.blendFunc(I.ZERO,I.SRC_COLOR);break;default:console.error("THREE.WebGLState: Invalid blending: ",$e);break}tA=null,RA=null,kA=null,_e=null,ae.set(0,0,0),fe=0,BA=$e,Je=Cs}return}ln=ln||gi,Vr=Vr||Xt,Js=Js||An,(gi!==nA||ln!==mA)&&(I.blendEquationSeparate(wr[gi],wr[ln]),nA=gi,mA=ln),(Xt!==tA||An!==RA||Vr!==kA||Js!==_e)&&(I.blendFuncSeparate(qt[Xt],qt[An],qt[Vr],qt[Js]),tA=Xt,RA=An,kA=Vr,_e=Js),(Qg.equals(ae)===!1||fa!==fe)&&(I.blendColor(Qg.r,Qg.g,Qg.b,fa),ae.copy(Qg),fe=fa),BA=$e,Je=!1}function ei($e,gi){$e.side===T?Fi(I.CULL_FACE):Un(I.CULL_FACE);let Xt=$e.side===_;gi&&(Xt=!Xt),Ji(Xt),$e.blending===D&&$e.transparent===!1?ui(v):ui($e.blending,$e.blendEquation,$e.blendSrc,$e.blendDst,$e.blendEquationAlpha,$e.blendSrcAlpha,$e.blendDstAlpha,$e.blendColor,$e.blendAlpha,$e.premultipliedAlpha),a.setFunc($e.depthFunc),a.setTest($e.depthTest),a.setMask($e.depthWrite),r.setMask($e.colorWrite);const An=$e.stencilWrite;B.setTest(An),An&&(B.setMask($e.stencilWriteMask),B.setFunc($e.stencilFunc,$e.stencilRef,$e.stencilFuncMask),B.setOp($e.stencilFail,$e.stencilZFail,$e.stencilZPass)),so($e.polygonOffset,$e.polygonOffsetFactor,$e.polygonOffsetUnits),$e.alphaToCoverage===!0?Un(I.SAMPLE_ALPHA_TO_COVERAGE):Fi(I.SAMPLE_ALPHA_TO_COVERAGE)}function Ji($e){zA!==$e&&($e?I.frontFace(I.CW):I.frontFace(I.CCW),zA=$e)}function Ei($e){$e!==Ir?(Un(I.CULL_FACE),$e!==KA&&($e===ng?I.cullFace(I.BACK):$e===dn?I.cullFace(I.FRONT):I.cullFace(I.FRONT_AND_BACK))):Fi(I.CULL_FACE),KA=$e}function pn($e){$e!==tt&&(jt&&I.lineWidth($e),tt=$e)}function so($e,gi,Xt){$e?(Un(I.POLYGON_OFFSET_FILL),(Rt!==gi||Ze!==Xt)&&(I.polygonOffset(gi,Xt),Rt=gi,Ze=Xt)):Fi(I.POLYGON_OFFSET_FILL)}function we($e){$e?Un(I.SCISSOR_TEST):Fi(I.SCISSOR_TEST)}function VA($e){$e===void 0&&($e=I.TEXTURE0+yt-1),Nt!==$e&&(I.activeTexture($e),Nt=$e)}function dt($e,gi,Xt){Xt===void 0&&(Nt===null?Xt=I.TEXTURE0+yt-1:Xt=Nt);let An=wi[Xt];An===void 0&&(An={type:void 0,texture:void 0},wi[Xt]=An),(An.type!==$e||An.texture!==gi)&&(Nt!==Xt&&(I.activeTexture(Xt),Nt=Xt),I.bindTexture($e,gi||Gi[$e]),An.type=$e,An.texture=gi)}function Ai(){const $e=wi[Nt];$e!==void 0&&$e.type!==void 0&&(I.bindTexture($e.type,null),$e.type=void 0,$e.texture=void 0)}function Ci(){try{I.compressedTexImage2D.apply(I,arguments)}catch($e){console.error("THREE.WebGLState:",$e)}}function ri(){try{I.compressedTexImage3D.apply(I,arguments)}catch($e){console.error("THREE.WebGLState:",$e)}}function $n(){try{I.texSubImage2D.apply(I,arguments)}catch($e){console.error("THREE.WebGLState:",$e)}}function Xi(){try{I.texSubImage3D.apply(I,arguments)}catch($e){console.error("THREE.WebGLState:",$e)}}function Zi(){try{I.compressedTexSubImage2D.apply(I,arguments)}catch($e){console.error("THREE.WebGLState:",$e)}}function Wo(){try{I.compressedTexSubImage3D.apply(I,arguments)}catch($e){console.error("THREE.WebGLState:",$e)}}function Ti(){try{I.texStorage2D.apply(I,arguments)}catch($e){console.error("THREE.WebGLState:",$e)}}function jn(){try{I.texStorage3D.apply(I,arguments)}catch($e){console.error("THREE.WebGLState:",$e)}}function fr(){try{I.texImage2D.apply(I,arguments)}catch($e){console.error("THREE.WebGLState:",$e)}}function yo(){try{I.texImage3D.apply(I,arguments)}catch($e){console.error("THREE.WebGLState:",$e)}}function Fn($e){Zo.equals($e)===!1&&(I.scissor($e.x,$e.y,$e.z,$e.w),Zo.copy($e))}function er($e){Is.equals($e)===!1&&(I.viewport($e.x,$e.y,$e.z,$e.w),Is.copy($e))}function Mr($e,gi){let Xt=y.get(gi);Xt===void 0&&(Xt=new WeakMap,y.set(gi,Xt));let An=Xt.get($e);An===void 0&&(An=I.getUniformBlockIndex(gi,$e.name),Xt.set($e,An))}function Rg($e,gi){const An=y.get(gi).get($e);Q.get(gi)!==An&&(I.uniformBlockBinding(gi,An,$e.__bindingPointIndex),Q.set(gi,An))}function tr(){I.disable(I.BLEND),I.disable(I.CULL_FACE),I.disable(I.DEPTH_TEST),I.disable(I.POLYGON_OFFSET_FILL),I.disable(I.SCISSOR_TEST),I.disable(I.STENCIL_TEST),I.disable(I.SAMPLE_ALPHA_TO_COVERAGE),I.blendEquation(I.FUNC_ADD),I.blendFunc(I.ONE,I.ZERO),I.blendFuncSeparate(I.ONE,I.ZERO,I.ONE,I.ZERO),I.blendColor(0,0,0,0),I.colorMask(!0,!0,!0,!0),I.clearColor(0,0,0,0),I.depthMask(!0),I.depthFunc(I.LESS),I.clearDepth(1),I.stencilMask(4294967295),I.stencilFunc(I.ALWAYS,0,4294967295),I.stencilOp(I.KEEP,I.KEEP,I.KEEP),I.clearStencil(0),I.cullFace(I.BACK),I.frontFace(I.CCW),I.polygonOffset(0,0),I.activeTexture(I.TEXTURE0),I.bindFramebuffer(I.FRAMEBUFFER,null),I.bindFramebuffer(I.DRAW_FRAMEBUFFER,null),I.bindFramebuffer(I.READ_FRAMEBUFFER,null),I.useProgram(null),I.lineWidth(1),I.scissor(0,0,I.canvas.width,I.canvas.height),I.viewport(0,0,I.canvas.width,I.canvas.height),M={},Nt=null,wi={},K={},W=new WeakMap,V=[],X=null,iA=!1,BA=null,nA=null,tA=null,RA=null,mA=null,kA=null,_e=null,ae=new ve(0,0,0),fe=0,Je=!1,zA=null,KA=null,tt=null,Rt=null,Ze=null,Zo.set(0,0,I.canvas.width,I.canvas.height),Is.set(0,0,I.canvas.width,I.canvas.height),r.reset(),a.reset(),B.reset()}return{buffers:{color:r,depth:a,stencil:B},enable:Un,disable:Fi,bindFramebuffer:jo,drawBuffers:cr,useProgram:st,setBlending:ui,setMaterial:ei,setFlipSided:Ji,setCullFace:Ei,setLineWidth:pn,setPolygonOffset:so,setScissorTest:we,activeTexture:VA,bindTexture:dt,unbindTexture:Ai,compressedTexImage2D:Ci,compressedTexImage3D:ri,texImage2D:fr,texImage3D:yo,updateUBOMapping:Mr,uniformBlockBinding:Rg,texStorage2D:Ti,texStorage3D:jn,texSubImage2D:$n,texSubImage3D:Xi,compressedTexSubImage2D:Zi,compressedTexSubImage3D:Wo,scissor:Fn,viewport:er,reset:tr}}function MC(I,A,t,n,r,a,B){const Q=A.has("WEBGL_multisampled_render_to_texture")?A.get("WEBGL_multisampled_render_to_texture"):null,y=typeof navigator>"u"?!1:/OculusBrowser/g.test(navigator.userAgent),M=new Ot,K=new WeakMap;let W;const V=new WeakMap;let X=!1;try{X=typeof OffscreenCanvas<"u"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch{}function iA(we,VA){return X?new OffscreenCanvas(we,VA):La("canvas")}function BA(we,VA,dt){let Ai=1;const Ci=so(we);if((Ci.width>dt||Ci.height>dt)&&(Ai=dt/Math.max(Ci.width,Ci.height)),Ai<1)if(typeof HTMLImageElement<"u"&&we instanceof HTMLImageElement||typeof HTMLCanvasElement<"u"&&we instanceof HTMLCanvasElement||typeof ImageBitmap<"u"&&we instanceof ImageBitmap||typeof VideoFrame<"u"&&we instanceof VideoFrame){const ri=Math.floor(Ai*Ci.width),$n=Math.floor(Ai*Ci.height);W===void 0&&(W=iA(ri,$n));const Xi=VA?iA(ri,$n):W;return Xi.width=ri,Xi.height=$n,Xi.getContext("2d").drawImage(we,0,0,ri,$n),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+Ci.width+"x"+Ci.height+") to ("+ri+"x"+$n+")."),Xi}else return"data"in we&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+Ci.width+"x"+Ci.height+")."),we;return we}function nA(we){return we.generateMipmaps&&we.minFilter!==jA&&we.minFilter!==DA}function tA(we){I.generateMipmap(we)}function RA(we,VA,dt,Ai,Ci=!1){if(we!==null){if(I[we]!==void 0)return I[we];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+we+"'")}let ri=VA;if(VA===I.RED&&(dt===I.FLOAT&&(ri=I.R32F),dt===I.HALF_FLOAT&&(ri=I.R16F),dt===I.UNSIGNED_BYTE&&(ri=I.R8)),VA===I.RED_INTEGER&&(dt===I.UNSIGNED_BYTE&&(ri=I.R8UI),dt===I.UNSIGNED_SHORT&&(ri=I.R16UI),dt===I.UNSIGNED_INT&&(ri=I.R32UI),dt===I.BYTE&&(ri=I.R8I),dt===I.SHORT&&(ri=I.R16I),dt===I.INT&&(ri=I.R32I)),VA===I.RG&&(dt===I.FLOAT&&(ri=I.RG32F),dt===I.HALF_FLOAT&&(ri=I.RG16F),dt===I.UNSIGNED_BYTE&&(ri=I.RG8)),VA===I.RG_INTEGER&&(dt===I.UNSIGNED_BYTE&&(ri=I.RG8UI),dt===I.UNSIGNED_SHORT&&(ri=I.RG16UI),dt===I.UNSIGNED_INT&&(ri=I.RG32UI),dt===I.BYTE&&(ri=I.RG8I),dt===I.SHORT&&(ri=I.RG16I),dt===I.INT&&(ri=I.RG32I)),VA===I.RGB&&dt===I.UNSIGNED_INT_5_9_9_9_REV&&(ri=I.RGB9_E5),VA===I.RGBA){const $n=Ci?Wa:oo.getTransfer(Ai);dt===I.FLOAT&&(ri=I.RGBA32F),dt===I.HALF_FLOAT&&(ri=I.RGBA16F),dt===I.UNSIGNED_BYTE&&(ri=$n===eA?I.SRGB8_ALPHA8:I.RGBA8),dt===I.UNSIGNED_SHORT_4_4_4_4&&(ri=I.RGBA4),dt===I.UNSIGNED_SHORT_5_5_5_1&&(ri=I.RGB5_A1)}return(ri===I.R16F||ri===I.R32F||ri===I.RG16F||ri===I.RG32F||ri===I.RGBA16F||ri===I.RGBA32F)&&A.get("EXT_color_buffer_float"),ri}function mA(we,VA){return nA(we)===!0||we.isFramebufferTexture&&we.minFilter!==jA&&we.minFilter!==DA?Math.log2(Math.max(VA.width,VA.height))+1:we.mipmaps!==void 0&&we.mipmaps.length>0?we.mipmaps.length:we.isCompressedTexture&&Array.isArray(we.image)?VA.mipmaps.length:1}function kA(we){const VA=we.target;VA.removeEventListener("dispose",kA),ae(VA),VA.isVideoTexture&&K.delete(VA)}function _e(we){const VA=we.target;VA.removeEventListener("dispose",_e),Je(VA)}function ae(we){const VA=n.get(we);if(VA.__webglInit===void 0)return;const dt=we.source,Ai=V.get(dt);if(Ai){const Ci=Ai[VA.__cacheKey];Ci.usedTimes--,Ci.usedTimes===0&&fe(we),Object.keys(Ai).length===0&&V.delete(dt)}n.remove(we)}function fe(we){const VA=n.get(we);I.deleteTexture(VA.__webglTexture);const dt=we.source,Ai=V.get(dt);delete Ai[VA.__cacheKey],B.memory.textures--}function Je(we){const VA=n.get(we);if(we.depthTexture&&we.depthTexture.dispose(),we.isWebGLCubeRenderTarget)for(let Ai=0;Ai<6;Ai++){if(Array.isArray(VA.__webglFramebuffer[Ai]))for(let Ci=0;Ci<VA.__webglFramebuffer[Ai].length;Ci++)I.deleteFramebuffer(VA.__webglFramebuffer[Ai][Ci]);else I.deleteFramebuffer(VA.__webglFramebuffer[Ai]);VA.__webglDepthbuffer&&I.deleteRenderbuffer(VA.__webglDepthbuffer[Ai])}else{if(Array.isArray(VA.__webglFramebuffer))for(let Ai=0;Ai<VA.__webglFramebuffer.length;Ai++)I.deleteFramebuffer(VA.__webglFramebuffer[Ai]);else I.deleteFramebuffer(VA.__webglFramebuffer);if(VA.__webglDepthbuffer&&I.deleteRenderbuffer(VA.__webglDepthbuffer),VA.__webglMultisampledFramebuffer&&I.deleteFramebuffer(VA.__webglMultisampledFramebuffer),VA.__webglColorRenderbuffer)for(let Ai=0;Ai<VA.__webglColorRenderbuffer.length;Ai++)VA.__webglColorRenderbuffer[Ai]&&I.deleteRenderbuffer(VA.__webglColorRenderbuffer[Ai]);VA.__webglDepthRenderbuffer&&I.deleteRenderbuffer(VA.__webglDepthRenderbuffer)}const dt=we.textures;for(let Ai=0,Ci=dt.length;Ai<Ci;Ai++){const ri=n.get(dt[Ai]);ri.__webglTexture&&(I.deleteTexture(ri.__webglTexture),B.memory.textures--),n.remove(dt[Ai])}n.remove(we)}let zA=0;function KA(){zA=0}function tt(){const we=zA;return we>=r.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+we+" texture units while this GPU supports only "+r.maxTextures),zA+=1,we}function Rt(we){const VA=[];return VA.push(we.wrapS),VA.push(we.wrapT),VA.push(we.wrapR||0),VA.push(we.magFilter),VA.push(we.minFilter),VA.push(we.anisotropy),VA.push(we.internalFormat),VA.push(we.format),VA.push(we.type),VA.push(we.generateMipmaps),VA.push(we.premultiplyAlpha),VA.push(we.flipY),VA.push(we.unpackAlignment),VA.push(we.colorSpace),VA.join()}function Ze(we,VA){const dt=n.get(we);if(we.isVideoTexture&&Ei(we),we.isRenderTargetTexture===!1&&we.version>0&&dt.__version!==we.version){const Ai=we.image;if(Ai===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(Ai.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{Zo(dt,we,VA);return}}t.bindTexture(I.TEXTURE_2D,dt.__webglTexture,I.TEXTURE0+VA)}function yt(we,VA){const dt=n.get(we);if(we.version>0&&dt.__version!==we.version){Zo(dt,we,VA);return}t.bindTexture(I.TEXTURE_2D_ARRAY,dt.__webglTexture,I.TEXTURE0+VA)}function jt(we,VA){const dt=n.get(we);if(we.version>0&&dt.__version!==we.version){Zo(dt,we,VA);return}t.bindTexture(I.TEXTURE_3D,dt.__webglTexture,I.TEXTURE0+VA)}function oi(we,VA){const dt=n.get(we);if(we.version>0&&dt.__version!==we.version){Is(dt,we,VA);return}t.bindTexture(I.TEXTURE_CUBE_MAP,dt.__webglTexture,I.TEXTURE0+VA)}const Hi={[vA]:I.REPEAT,[ie]:I.CLAMP_TO_EDGE,[ZA]:I.MIRRORED_REPEAT},Nt={[jA]:I.NEAREST,[Be]:I.NEAREST_MIPMAP_NEAREST,[H]:I.NEAREST_MIPMAP_LINEAR,[DA]:I.LINEAR,[YA]:I.LINEAR_MIPMAP_NEAREST,[De]:I.LINEAR_MIPMAP_LINEAR},wi={[Lr]:I.NEVER,[dg]:I.ALWAYS,[rs]:I.LESS,[Pr]:I.LEQUAL,[bg]:I.EQUAL,[Gs]:I.GEQUAL,[xr]:I.GREATER,[Or]:I.NOTEQUAL};function Di(we,VA){if(VA.type===hr&&A.has("OES_texture_float_linear")===!1&&(VA.magFilter===DA||VA.magFilter===YA||VA.magFilter===H||VA.magFilter===De||VA.minFilter===DA||VA.minFilter===YA||VA.minFilter===H||VA.minFilter===De)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),I.texParameteri(we,I.TEXTURE_WRAP_S,Hi[VA.wrapS]),I.texParameteri(we,I.TEXTURE_WRAP_T,Hi[VA.wrapT]),(we===I.TEXTURE_3D||we===I.TEXTURE_2D_ARRAY)&&I.texParameteri(we,I.TEXTURE_WRAP_R,Hi[VA.wrapR]),I.texParameteri(we,I.TEXTURE_MAG_FILTER,Nt[VA.magFilter]),I.texParameteri(we,I.TEXTURE_MIN_FILTER,Nt[VA.minFilter]),VA.compareFunction&&(I.texParameteri(we,I.TEXTURE_COMPARE_MODE,I.COMPARE_REF_TO_TEXTURE),I.texParameteri(we,I.TEXTURE_COMPARE_FUNC,wi[VA.compareFunction])),A.has("EXT_texture_filter_anisotropic")===!0){if(VA.magFilter===jA||VA.minFilter!==H&&VA.minFilter!==De||VA.type===hr&&A.has("OES_texture_float_linear")===!1)return;if(VA.anisotropy>1||n.get(VA).__currentAnisotropy){const dt=A.get("EXT_texture_filter_anisotropic");I.texParameterf(we,dt.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(VA.anisotropy,r.getMaxAnisotropy())),n.get(VA).__currentAnisotropy=VA.anisotropy}}}function Gn(we,VA){let dt=!1;we.__webglInit===void 0&&(we.__webglInit=!0,VA.addEventListener("dispose",kA));const Ai=VA.source;let Ci=V.get(Ai);Ci===void 0&&(Ci={},V.set(Ai,Ci));const ri=Rt(VA);if(ri!==we.__cacheKey){Ci[ri]===void 0&&(Ci[ri]={texture:I.createTexture(),usedTimes:0},B.memory.textures++,dt=!0),Ci[ri].usedTimes++;const $n=Ci[we.__cacheKey];$n!==void 0&&(Ci[we.__cacheKey].usedTimes--,$n.usedTimes===0&&fe(VA)),we.__cacheKey=ri,we.__webglTexture=Ci[ri].texture}return dt}function Zo(we,VA,dt){let Ai=I.TEXTURE_2D;(VA.isDataArrayTexture||VA.isCompressedArrayTexture)&&(Ai=I.TEXTURE_2D_ARRAY),VA.isData3DTexture&&(Ai=I.TEXTURE_3D);const Ci=Gn(we,VA),ri=VA.source;t.bindTexture(Ai,we.__webglTexture,I.TEXTURE0+dt);const $n=n.get(ri);if(ri.version!==$n.__version||Ci===!0){t.activeTexture(I.TEXTURE0+dt);const Xi=oo.getPrimaries(oo.workingColorSpace),Zi=VA.colorSpace===In?null:oo.getPrimaries(VA.colorSpace),Wo=VA.colorSpace===In||Xi===Zi?I.NONE:I.BROWSER_DEFAULT_WEBGL;I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,VA.flipY),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,VA.premultiplyAlpha),I.pixelStorei(I.UNPACK_ALIGNMENT,VA.unpackAlignment),I.pixelStorei(I.UNPACK_COLORSPACE_CONVERSION_WEBGL,Wo);let Ti=BA(VA.image,!1,r.maxTextureSize);Ti=pn(VA,Ti);const jn=a.convert(VA.format,VA.colorSpace),fr=a.convert(VA.type);let yo=RA(VA.internalFormat,jn,fr,VA.colorSpace,VA.isVideoTexture);Di(Ai,VA);let Fn;const er=VA.mipmaps,Mr=VA.isVideoTexture!==!0,Rg=$n.__version===void 0||Ci===!0,tr=ri.dataReady,$e=mA(VA,Ti);if(VA.isDepthTexture)yo=I.DEPTH_COMPONENT16,VA.type===hr?yo=I.DEPTH_COMPONENT32F:VA.type===kn?yo=I.DEPTH_COMPONENT24:VA.type===ns&&(yo=I.DEPTH24_STENCIL8),Rg&&(Mr?t.texStorage2D(I.TEXTURE_2D,1,yo,Ti.width,Ti.height):t.texImage2D(I.TEXTURE_2D,0,yo,Ti.width,Ti.height,0,jn,fr,null));else if(VA.isDataTexture)if(er.length>0){Mr&&Rg&&t.texStorage2D(I.TEXTURE_2D,$e,yo,er[0].width,er[0].height);for(let gi=0,Xt=er.length;gi<Xt;gi++)Fn=er[gi],Mr?tr&&t.texSubImage2D(I.TEXTURE_2D,gi,0,0,Fn.width,Fn.height,jn,fr,Fn.data):t.texImage2D(I.TEXTURE_2D,gi,yo,Fn.width,Fn.height,0,jn,fr,Fn.data);VA.generateMipmaps=!1}else Mr?(Rg&&t.texStorage2D(I.TEXTURE_2D,$e,yo,Ti.width,Ti.height),tr&&t.texSubImage2D(I.TEXTURE_2D,0,0,0,Ti.width,Ti.height,jn,fr,Ti.data)):t.texImage2D(I.TEXTURE_2D,0,yo,Ti.width,Ti.height,0,jn,fr,Ti.data);else if(VA.isCompressedTexture)if(VA.isCompressedArrayTexture){Mr&&Rg&&t.texStorage3D(I.TEXTURE_2D_ARRAY,$e,yo,er[0].width,er[0].height,Ti.depth);for(let gi=0,Xt=er.length;gi<Xt;gi++)Fn=er[gi],VA.format!==os?jn!==null?Mr?tr&&t.compressedTexSubImage3D(I.TEXTURE_2D_ARRAY,gi,0,0,0,Fn.width,Fn.height,Ti.depth,jn,Fn.data,0,0):t.compressedTexImage3D(I.TEXTURE_2D_ARRAY,gi,yo,Fn.width,Fn.height,Ti.depth,0,Fn.data,0,0):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Mr?tr&&t.texSubImage3D(I.TEXTURE_2D_ARRAY,gi,0,0,0,Fn.width,Fn.height,Ti.depth,jn,fr,Fn.data):t.texImage3D(I.TEXTURE_2D_ARRAY,gi,yo,Fn.width,Fn.height,Ti.depth,0,jn,fr,Fn.data)}else{Mr&&Rg&&t.texStorage2D(I.TEXTURE_2D,$e,yo,er[0].width,er[0].height);for(let gi=0,Xt=er.length;gi<Xt;gi++)Fn=er[gi],VA.format!==os?jn!==null?Mr?tr&&t.compressedTexSubImage2D(I.TEXTURE_2D,gi,0,0,Fn.width,Fn.height,jn,Fn.data):t.compressedTexImage2D(I.TEXTURE_2D,gi,yo,Fn.width,Fn.height,0,Fn.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Mr?tr&&t.texSubImage2D(I.TEXTURE_2D,gi,0,0,Fn.width,Fn.height,jn,fr,Fn.data):t.texImage2D(I.TEXTURE_2D,gi,yo,Fn.width,Fn.height,0,jn,fr,Fn.data)}else if(VA.isDataArrayTexture)Mr?(Rg&&t.texStorage3D(I.TEXTURE_2D_ARRAY,$e,yo,Ti.width,Ti.height,Ti.depth),tr&&t.texSubImage3D(I.TEXTURE_2D_ARRAY,0,0,0,0,Ti.width,Ti.height,Ti.depth,jn,fr,Ti.data)):t.texImage3D(I.TEXTURE_2D_ARRAY,0,yo,Ti.width,Ti.height,Ti.depth,0,jn,fr,Ti.data);else if(VA.isData3DTexture)Mr?(Rg&&t.texStorage3D(I.TEXTURE_3D,$e,yo,Ti.width,Ti.height,Ti.depth),tr&&t.texSubImage3D(I.TEXTURE_3D,0,0,0,0,Ti.width,Ti.height,Ti.depth,jn,fr,Ti.data)):t.texImage3D(I.TEXTURE_3D,0,yo,Ti.width,Ti.height,Ti.depth,0,jn,fr,Ti.data);else if(VA.isFramebufferTexture){if(Rg)if(Mr)t.texStorage2D(I.TEXTURE_2D,$e,yo,Ti.width,Ti.height);else{let gi=Ti.width,Xt=Ti.height;for(let An=0;An<$e;An++)t.texImage2D(I.TEXTURE_2D,An,yo,gi,Xt,0,jn,fr,null),gi>>=1,Xt>>=1}}else if(er.length>0){if(Mr&&Rg){const gi=so(er[0]);t.texStorage2D(I.TEXTURE_2D,$e,yo,gi.width,gi.height)}for(let gi=0,Xt=er.length;gi<Xt;gi++)Fn=er[gi],Mr?tr&&t.texSubImage2D(I.TEXTURE_2D,gi,0,0,jn,fr,Fn):t.texImage2D(I.TEXTURE_2D,gi,yo,jn,fr,Fn);VA.generateMipmaps=!1}else if(Mr){if(Rg){const gi=so(Ti);t.texStorage2D(I.TEXTURE_2D,$e,yo,gi.width,gi.height)}tr&&t.texSubImage2D(I.TEXTURE_2D,0,0,0,jn,fr,Ti)}else t.texImage2D(I.TEXTURE_2D,0,yo,jn,fr,Ti);nA(VA)&&tA(Ai),$n.__version=ri.version,VA.onUpdate&&VA.onUpdate(VA)}we.__version=VA.version}function Is(we,VA,dt){if(VA.image.length!==6)return;const Ai=Gn(we,VA),Ci=VA.source;t.bindTexture(I.TEXTURE_CUBE_MAP,we.__webglTexture,I.TEXTURE0+dt);const ri=n.get(Ci);if(Ci.version!==ri.__version||Ai===!0){t.activeTexture(I.TEXTURE0+dt);const $n=oo.getPrimaries(oo.workingColorSpace),Xi=VA.colorSpace===In?null:oo.getPrimaries(VA.colorSpace),Zi=VA.colorSpace===In||$n===Xi?I.NONE:I.BROWSER_DEFAULT_WEBGL;I.pixelStorei(I.UNPACK_FLIP_Y_WEBGL,VA.flipY),I.pixelStorei(I.UNPACK_PREMULTIPLY_ALPHA_WEBGL,VA.premultiplyAlpha),I.pixelStorei(I.UNPACK_ALIGNMENT,VA.unpackAlignment),I.pixelStorei(I.UNPACK_COLORSPACE_CONVERSION_WEBGL,Zi);const Wo=VA.isCompressedTexture||VA.image[0].isCompressedTexture,Ti=VA.image[0]&&VA.image[0].isDataTexture,jn=[];for(let Xt=0;Xt<6;Xt++)!Wo&&!Ti?jn[Xt]=BA(VA.image[Xt],!0,r.maxCubemapSize):jn[Xt]=Ti?VA.image[Xt].image:VA.image[Xt],jn[Xt]=pn(VA,jn[Xt]);const fr=jn[0],yo=a.convert(VA.format,VA.colorSpace),Fn=a.convert(VA.type),er=RA(VA.internalFormat,yo,Fn,VA.colorSpace),Mr=VA.isVideoTexture!==!0,Rg=ri.__version===void 0||Ai===!0,tr=Ci.dataReady;let $e=mA(VA,fr);Di(I.TEXTURE_CUBE_MAP,VA);let gi;if(Wo){Mr&&Rg&&t.texStorage2D(I.TEXTURE_CUBE_MAP,$e,er,fr.width,fr.height);for(let Xt=0;Xt<6;Xt++){gi=jn[Xt].mipmaps;for(let An=0;An<gi.length;An++){const ln=gi[An];VA.format!==os?yo!==null?Mr?tr&&t.compressedTexSubImage2D(I.TEXTURE_CUBE_MAP_POSITIVE_X+Xt,An,0,0,ln.width,ln.height,yo,ln.data):t.compressedTexImage2D(I.TEXTURE_CUBE_MAP_POSITIVE_X+Xt,An,er,ln.width,ln.height,0,ln.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):Mr?tr&&t.texSubImage2D(I.TEXTURE_CUBE_MAP_POSITIVE_X+Xt,An,0,0,ln.width,ln.height,yo,Fn,ln.data):t.texImage2D(I.TEXTURE_CUBE_MAP_POSITIVE_X+Xt,An,er,ln.width,ln.height,0,yo,Fn,ln.data)}}}else{if(gi=VA.mipmaps,Mr&&Rg){gi.length>0&&$e++;const Xt=so(jn[0]);t.texStorage2D(I.TEXTURE_CUBE_MAP,$e,er,Xt.width,Xt.height)}for(let Xt=0;Xt<6;Xt++)if(Ti){Mr?tr&&t.texSubImage2D(I.TEXTURE_CUBE_MAP_POSITIVE_X+Xt,0,0,0,jn[Xt].width,jn[Xt].height,yo,Fn,jn[Xt].data):t.texImage2D(I.TEXTURE_CUBE_MAP_POSITIVE_X+Xt,0,er,jn[Xt].width,jn[Xt].height,0,yo,Fn,jn[Xt].data);for(let An=0;An<gi.length;An++){const Vr=gi[An].image[Xt].image;Mr?tr&&t.texSubImage2D(I.TEXTURE_CUBE_MAP_POSITIVE_X+Xt,An+1,0,0,Vr.width,Vr.height,yo,Fn,Vr.data):t.texImage2D(I.TEXTURE_CUBE_MAP_POSITIVE_X+Xt,An+1,er,Vr.width,Vr.height,0,yo,Fn,Vr.data)}}else{Mr?tr&&t.texSubImage2D(I.TEXTURE_CUBE_MAP_POSITIVE_X+Xt,0,0,0,yo,Fn,jn[Xt]):t.texImage2D(I.TEXTURE_CUBE_MAP_POSITIVE_X+Xt,0,er,yo,Fn,jn[Xt]);for(let An=0;An<gi.length;An++){const ln=gi[An];Mr?tr&&t.texSubImage2D(I.TEXTURE_CUBE_MAP_POSITIVE_X+Xt,An+1,0,0,yo,Fn,ln.image[Xt]):t.texImage2D(I.TEXTURE_CUBE_MAP_POSITIVE_X+Xt,An+1,er,yo,Fn,ln.image[Xt])}}}nA(VA)&&tA(I.TEXTURE_CUBE_MAP),ri.__version=Ci.version,VA.onUpdate&&VA.onUpdate(VA)}we.__version=VA.version}function Pt(we,VA,dt,Ai,Ci,ri){const $n=a.convert(dt.format,dt.colorSpace),Xi=a.convert(dt.type),Zi=RA(dt.internalFormat,$n,Xi,dt.colorSpace);if(!n.get(VA).__hasExternalTextures){const Ti=Math.max(1,VA.width>>ri),jn=Math.max(1,VA.height>>ri);Ci===I.TEXTURE_3D||Ci===I.TEXTURE_2D_ARRAY?t.texImage3D(Ci,ri,Zi,Ti,jn,VA.depth,0,$n,Xi,null):t.texImage2D(Ci,ri,Zi,Ti,jn,0,$n,Xi,null)}t.bindFramebuffer(I.FRAMEBUFFER,we),Ji(VA)?Q.framebufferTexture2DMultisampleEXT(I.FRAMEBUFFER,Ai,Ci,n.get(dt).__webglTexture,0,ei(VA)):(Ci===I.TEXTURE_2D||Ci>=I.TEXTURE_CUBE_MAP_POSITIVE_X&&Ci<=I.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&I.framebufferTexture2D(I.FRAMEBUFFER,Ai,Ci,n.get(dt).__webglTexture,ri),t.bindFramebuffer(I.FRAMEBUFFER,null)}function Gi(we,VA,dt){if(I.bindRenderbuffer(I.RENDERBUFFER,we),VA.depthBuffer&&!VA.stencilBuffer){let Ai=I.DEPTH_COMPONENT24;if(dt||Ji(VA)){const Ci=VA.depthTexture;Ci&&Ci.isDepthTexture&&(Ci.type===hr?Ai=I.DEPTH_COMPONENT32F:Ci.type===kn&&(Ai=I.DEPTH_COMPONENT24));const ri=ei(VA);Ji(VA)?Q.renderbufferStorageMultisampleEXT(I.RENDERBUFFER,ri,Ai,VA.width,VA.height):I.renderbufferStorageMultisample(I.RENDERBUFFER,ri,Ai,VA.width,VA.height)}else I.renderbufferStorage(I.RENDERBUFFER,Ai,VA.width,VA.height);I.framebufferRenderbuffer(I.FRAMEBUFFER,I.DEPTH_ATTACHMENT,I.RENDERBUFFER,we)}else if(VA.depthBuffer&&VA.stencilBuffer){const Ai=ei(VA);dt&&Ji(VA)===!1?I.renderbufferStorageMultisample(I.RENDERBUFFER,Ai,I.DEPTH24_STENCIL8,VA.width,VA.height):Ji(VA)?Q.renderbufferStorageMultisampleEXT(I.RENDERBUFFER,Ai,I.DEPTH24_STENCIL8,VA.width,VA.height):I.renderbufferStorage(I.RENDERBUFFER,I.DEPTH_STENCIL,VA.width,VA.height),I.framebufferRenderbuffer(I.FRAMEBUFFER,I.DEPTH_STENCIL_ATTACHMENT,I.RENDERBUFFER,we)}else{const Ai=VA.textures;for(let Ci=0;Ci<Ai.length;Ci++){const ri=Ai[Ci],$n=a.convert(ri.format,ri.colorSpace),Xi=a.convert(ri.type),Zi=RA(ri.internalFormat,$n,Xi,ri.colorSpace),Wo=ei(VA);dt&&Ji(VA)===!1?I.renderbufferStorageMultisample(I.RENDERBUFFER,Wo,Zi,VA.width,VA.height):Ji(VA)?Q.renderbufferStorageMultisampleEXT(I.RENDERBUFFER,Wo,Zi,VA.width,VA.height):I.renderbufferStorage(I.RENDERBUFFER,Zi,VA.width,VA.height)}}I.bindRenderbuffer(I.RENDERBUFFER,null)}function Un(we,VA){if(VA&&VA.isWebGLCubeRenderTarget)throw new Error("Depth Texture with cube render targets is not supported");if(t.bindFramebuffer(I.FRAMEBUFFER,we),!(VA.depthTexture&&VA.depthTexture.isDepthTexture))throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");(!n.get(VA.depthTexture).__webglTexture||VA.depthTexture.image.width!==VA.width||VA.depthTexture.image.height!==VA.height)&&(VA.depthTexture.image.width=VA.width,VA.depthTexture.image.height=VA.height,VA.depthTexture.needsUpdate=!0),Ze(VA.depthTexture,0);const Ai=n.get(VA.depthTexture).__webglTexture,Ci=ei(VA);if(VA.depthTexture.format===lr)Ji(VA)?Q.framebufferTexture2DMultisampleEXT(I.FRAMEBUFFER,I.DEPTH_ATTACHMENT,I.TEXTURE_2D,Ai,0,Ci):I.framebufferTexture2D(I.FRAMEBUFFER,I.DEPTH_ATTACHMENT,I.TEXTURE_2D,Ai,0);else if(VA.depthTexture.format===Nr)Ji(VA)?Q.framebufferTexture2DMultisampleEXT(I.FRAMEBUFFER,I.DEPTH_STENCIL_ATTACHMENT,I.TEXTURE_2D,Ai,0,Ci):I.framebufferTexture2D(I.FRAMEBUFFER,I.DEPTH_STENCIL_ATTACHMENT,I.TEXTURE_2D,Ai,0);else throw new Error("Unknown depthTexture format")}function Fi(we){const VA=n.get(we),dt=we.isWebGLCubeRenderTarget===!0;if(we.depthTexture&&!VA.__autoAllocateDepthBuffer){if(dt)throw new Error("target.depthTexture not supported in Cube render targets");Un(VA.__webglFramebuffer,we)}else if(dt){VA.__webglDepthbuffer=[];for(let Ai=0;Ai<6;Ai++)t.bindFramebuffer(I.FRAMEBUFFER,VA.__webglFramebuffer[Ai]),VA.__webglDepthbuffer[Ai]=I.createRenderbuffer(),Gi(VA.__webglDepthbuffer[Ai],we,!1)}else t.bindFramebuffer(I.FRAMEBUFFER,VA.__webglFramebuffer),VA.__webglDepthbuffer=I.createRenderbuffer(),Gi(VA.__webglDepthbuffer,we,!1);t.bindFramebuffer(I.FRAMEBUFFER,null)}function jo(we,VA,dt){const Ai=n.get(we);VA!==void 0&&Pt(Ai.__webglFramebuffer,we,we.texture,I.COLOR_ATTACHMENT0,I.TEXTURE_2D,0),dt!==void 0&&Fi(we)}function cr(we){const VA=we.texture,dt=n.get(we),Ai=n.get(VA);we.addEventListener("dispose",_e);const Ci=we.textures,ri=we.isWebGLCubeRenderTarget===!0,$n=Ci.length>1;if($n||(Ai.__webglTexture===void 0&&(Ai.__webglTexture=I.createTexture()),Ai.__version=VA.version,B.memory.textures++),ri){dt.__webglFramebuffer=[];for(let Xi=0;Xi<6;Xi++)if(VA.mipmaps&&VA.mipmaps.length>0){dt.__webglFramebuffer[Xi]=[];for(let Zi=0;Zi<VA.mipmaps.length;Zi++)dt.__webglFramebuffer[Xi][Zi]=I.createFramebuffer()}else dt.__webglFramebuffer[Xi]=I.createFramebuffer()}else{if(VA.mipmaps&&VA.mipmaps.length>0){dt.__webglFramebuffer=[];for(let Xi=0;Xi<VA.mipmaps.length;Xi++)dt.__webglFramebuffer[Xi]=I.createFramebuffer()}else dt.__webglFramebuffer=I.createFramebuffer();if($n)for(let Xi=0,Zi=Ci.length;Xi<Zi;Xi++){const Wo=n.get(Ci[Xi]);Wo.__webglTexture===void 0&&(Wo.__webglTexture=I.createTexture(),B.memory.textures++)}if(we.samples>0&&Ji(we)===!1){dt.__webglMultisampledFramebuffer=I.createFramebuffer(),dt.__webglColorRenderbuffer=[],t.bindFramebuffer(I.FRAMEBUFFER,dt.__webglMultisampledFramebuffer);for(let Xi=0;Xi<Ci.length;Xi++){const Zi=Ci[Xi];dt.__webglColorRenderbuffer[Xi]=I.createRenderbuffer(),I.bindRenderbuffer(I.RENDERBUFFER,dt.__webglColorRenderbuffer[Xi]);const Wo=a.convert(Zi.format,Zi.colorSpace),Ti=a.convert(Zi.type),jn=RA(Zi.internalFormat,Wo,Ti,Zi.colorSpace,we.isXRRenderTarget===!0),fr=ei(we);I.renderbufferStorageMultisample(I.RENDERBUFFER,fr,jn,we.width,we.height),I.framebufferRenderbuffer(I.FRAMEBUFFER,I.COLOR_ATTACHMENT0+Xi,I.RENDERBUFFER,dt.__webglColorRenderbuffer[Xi])}I.bindRenderbuffer(I.RENDERBUFFER,null),we.depthBuffer&&(dt.__webglDepthRenderbuffer=I.createRenderbuffer(),Gi(dt.__webglDepthRenderbuffer,we,!0)),t.bindFramebuffer(I.FRAMEBUFFER,null)}}if(ri){t.bindTexture(I.TEXTURE_CUBE_MAP,Ai.__webglTexture),Di(I.TEXTURE_CUBE_MAP,VA);for(let Xi=0;Xi<6;Xi++)if(VA.mipmaps&&VA.mipmaps.length>0)for(let Zi=0;Zi<VA.mipmaps.length;Zi++)Pt(dt.__webglFramebuffer[Xi][Zi],we,VA,I.COLOR_ATTACHMENT0,I.TEXTURE_CUBE_MAP_POSITIVE_X+Xi,Zi);else Pt(dt.__webglFramebuffer[Xi],we,VA,I.COLOR_ATTACHMENT0,I.TEXTURE_CUBE_MAP_POSITIVE_X+Xi,0);nA(VA)&&tA(I.TEXTURE_CUBE_MAP),t.unbindTexture()}else if($n){for(let Xi=0,Zi=Ci.length;Xi<Zi;Xi++){const Wo=Ci[Xi],Ti=n.get(Wo);t.bindTexture(I.TEXTURE_2D,Ti.__webglTexture),Di(I.TEXTURE_2D,Wo),Pt(dt.__webglFramebuffer,we,Wo,I.COLOR_ATTACHMENT0+Xi,I.TEXTURE_2D,0),nA(Wo)&&tA(I.TEXTURE_2D)}t.unbindTexture()}else{let Xi=I.TEXTURE_2D;if((we.isWebGL3DRenderTarget||we.isWebGLArrayRenderTarget)&&(Xi=we.isWebGL3DRenderTarget?I.TEXTURE_3D:I.TEXTURE_2D_ARRAY),t.bindTexture(Xi,Ai.__webglTexture),Di(Xi,VA),VA.mipmaps&&VA.mipmaps.length>0)for(let Zi=0;Zi<VA.mipmaps.length;Zi++)Pt(dt.__webglFramebuffer[Zi],we,VA,I.COLOR_ATTACHMENT0,Xi,Zi);else Pt(dt.__webglFramebuffer,we,VA,I.COLOR_ATTACHMENT0,Xi,0);nA(VA)&&tA(Xi),t.unbindTexture()}we.depthBuffer&&Fi(we)}function st(we){const VA=we.textures;for(let dt=0,Ai=VA.length;dt<Ai;dt++){const Ci=VA[dt];if(nA(Ci)){const ri=we.isWebGLCubeRenderTarget?I.TEXTURE_CUBE_MAP:I.TEXTURE_2D,$n=n.get(Ci).__webglTexture;t.bindTexture(ri,$n),tA(ri),t.unbindTexture()}}}const wr=[],qt=[];function ui(we){if(we.samples>0){if(Ji(we)===!1){const VA=we.textures,dt=we.width,Ai=we.height;let Ci=I.COLOR_BUFFER_BIT;const ri=we.stencilBuffer?I.DEPTH_STENCIL_ATTACHMENT:I.DEPTH_ATTACHMENT,$n=n.get(we),Xi=VA.length>1;if(Xi)for(let Zi=0;Zi<VA.length;Zi++)t.bindFramebuffer(I.FRAMEBUFFER,$n.__webglMultisampledFramebuffer),I.framebufferRenderbuffer(I.FRAMEBUFFER,I.COLOR_ATTACHMENT0+Zi,I.RENDERBUFFER,null),t.bindFramebuffer(I.FRAMEBUFFER,$n.__webglFramebuffer),I.framebufferTexture2D(I.DRAW_FRAMEBUFFER,I.COLOR_ATTACHMENT0+Zi,I.TEXTURE_2D,null,0);t.bindFramebuffer(I.READ_FRAMEBUFFER,$n.__webglMultisampledFramebuffer),t.bindFramebuffer(I.DRAW_FRAMEBUFFER,$n.__webglFramebuffer);for(let Zi=0;Zi<VA.length;Zi++){if(we.resolveDepthBuffer&&(we.depthBuffer&&(Ci|=I.DEPTH_BUFFER_BIT),we.stencilBuffer&&we.resolveStencilBuffer&&(Ci|=I.STENCIL_BUFFER_BIT)),Xi){I.framebufferRenderbuffer(I.READ_FRAMEBUFFER,I.COLOR_ATTACHMENT0,I.RENDERBUFFER,$n.__webglColorRenderbuffer[Zi]);const Wo=n.get(VA[Zi]).__webglTexture;I.framebufferTexture2D(I.DRAW_FRAMEBUFFER,I.COLOR_ATTACHMENT0,I.TEXTURE_2D,Wo,0)}I.blitFramebuffer(0,0,dt,Ai,0,0,dt,Ai,Ci,I.NEAREST),y===!0&&(wr.length=0,qt.length=0,wr.push(I.COLOR_ATTACHMENT0+Zi),we.depthBuffer&&we.resolveDepthBuffer===!1&&(wr.push(ri),qt.push(ri),I.invalidateFramebuffer(I.DRAW_FRAMEBUFFER,qt)),I.invalidateFramebuffer(I.READ_FRAMEBUFFER,wr))}if(t.bindFramebuffer(I.READ_FRAMEBUFFER,null),t.bindFramebuffer(I.DRAW_FRAMEBUFFER,null),Xi)for(let Zi=0;Zi<VA.length;Zi++){t.bindFramebuffer(I.FRAMEBUFFER,$n.__webglMultisampledFramebuffer),I.framebufferRenderbuffer(I.FRAMEBUFFER,I.COLOR_ATTACHMENT0+Zi,I.RENDERBUFFER,$n.__webglColorRenderbuffer[Zi]);const Wo=n.get(VA[Zi]).__webglTexture;t.bindFramebuffer(I.FRAMEBUFFER,$n.__webglFramebuffer),I.framebufferTexture2D(I.DRAW_FRAMEBUFFER,I.COLOR_ATTACHMENT0+Zi,I.TEXTURE_2D,Wo,0)}t.bindFramebuffer(I.DRAW_FRAMEBUFFER,$n.__webglMultisampledFramebuffer)}else if(we.depthBuffer&&we.resolveDepthBuffer===!1&&y){const VA=we.stencilBuffer?I.DEPTH_STENCIL_ATTACHMENT:I.DEPTH_ATTACHMENT;I.invalidateFramebuffer(I.DRAW_FRAMEBUFFER,[VA])}}}function ei(we){return Math.min(r.maxSamples,we.samples)}function Ji(we){const VA=n.get(we);return we.samples>0&&A.has("WEBGL_multisampled_render_to_texture")===!0&&VA.__useRenderToTexture!==!1}function Ei(we){const VA=B.render.frame;K.get(we)!==VA&&(K.set(we,VA),we.update())}function pn(we,VA){const dt=we.colorSpace,Ai=we.format,Ci=we.type;return we.isCompressedTexture===!0||we.isVideoTexture===!0||dt!==jr&&dt!==In&&(oo.getTransfer(dt)===eA?(Ai!==os||Ci!==Mi)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",dt)),VA}function so(we){return typeof HTMLImageElement<"u"&&we instanceof HTMLImageElement?(M.width=we.naturalWidth||we.width,M.height=we.naturalHeight||we.height):typeof VideoFrame<"u"&&we instanceof VideoFrame?(M.width=we.displayWidth,M.height=we.displayHeight):(M.width=we.width,M.height=we.height),M}this.allocateTextureUnit=tt,this.resetTextureUnits=KA,this.setTexture2D=Ze,this.setTexture2DArray=yt,this.setTexture3D=jt,this.setTextureCube=oi,this.rebindTextures=jo,this.setupRenderTarget=cr,this.updateRenderTargetMipmap=st,this.updateMultisampleRenderTarget=ui,this.setupDepthRenderbuffer=Fi,this.setupFrameBufferTexture=Pt,this.useMultisampledRTT=Ji}function uQ(I,A){function t(n,r=In){let a;const B=oo.getTransfer(r);if(n===Mi)return I.UNSIGNED_BYTE;if(n===is)return I.UNSIGNED_SHORT_4_4_4_4;if(n===cg)return I.UNSIGNED_SHORT_5_5_5_1;if(n===Tg)return I.UNSIGNED_INT_5_9_9_9_REV;if(n===Si)return I.BYTE;if(n===nn)return I.SHORT;if(n===zi)return I.UNSIGNED_SHORT;if(n===Zr)return I.INT;if(n===kn)return I.UNSIGNED_INT;if(n===hr)return I.FLOAT;if(n===Ss)return I.HALF_FLOAT;if(n===ps)return I.ALPHA;if(n===Wg)return I.RGB;if(n===os)return I.RGBA;if(n===Da)return I.LUMINANCE;if(n===Kg)return I.LUMINANCE_ALPHA;if(n===lr)return I.DEPTH_COMPONENT;if(n===Nr)return I.DEPTH_STENCIL;if(n===ya)return I.RED;if(n===oa)return I.RED_INTEGER;if(n===wa)return I.RG;if(n===Ka)return I.RG_INTEGER;if(n===XA)return I.RGBA_INTEGER;if(n===me||n===We||n===ut||n===gt)if(B===eA)if(a=A.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(n===me)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(n===We)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(n===ut)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(n===gt)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=A.get("WEBGL_compressed_texture_s3tc"),a!==null){if(n===me)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(n===We)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(n===ut)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(n===gt)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(n===Gt||n===ai||n===Pi||n===xi)if(a=A.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(n===Gt)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(n===ai)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(n===Pi)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(n===xi)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(n===Ut||n===Qn||n===mn)if(a=A.get("WEBGL_compressed_texture_etc"),a!==null){if(n===Ut||n===Qn)return B===eA?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(n===mn)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(n===Pn||n===pr||n===Ro||n===ao||n===Uo||n===Yr||n===$r||n===On||n===Go||n===Ys||n===og||n===Ur||n===Ng||n===Ug)if(a=A.get("WEBGL_compressed_texture_astc"),a!==null){if(n===Pn)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(n===pr)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(n===Ro)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(n===ao)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(n===Uo)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(n===Yr)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(n===$r)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(n===On)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(n===Go)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(n===Ys)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(n===og)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(n===Ur)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(n===Ng)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(n===Ug)return B===eA?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(n===Gg||n===Hr||n===Vg)if(a=A.get("EXT_texture_compression_bptc"),a!==null){if(n===Gg)return B===eA?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT;if(n===Hr)return a.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;if(n===Vg)return a.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT}else return null;if(n===Fg||n===ra||n===sa||n===ga)if(a=A.get("EXT_texture_compression_rgtc"),a!==null){if(n===Gg)return a.COMPRESSED_RED_RGTC1_EXT;if(n===ra)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(n===sa)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(n===ga)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return n===ns?I.UNSIGNED_INT_24_8:I[n]!==void 0?I[n]:null}return{convert:t}}class Ch extends ti{constructor(A=[]){super(),this.isArrayCamera=!0,this.cameras=A}}class Ha extends qA{constructor(){super(),this.isGroup=!0,this.type="Group"}}const kl={type:"move"};class fQ{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Ha,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Ha,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new Ee,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new Ee),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Ha,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new Ee,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new Ee),this._grip}dispatchEvent(A){return this._targetRay!==null&&this._targetRay.dispatchEvent(A),this._grip!==null&&this._grip.dispatchEvent(A),this._hand!==null&&this._hand.dispatchEvent(A),this}connect(A){if(A&&A.hand){const t=this._hand;if(t)for(const n of A.hand.values())this._getHandJoint(t,n)}return this.dispatchEvent({type:"connected",data:A}),this}disconnect(A){return this.dispatchEvent({type:"disconnected",data:A}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(A,t,n){let r=null,a=null,B=null;const Q=this._targetRay,y=this._grip,M=this._hand;if(A&&t.session.visibilityState!=="visible-blurred"){if(M&&A.hand){B=!0;for(const BA of A.hand.values()){const nA=t.getJointPose(BA,n),tA=this._getHandJoint(M,BA);nA!==null&&(tA.matrix.fromArray(nA.transform.matrix),tA.matrix.decompose(tA.position,tA.rotation,tA.scale),tA.matrixWorldNeedsUpdate=!0,tA.jointRadius=nA.radius),tA.visible=nA!==null}const K=M.joints["index-finger-tip"],W=M.joints["thumb-tip"],V=K.position.distanceTo(W.position),X=.02,iA=.005;M.inputState.pinching&&V>X+iA?(M.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:A.handedness,target:this})):!M.inputState.pinching&&V<=X-iA&&(M.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:A.handedness,target:this}))}else y!==null&&A.gripSpace&&(a=t.getPose(A.gripSpace,n),a!==null&&(y.matrix.fromArray(a.transform.matrix),y.matrix.decompose(y.position,y.rotation,y.scale),y.matrixWorldNeedsUpdate=!0,a.linearVelocity?(y.hasLinearVelocity=!0,y.linearVelocity.copy(a.linearVelocity)):y.hasLinearVelocity=!1,a.angularVelocity?(y.hasAngularVelocity=!0,y.angularVelocity.copy(a.angularVelocity)):y.hasAngularVelocity=!1));Q!==null&&(r=t.getPose(A.targetRaySpace,n),r===null&&a!==null&&(r=a),r!==null&&(Q.matrix.fromArray(r.transform.matrix),Q.matrix.decompose(Q.position,Q.rotation,Q.scale),Q.matrixWorldNeedsUpdate=!0,r.linearVelocity?(Q.hasLinearVelocity=!0,Q.linearVelocity.copy(r.linearVelocity)):Q.hasLinearVelocity=!1,r.angularVelocity?(Q.hasAngularVelocity=!0,Q.angularVelocity.copy(r.angularVelocity)):Q.hasAngularVelocity=!1,this.dispatchEvent(kl)))}return Q!==null&&(Q.visible=r!==null),y!==null&&(y.visible=a!==null),M!==null&&(M.visible=B!==null),this}_getHandJoint(A,t){if(A.joints[t.jointName]===void 0){const n=new Ha;n.matrixAutoUpdate=!1,n.visible=!1,A.joints[t.jointName]=n,A.add(n)}return A.joints[t.jointName]}}const Bh=`
void main() {
gl_Position = vec4( position, 1.0 );
}`,pQ=`
uniform sampler2DArray depthColor;
uniform float depthWidth;
uniform float depthHeight;
void main() {
vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight );
if ( coord.x >= 1.0 ) {
gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r;
} else {
gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r;
}
}`;class _l{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(A,t,n){if(this.texture===null){const r=new Sr,a=A.properties.get(r);a.__webglTexture=t.texture,(t.depthNear!=n.depthNear||t.depthFar!=n.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=r}}render(A,t){if(this.texture!==null){if(this.mesh===null){const n=t.cameras[0].viewport,r=new di({vertexShader:Bh,fragmentShader:pQ,uniforms:{depthColor:{value:this.texture},depthWidth:{value:n.z},depthHeight:{value:n.w}}});this.mesh=new mo(new EI(20,20),r)}A.render(this.mesh,t)}}reset(){this.texture=null,this.mesh=null}}class mQ extends Xs{constructor(A,t){super();const n=this;let r=null,a=1,B=null,Q="local-floor",y=1,M=null,K=null,W=null,V=null,X=null,iA=null;const BA=new _l,nA=t.getContextAttributes();let tA=null,RA=null;const mA=[],kA=[],_e=new Ot;let ae=null;const fe=new ti;fe.layers.enable(1),fe.viewport=new xo;const Je=new ti;Je.layers.enable(2),Je.viewport=new xo;const zA=[fe,Je],KA=new Ch;KA.layers.enable(1),KA.layers.enable(2);let tt=null,Rt=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(Pt){let Gi=mA[Pt];return Gi===void 0&&(Gi=new fQ,mA[Pt]=Gi),Gi.getTargetRaySpace()},this.getControllerGrip=function(Pt){let Gi=mA[Pt];return Gi===void 0&&(Gi=new fQ,mA[Pt]=Gi),Gi.getGripSpace()},this.getHand=function(Pt){let Gi=mA[Pt];return Gi===void 0&&(Gi=new fQ,mA[Pt]=Gi),Gi.getHandSpace()};function Ze(Pt){const Gi=kA.indexOf(Pt.inputSource);if(Gi===-1)return;const Un=mA[Gi];Un!==void 0&&(Un.update(Pt.inputSource,Pt.frame,M||B),Un.dispatchEvent({type:Pt.type,data:Pt.inputSource}))}function yt(){r.removeEventListener("select",Ze),r.removeEventListener("selectstart",Ze),r.removeEventListener("selectend",Ze),r.removeEventListener("squeeze",Ze),r.removeEventListener("squeezestart",Ze),r.removeEventListener("squeezeend",Ze),r.removeEventListener("end",yt),r.removeEventListener("inputsourceschange",jt);for(let Pt=0;Pt<mA.length;Pt++){const Gi=kA[Pt];Gi!==null&&(kA[Pt]=null,mA[Pt].disconnect(Gi))}tt=null,Rt=null,BA.reset(),A.setRenderTarget(tA),X=null,V=null,W=null,r=null,RA=null,Is.stop(),n.isPresenting=!1,A.setPixelRatio(ae),A.setSize(_e.width,_e.height,!1),n.dispatchEvent({type:"sessionend"})}this.setFramebufferScaleFactor=function(Pt){a=Pt,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(Pt){Q=Pt,n.isPresenting===!0&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return M||B},this.setReferenceSpace=function(Pt){M=Pt},this.getBaseLayer=function(){return V!==null?V:X},this.getBinding=function(){return W},this.getFrame=function(){return iA},this.getSession=function(){return r},this.setSession=async function(Pt){if(r=Pt,r!==null){if(tA=A.getRenderTarget(),r.addEventListener("select",Ze),r.addEventListener("selectstart",Ze),r.addEventListener("selectend",Ze),r.addEventListener("squeeze",Ze),r.addEventListener("squeezestart",Ze),r.addEventListener("squeezeend",Ze),r.addEventListener("end",yt),r.addEventListener("inputsourceschange",jt),nA.xrCompatible!==!0&&await t.makeXRCompatible(),ae=A.getPixelRatio(),A.getSize(_e),r.renderState.layers===void 0){const Gi={antialias:nA.antialias,alpha:!0,depth:nA.depth,stencil:nA.stencil,framebufferScaleFactor:a};X=new XRWebGLLayer(r,t,Gi),r.updateRenderState({baseLayer:X}),A.setPixelRatio(1),A.setSize(X.framebufferWidth,X.framebufferHeight,!1),RA=new zo(X.framebufferWidth,X.framebufferHeight,{format:os,type:Mi,colorSpace:A.outputColorSpace,stencilBuffer:nA.stencil})}else{let Gi=null,Un=null,Fi=null;nA.depth&&(Fi=nA.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,Gi=nA.stencil?Nr:lr,Un=nA.stencil?ns:kn);const jo={colorFormat:t.RGBA8,depthFormat:Fi,scaleFactor:a};W=new XRWebGLBinding(r,t),V=W.createProjectionLayer(jo),r.updateRenderState({layers:[V]}),A.setPixelRatio(1),A.setSize(V.textureWidth,V.textureHeight,!1),RA=new zo(V.textureWidth,V.textureHeight,{format:os,type:Mi,depthTexture:new lE(V.textureWidth,V.textureHeight,Un,void 0,void 0,void 0,void 0,void 0,void 0,Gi),stencilBuffer:nA.stencil,colorSpace:A.outputColorSpace,samples:nA.antialias?4:0,resolveDepthBuffer:V.ignoreDepthValues===!1})}RA.isXRRenderTarget=!0,this.setFoveation(y),M=null,B=await r.requestReferenceSpace(Q),Is.setContext(r),Is.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(r!==null)return r.environmentBlendMode};function jt(Pt){for(let Gi=0;Gi<Pt.removed.length;Gi++){const Un=Pt.removed[Gi],Fi=kA.indexOf(Un);Fi>=0&&(kA[Fi]=null,mA[Fi].disconnect(Un))}for(let Gi=0;Gi<Pt.added.length;Gi++){const Un=Pt.added[Gi];let Fi=kA.indexOf(Un);if(Fi===-1){for(let cr=0;cr<mA.length;cr++)if(cr>=kA.length){kA.push(Un),Fi=cr;break}else if(kA[cr]===null){kA[cr]=Un,Fi=cr;break}if(Fi===-1)break}const jo=mA[Fi];jo&&jo.connect(Un)}}const oi=new Ee,Hi=new Ee;function Nt(Pt,Gi,Un){oi.setFromMatrixPosition(Gi.matrixWorld),Hi.setFromMatrixPosition(Un.matrixWorld);const Fi=oi.distanceTo(Hi),jo=Gi.projectionMatrix.elements,cr=Un.projectionMatrix.elements,st=jo[14]/(jo[10]-1),wr=jo[14]/(jo[10]+1),qt=(jo[9]+1)/jo[5],ui=(jo[9]-1)/jo[5],ei=(jo[8]-1)/jo[0],Ji=(cr[8]+1)/cr[0],Ei=st*ei,pn=st*Ji,so=Fi/(-ei+Ji),we=so*-ei;Gi.matrixWorld.decompose(Pt.position,Pt.quaternion,Pt.scale),Pt.translateX(we),Pt.translateZ(so),Pt.matrixWorld.compose(Pt.position,Pt.quaternion,Pt.scale),Pt.matrixWorldInverse.copy(Pt.matrixWorld).invert();const VA=st+so,dt=wr+so,Ai=Ei-we,Ci=pn+(Fi-we),ri=qt*wr/dt*VA,$n=ui*wr/dt*VA;Pt.projectionMatrix.makePerspective(Ai,Ci,ri,$n,VA,dt),Pt.projectionMatrixInverse.copy(Pt.projectionMatrix).invert()}function wi(Pt,Gi){Gi===null?Pt.matrixWorld.copy(Pt.matrix):Pt.matrixWorld.multiplyMatrices(Gi.matrixWorld,Pt.matrix),Pt.matrixWorldInverse.copy(Pt.matrixWorld).invert()}this.updateCamera=function(Pt){if(r===null)return;BA.texture!==null&&(Pt.near=BA.depthNear,Pt.far=BA.depthFar),KA.near=Je.near=fe.near=Pt.near,KA.far=Je.far=fe.far=Pt.far,(tt!==KA.near||Rt!==KA.far)&&(r.updateRenderState({depthNear:KA.near,depthFar:KA.far}),tt=KA.near,Rt=KA.far,fe.near=tt,fe.far=Rt,Je.near=tt,Je.far=Rt,fe.updateProjectionMatrix(),Je.updateProjectionMatrix(),Pt.updateProjectionMatrix());const Gi=Pt.parent,Un=KA.cameras;wi(KA,Gi);for(let Fi=0;Fi<Un.length;Fi++)wi(Un[Fi],Gi);Un.length===2?Nt(KA,fe,Je):KA.projectionMatrix.copy(fe.projectionMatrix),Di(Pt,KA,Gi)};function Di(Pt,Gi,Un){Un===null?Pt.matrix.copy(Gi.matrixWorld):(Pt.matrix.copy(Un.matrixWorld),Pt.matrix.invert(),Pt.matrix.multiply(Gi.matrixWorld)),Pt.matrix.decompose(Pt.position,Pt.quaternion,Pt.scale),Pt.updateMatrixWorld(!0),Pt.projectionMatrix.copy(Gi.projectionMatrix),Pt.projectionMatrixInverse.copy(Gi.projectionMatrixInverse),Pt.isPerspectiveCamera&&(Pt.fov=zs*2*Math.atan(1/Pt.projectionMatrix.elements[5]),Pt.zoom=1)}this.getCamera=function(){return KA},this.getFoveation=function(){if(!(V===null&&X===null))return y},this.setFoveation=function(Pt){y=Pt,V!==null&&(V.fixedFoveation=Pt),X!==null&&X.fixedFoveation!==void 0&&(X.fixedFoveation=Pt)},this.hasDepthSensing=function(){return BA.texture!==null};let Gn=null;function Zo(Pt,Gi){if(K=Gi.getViewerPose(M||B),iA=Gi,K!==null){const Un=K.views;X!==null&&(A.setRenderTargetFramebuffer(RA,X.framebuffer),A.setRenderTarget(RA));let Fi=!1;Un.length!==KA.cameras.length&&(KA.cameras.length=0,Fi=!0);for(let cr=0;cr<Un.length;cr++){const st=Un[cr];let wr=null;if(X!==null)wr=X.getViewport(st);else{const ui=W.getViewSubImage(V,st);wr=ui.viewport,cr===0&&(A.setRenderTargetTextures(RA,ui.colorTexture,V.ignoreDepthValues?void 0:ui.depthStencilTexture),A.setRenderTarget(RA))}let qt=zA[cr];qt===void 0&&(qt=new ti,qt.layers.enable(cr),qt.viewport=new xo,zA[cr]=qt),qt.matrix.fromArray(st.transform.matrix),qt.matrix.decompose(qt.position,qt.quaternion,qt.scale),qt.projectionMatrix.fromArray(st.projectionMatrix),qt.projectionMatrixInverse.copy(qt.projectionMatrix).invert(),qt.viewport.set(wr.x,wr.y,wr.width,wr.height),cr===0&&(KA.matrix.copy(qt.matrix),KA.matrix.decompose(KA.position,KA.quaternion,KA.scale)),Fi===!0&&KA.cameras.push(qt)}const jo=r.enabledFeatures;if(jo&&jo.includes("depth-sensing")){const cr=W.getDepthInformation(Un[0]);cr&&cr.isValid&&cr.texture&&BA.init(A,cr,r.renderState)}}for(let Un=0;Un<mA.length;Un++){const Fi=kA[Un],jo=mA[Un];Fi!==null&&jo!==void 0&&jo.update(Fi,Gi,M||B)}BA.render(A,KA),Gn&&Gn(Pt,Gi),Gi.detectedPlanes&&n.dispatchEvent({type:"planesdetected",data:Gi}),iA=null}const Is=new kC;Is.setAnimationLoop(Zo),this.setAnimationLoop=function(Pt){Gn=Pt},this.dispose=function(){}}}const SC=new Er,Tl=new tn;function Kl(I,A){function t(nA,tA){nA.matrixAutoUpdate===!0&&nA.updateMatrix(),tA.value.copy(nA.matrix)}function n(nA,tA){tA.color.getRGB(nA.fogColor.value,ji(I)),tA.isFog?(nA.fogNear.value=tA.near,nA.fogFar.value=tA.far):tA.isFogExp2&&(nA.fogDensity.value=tA.density)}function r(nA,tA,RA,mA,kA){tA.isMeshBasicMaterial||tA.isMeshLambertMaterial?a(nA,tA):tA.isMeshToonMaterial?(a(nA,tA),W(nA,tA)):tA.isMeshPhongMaterial?(a(nA,tA),K(nA,tA)):tA.isMeshStandardMaterial?(a(nA,tA),V(nA,tA),tA.isMeshPhysicalMaterial&&X(nA,tA,kA)):tA.isMeshMatcapMaterial?(a(nA,tA),iA(nA,tA)):tA.isMeshDepthMaterial?a(nA,tA):tA.isMeshDistanceMaterial?(a(nA,tA),BA(nA,tA)):tA.isMeshNormalMaterial?a(nA,tA):tA.isLineBasicMaterial?(B(nA,tA),tA.isLineDashedMaterial&&Q(nA,tA)):tA.isPointsMaterial?y(nA,tA,RA,mA):tA.isSpriteMaterial?M(nA,tA):tA.isShadowMaterial?(nA.color.value.copy(tA.color),nA.opacity.value=tA.opacity):tA.isShaderMaterial&&(tA.uniformsNeedUpdate=!1)}function a(nA,tA){nA.opacity.value=tA.opacity,tA.color&&nA.diffuse.value.copy(tA.color),tA.emissive&&nA.emissive.value.copy(tA.emissive).multiplyScalar(tA.emissiveIntensity),tA.map&&(nA.map.value=tA.map,t(tA.map,nA.mapTransform)),tA.alphaMap&&(nA.alphaMap.value=tA.alphaMap,t(tA.alphaMap,nA.alphaMapTransform)),tA.bumpMap&&(nA.bumpMap.value=tA.bumpMap,t(tA.bumpMap,nA.bumpMapTransform),nA.bumpScale.value=tA.bumpScale,tA.side===_&&(nA.bumpScale.value*=-1)),tA.normalMap&&(nA.normalMap.value=tA.normalMap,t(tA.normalMap,nA.normalMapTransform),nA.normalScale.value.copy(tA.normalScale),tA.side===_&&nA.normalScale.value.negate()),tA.displacementMap&&(nA.displacementMap.value=tA.displacementMap,t(tA.displacementMap,nA.displacementMapTransform),nA.displacementScale.value=tA.displacementScale,nA.displacementBias.value=tA.displacementBias),tA.emissiveMap&&(nA.emissiveMap.value=tA.emissiveMap,t(tA.emissiveMap,nA.emissiveMapTransform)),tA.specularMap&&(nA.specularMap.value=tA.specularMap,t(tA.specularMap,nA.specularMapTransform)),tA.alphaTest>0&&(nA.alphaTest.value=tA.alphaTest);const RA=A.get(tA),mA=RA.envMap,kA=RA.envMapRotation;if(mA&&(nA.envMap.value=mA,SC.copy(kA),SC.x*=-1,SC.y*=-1,SC.z*=-1,mA.isCubeTexture&&mA.isRenderTargetTexture===!1&&(SC.y*=-1,SC.z*=-1),nA.envMapRotation.value.setFromMatrix4(Tl.makeRotationFromEuler(SC)),nA.flipEnvMap.value=mA.isCubeTexture&&mA.isRenderTargetTexture===!1?-1:1,nA.reflectivity.value=tA.reflectivity,nA.ior.value=tA.ior,nA.refractionRatio.value=tA.refractionRatio),tA.lightMap){nA.lightMap.value=tA.lightMap;const _e=I._useLegacyLights===!0?Math.PI:1;nA.lightMapIntensity.value=tA.lightMapIntensity*_e,t(tA.lightMap,nA.lightMapTransform)}tA.aoMap&&(nA.aoMap.value=tA.aoMap,nA.aoMapIntensity.value=tA.aoMapIntensity,t(tA.aoMap,nA.aoMapTransform))}function B(nA,tA){nA.diffuse.value.copy(tA.color),nA.opacity.value=tA.opacity,tA.map&&(nA.map.value=tA.map,t(tA.map,nA.mapTransform))}function Q(nA,tA){nA.dashSize.value=tA.dashSize,nA.totalSize.value=tA.dashSize+tA.gapSize,nA.scale.value=tA.scale}function y(nA,tA,RA,mA){nA.diffuse.value.copy(tA.color),nA.opacity.value=tA.opacity,nA.size.value=tA.size*RA,nA.scale.value=mA*.5,tA.map&&(nA.map.value=tA.map,t(tA.map,nA.uvTransform)),tA.alphaMap&&(nA.alphaMap.value=tA.alphaMap,t(tA.alphaMap,nA.alphaMapTransform)),tA.alphaTest>0&&(nA.alphaTest.value=tA.alphaTest)}function M(nA,tA){nA.diffuse.value.copy(tA.color),nA.opacity.value=tA.opacity,nA.rotation.value=tA.rotation,tA.map&&(nA.map.value=tA.map,t(tA.map,nA.mapTransform)),tA.alphaMap&&(nA.alphaMap.value=tA.alphaMap,t(tA.alphaMap,nA.alphaMapTransform)),tA.alphaTest>0&&(nA.alphaTest.value=tA.alphaTest)}function K(nA,tA){nA.specular.value.copy(tA.specular),nA.shininess.value=Math.max(tA.shininess,1e-4)}function W(nA,tA){tA.gradientMap&&(nA.gradientMap.value=tA.gradientMap)}function V(nA,tA){nA.metalness.value=tA.metalness,tA.metalnessMap&&(nA.metalnessMap.value=tA.metalnessMap,t(tA.metalnessMap,nA.metalnessMapTransform)),nA.roughness.value=tA.roughness,tA.roughnessMap&&(nA.roughnessMap.value=tA.roughnessMap,t(tA.roughnessMap,nA.roughnessMapTransform)),tA.envMap&&(nA.envMapIntensity.value=tA.envMapIntensity)}function X(nA,tA,RA){nA.ior.value=tA.ior,tA.sheen>0&&(nA.sheenColor.value.copy(tA.sheenColor).multiplyScalar(tA.sheen),nA.sheenRoughness.value=tA.sheenRoughness,tA.sheenColorMap&&(nA.sheenColorMap.value=tA.sheenColorMap,t(tA.sheenColorMap,nA.sheenColorMapTransform)),tA.sheenRoughnessMap&&(nA.sheenRoughnessMap.value=tA.sheenRoughnessMap,t(tA.sheenRoughnessMap,nA.sheenRoughnessMapTransform))),tA.clearcoat>0&&(nA.clearcoat.value=tA.clearcoat,nA.clearcoatRoughness.value=tA.clearcoatRoughness,tA.clearcoatMap&&(nA.clearcoatMap.value=tA.clearcoatMap,t(tA.clearcoatMap,nA.clearcoatMapTransform)),tA.clearcoatRoughnessMap&&(nA.clearcoatRoughnessMap.value=tA.clearcoatRoughnessMap,t(tA.clearcoatRoughnessMap,nA.clearcoatRoughnessMapTransform)),tA.clearcoatNormalMap&&(nA.clearcoatNormalMap.value=tA.clearcoatNormalMap,t(tA.clearcoatNormalMap,nA.clearcoatNormalMapTransform),nA.clearcoatNormalScale.value.copy(tA.clearcoatNormalScale),tA.side===_&&nA.clearcoatNormalScale.value.negate())),tA.dispersion>0&&(nA.dispersion.value=tA.dispersion),tA.iridescence>0&&(nA.iridescence.value=tA.iridescence,nA.iridescenceIOR.value=tA.iridescenceIOR,nA.iridescenceThicknessMinimum.value=tA.iridescenceThicknessRange[0],nA.iridescenceThicknessMaximum.value=tA.iridescenceThicknessRange[1],tA.iridescenceMap&&(nA.iridescenceMap.value=tA.iridescenceMap,t(tA.iridescenceMap,nA.iridescenceMapTransform)),tA.iridescenceThicknessMap&&(nA.iridescenceThicknessMap.value=tA.iridescenceThicknessMap,t(tA.iridescenceThicknessMap,nA.iridescenceThicknessMapTransform))),tA.transmission>0&&(nA.transmission.value=tA.transmission,nA.transmissionSamplerMap.value=RA.texture,nA.transmissionSamplerSize.value.set(RA.width,RA.height),tA.transmissionMap&&(nA.transmissionMap.value=tA.transmissionMap,t(tA.transmissionMap,nA.transmissionMapTransform)),nA.thickness.value=tA.thickness,tA.thicknessMap&&(nA.thicknessMap.value=tA.thicknessMap,t(tA.thicknessMap,nA.thicknessMapTransform)),nA.attenuationDistance.value=tA.attenuationDistance,nA.attenuationColor.value.copy(tA.attenuationColor)),tA.anisotropy>0&&(nA.anisotropyVector.value.set(tA.anisotropy*Math.cos(tA.anisotropyRotation),tA.anisotropy*Math.sin(tA.anisotropyRotation)),tA.anisotropyMap&&(nA.anisotropyMap.value=tA.anisotropyMap,t(tA.anisotropyMap,nA.anisotropyMapTransform))),nA.specularIntensity.value=tA.specularIntensity,nA.specularColor.value.copy(tA.specularColor),tA.specularColorMap&&(nA.specularColorMap.value=tA.specularColorMap,t(tA.specularColorMap,nA.specularColorMapTransform)),tA.specularIntensityMap&&(nA.specularIntensityMap.value=tA.specularIntensityMap,t(tA.specularIntensityMap,nA.specularIntensityMapTransform))}function iA(nA,tA){tA.matcap&&(nA.matcap.value=tA.matcap)}function BA(nA,tA){const RA=A.get(tA).light;nA.referencePosition.value.setFromMatrixPosition(RA.matrixWorld),nA.nearDistance.value=RA.shadow.camera.near,nA.farDistance.value=RA.shadow.camera.far}return{refreshFogUniforms:n,refreshMaterialUniforms:r}}function Jl(I,A,t,n){let r={},a={},B=[];const Q=I.getParameter(I.MAX_UNIFORM_BUFFER_BINDINGS);function y(RA,mA){const kA=mA.program;n.uniformBlockBinding(RA,kA)}function M(RA,mA){let kA=r[RA.id];kA===void 0&&(iA(RA),kA=K(RA),r[RA.id]=kA,RA.addEventListener("dispose",nA));const _e=mA.program;n.updateUBOMapping(RA,_e);const ae=A.render.frame;a[RA.id]!==ae&&(V(RA),a[RA.id]=ae)}function K(RA){const mA=W();RA.__bindingPointIndex=mA;const kA=I.createBuffer(),_e=RA.__size,ae=RA.usage;return I.bindBuffer(I.UNIFORM_BUFFER,kA),I.bufferData(I.UNIFORM_BUFFER,_e,ae),I.bindBuffer(I.UNIFORM_BUFFER,null),I.bindBufferBase(I.UNIFORM_BUFFER,mA,kA),kA}function W(){for(let RA=0;RA<Q;RA++)if(B.indexOf(RA)===-1)return B.push(RA),RA;return console.error("THREE.WebGLRenderer: Maximum number of simultaneously usable uniforms groups reached."),0}function V(RA){const mA=r[RA.id],kA=RA.uniforms,_e=RA.__cache;I.bindBuffer(I.UNIFORM_BUFFER,mA);for(let ae=0,fe=kA.length;ae<fe;ae++){const Je=Array.isArray(kA[ae])?kA[ae]:[kA[ae]];for(let zA=0,KA=Je.length;zA<KA;zA++){const tt=Je[zA];if(X(tt,ae,zA,_e)===!0){const Rt=tt.__offset,Ze=Array.isArray(tt.value)?tt.value:[tt.value];let yt=0;for(let jt=0;jt<Ze.length;jt++){const oi=Ze[jt],Hi=BA(oi);typeof oi=="number"||typeof oi=="boolean"?(tt.__data[0]=oi,I.bufferSubData(I.UNIFORM_BUFFER,Rt+yt,tt.__data)):oi.isMatrix3?(tt.__data[0]=oi.elements[0],tt.__data[1]=oi.elements[1],tt.__data[2]=oi.elements[2],tt.__data[3]=0,tt.__data[4]=oi.elements[3],tt.__data[5]=oi.elements[4],tt.__data[6]=oi.elements[5],tt.__data[7]=0,tt.__data[8]=oi.elements[6],tt.__data[9]=oi.elements[7],tt.__data[10]=oi.elements[8],tt.__data[11]=0):(oi.toArray(tt.__data,yt),yt+=Hi.storage/Float32Array.BYTES_PER_ELEMENT)}I.bufferSubData(I.UNIFORM_BUFFER,Rt,tt.__data)}}}I.bindBuffer(I.UNIFORM_BUFFER,null)}function X(RA,mA,kA,_e){const ae=RA.value,fe=mA+"_"+kA;if(_e[fe]===void 0)return typeof ae=="number"||typeof ae=="boolean"?_e[fe]=ae:_e[fe]=ae.clone(),!0;{const Je=_e[fe];if(typeof ae=="number"||typeof ae=="boolean"){if(Je!==ae)return _e[fe]=ae,!0}else if(Je.equals(ae)===!1)return Je.copy(ae),!0}return!1}function iA(RA){const mA=RA.uniforms;let kA=0;const _e=16;for(let fe=0,Je=mA.length;fe<Je;fe++){const zA=Array.isArray(mA[fe])?mA[fe]:[mA[fe]];for(let KA=0,tt=zA.length;KA<tt;KA++){const Rt=zA[KA],Ze=Array.isArray(Rt.value)?Rt.value:[Rt.value];for(let yt=0,jt=Ze.length;yt<jt;yt++){const oi=Ze[yt],Hi=BA(oi),Nt=kA%_e;Nt!==0&&_e-Nt<Hi.boundary&&(kA+=_e-Nt),Rt.__data=new Float32Array(Hi.storage/Float32Array.BYTES_PER_ELEMENT),Rt.__offset=kA,kA+=Hi.storage}}}const ae=kA%_e;return ae>0&&(kA+=_e-ae),RA.__size=kA,RA.__cache={},this}function BA(RA){const mA={boundary:0,storage:0};return typeof RA=="number"||typeof RA=="boolean"?(mA.boundary=4,mA.storage=4):RA.isVector2?(mA.boundary=8,mA.storage=8):RA.isVector3||RA.isColor?(mA.boundary=16,mA.storage=12):RA.isVector4?(mA.boundary=16,mA.storage=16):RA.isMatrix3?(mA.boundary=48,mA.storage=48):RA.isMatrix4?(mA.boundary=64,mA.storage=64):RA.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",RA),mA}function nA(RA){const mA=RA.target;mA.removeEventListener("dispose",nA);const kA=B.indexOf(mA.__bindingPointIndex);B.splice(kA,1),I.deleteBuffer(r[mA.id]),delete r[mA.id],delete a[mA.id]}function tA(){for(const RA in r)I.deleteBuffer(r[RA]);B=[],r={},a={}}return{bind:y,update:M,dispose:tA}}class Yl{constructor(A={}){const{canvas:t=ms(),context:n=null,depth:r=!0,stencil:a=!1,alpha:B=!1,antialias:Q=!1,premultipliedAlpha:y=!0,preserveDrawingBuffer:M=!1,powerPreference:K="default",failIfMajorPerformanceCaveat:W=!1}=A;this.isWebGLRenderer=!0;let V;if(n!==null){if(typeof WebGLRenderingContext<"u"&&n instanceof WebGLRenderingContext)throw new Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");V=n.getContextAttributes().alpha}else V=B;const X=new Uint32Array(4),iA=new Int32Array(4);let BA=null,nA=null;const tA=[],RA=[];this.domElement=t,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=ii,this._useLegacyLights=!1,this.toneMapping=le,this.toneMappingExposure=1;const mA=this;let kA=!1,_e=0,ae=0,fe=null,Je=-1,zA=null;const KA=new xo,tt=new xo;let Rt=null;const Ze=new ve(0);let yt=0,jt=t.width,oi=t.height,Hi=1,Nt=null,wi=null;const Di=new xo(0,0,jt,oi),Gn=new xo(0,0,jt,oi);let Zo=!1;const Is=new xa;let Pt=!1,Gi=!1;const Un=new tn,Fi=new Ee,jo={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function cr(){return fe===null?Hi:1}let st=n;function wr(ne,nt){return t.getContext(ne,nt)}try{const ne={alpha:!0,depth:r,stencil:a,antialias:Q,premultipliedAlpha:y,preserveDrawingBuffer:M,powerPreference:K,failIfMajorPerformanceCaveat:W};if("setAttribute"in t&&t.setAttribute("data-engine",`three.js r${_i}`),t.addEventListener("webglcontextlost",$e,!1),t.addEventListener("webglcontextrestored",gi,!1),t.addEventListener("webglcontextcreationerror",Xt,!1),st===null){const nt="webgl2";if(st=wr(nt,ne),st===null)throw wr(nt)?new Error("Error creating WebGL context with your selected attributes."):new Error("Error creating WebGL context.")}}catch(ne){throw console.error("THREE.WebGLRenderer: "+ne.message),ne}let qt,ui,ei,Ji,Ei,pn,so,we,VA,dt,Ai,Ci,ri,$n,Xi,Zi,Wo,Ti,jn,fr,yo,Fn,er,Mr;function Rg(){qt=new pc(st),qt.init(),Fn=new uQ(st,qt),ui=new hC(st,qt,A,Fn),ei=new Ih(st),Ji=new iQ(st),Ei=new rh,pn=new MC(st,qt,ei,Ei,ui,Fn,Ji),so=new ll(mA),we=new dl(mA),VA=new Ya(st),er=new hl(st,VA),dt=new mc(st,VA,Ji,er),Ai=new lI(st,dt,VA,Ji),jn=new ul(st,ui,pn),Zi=new rB(Ei),Ci=new oh(mA,so,we,qt,ui,er,Zi),ri=new Kl(mA,Ei),$n=new Nl,Xi=new ah(qt),Ti=new cC(mA,so,we,ei,Ai,V,y),Wo=new bl(mA,Ai,ui),Mr=new Jl(st,Ji,ui,ei),fr=new lc(st,qt,Ji),yo=new IB(st,qt,Ji),Ji.programs=Ci.programs,mA.capabilities=ui,mA.extensions=qt,mA.properties=Ei,mA.renderLists=$n,mA.shadowMap=Wo,mA.state=ei,mA.info=Ji}Rg();const tr=new mQ(mA,st);this.xr=tr,this.getContext=function(){return st},this.getContextAttributes=function(){return st.getContextAttributes()},this.forceContextLoss=function(){const ne=qt.get("WEBGL_lose_context");ne&&ne.loseContext()},this.forceContextRestore=function(){const ne=qt.get("WEBGL_lose_context");ne&&ne.restoreContext()},this.getPixelRatio=function(){return Hi},this.setPixelRatio=function(ne){ne!==void 0&&(Hi=ne,this.setSize(jt,oi,!1))},this.getSize=function(ne){return ne.set(jt,oi)},this.setSize=function(ne,nt,Mt=!0){if(tr.isPresenting){console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting.");return}jt=ne,oi=nt,t.width=Math.floor(ne*Hi),t.height=Math.floor(nt*Hi),Mt===!0&&(t.style.width=ne+"px",t.style.height=nt+"px"),this.setViewport(0,0,ne,nt)},this.getDrawingBufferSize=function(ne){return ne.set(jt*Hi,oi*Hi).floor()},this.setDrawingBufferSize=function(ne,nt,Mt){jt=ne,oi=nt,Hi=Mt,t.width=Math.floor(ne*Mt),t.height=Math.floor(nt*Mt),this.setViewport(0,0,ne,nt)},this.getCurrentViewport=function(ne){return ne.copy(KA)},this.getViewport=function(ne){return ne.copy(Di)},this.setViewport=function(ne,nt,Mt,ft){ne.isVector4?Di.set(ne.x,ne.y,ne.z,ne.w):Di.set(ne,nt,Mt,ft),ei.viewport(KA.copy(Di).multiplyScalar(Hi).round())},this.getScissor=function(ne){return ne.copy(Gn)},this.setScissor=function(ne,nt,Mt,ft){ne.isVector4?Gn.set(ne.x,ne.y,ne.z,ne.w):Gn.set(ne,nt,Mt,ft),ei.scissor(tt.copy(Gn).multiplyScalar(Hi).round())},this.getScissorTest=function(){return Zo},this.setScissorTest=function(ne){ei.setScissorTest(Zo=ne)},this.setOpaqueSort=function(ne){Nt=ne},this.setTransparentSort=function(ne){wi=ne},this.getClearColor=function(ne){return ne.copy(Ti.getClearColor())},this.setClearColor=function(){Ti.setClearColor.apply(Ti,arguments)},this.getClearAlpha=function(){return Ti.getClearAlpha()},this.setClearAlpha=function(){Ti.setClearAlpha.apply(Ti,arguments)},this.clear=function(ne=!0,nt=!0,Mt=!0){let ft=0;if(ne){let pt=!1;if(fe!==null){const en=fe.texture.format;pt=en===XA||en===Ka||en===oa}if(pt){const en=fe.texture.type,Yn=en===Mi||en===kn||en===zi||en===ns||en===is||en===cg,Vn=Ti.getClearColor(),wo=Ti.getClearAlpha(),Ko=Vn.r,Xo=Vn.g,ar=Vn.b;Yn?(X[0]=Ko,X[1]=Xo,X[2]=ar,X[3]=wo,st.clearBufferuiv(st.COLOR,0,X)):(iA[0]=Ko,iA[1]=Xo,iA[2]=ar,iA[3]=wo,st.clearBufferiv(st.COLOR,0,iA))}else ft|=st.COLOR_BUFFER_BIT}nt&&(ft|=st.DEPTH_BUFFER_BIT),Mt&&(ft|=st.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(4294967295)),st.clear(ft)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){t.removeEventListener("webglcontextlost",$e,!1),t.removeEventListener("webglcontextrestored",gi,!1),t.removeEventListener("webglcontextcreationerror",Xt,!1),$n.dispose(),Xi.dispose(),Ei.dispose(),so.dispose(),we.dispose(),Ai.dispose(),er.dispose(),Mr.dispose(),Ci.dispose(),tr.dispose(),tr.removeEventListener("sessionstart",Cs),tr.removeEventListener("sessionend",nC),Ta.stop()};function $e(ne){ne.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),kA=!0}function gi(){console.log("THREE.WebGLRenderer: Context Restored."),kA=!1;const ne=Ji.autoReset,nt=Wo.enabled,Mt=Wo.autoUpdate,ft=Wo.needsUpdate,pt=Wo.type;Rg(),Ji.autoReset=ne,Wo.enabled=nt,Wo.autoUpdate=Mt,Wo.needsUpdate=ft,Wo.type=pt}function Xt(ne){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",ne.statusMessage)}function An(ne){const nt=ne.target;nt.removeEventListener("dispose",An),ln(nt)}function ln(ne){Vr(ne),Ei.remove(ne)}function Vr(ne){const nt=Ei.get(ne).programs;nt!==void 0&&(nt.forEach(function(Mt){Ci.releaseProgram(Mt)}),ne.isShaderMaterial&&Ci.releaseShaderCache(ne))}this.renderBufferDirect=function(ne,nt,Mt,ft,pt,en){nt===null&&(nt=jo);const Yn=pt.isMesh&&pt.matrixWorld.determinant()<0,Vn=lp(ne,nt,Mt,ft,pt);ei.setMaterial(ft,Yn);let wo=Mt.index,Ko=1;if(ft.wireframe===!0){if(wo=dt.getWireframeAttribute(Mt),wo===void 0)return;Ko=2}const Xo=Mt.drawRange,ar=Mt.attributes.position;let vg=Xo.start*Ko,pa=(Xo.start+Xo.count)*Ko;en!==null&&(vg=Math.max(vg,en.start*Ko),pa=Math.min(pa,(en.start+en.count)*Ko)),wo!==null?(vg=Math.max(vg,0),pa=Math.min(pa,wo.count)):ar!=null&&(vg=Math.max(vg,0),pa=Math.min(pa,ar.count));const rI=pa-vg;if(rI<0||rI===1/0)return;er.setup(pt,ft,Vn,Mt,wo);let bC,ts=fr;if(wo!==null&&(bC=VA.get(wo),ts=yo,ts.setIndex(bC)),pt.isMesh)ft.wireframe===!0?(ei.setLineWidth(ft.wireframeLinewidth*cr()),ts.setMode(st.LINES)):ts.setMode(st.TRIANGLES);else if(pt.isLine){let Jo=ft.linewidth;Jo===void 0&&(Jo=1),ei.setLineWidth(Jo*cr()),pt.isLineSegments?ts.setMode(st.LINES):pt.isLineLoop?ts.setMode(st.LINE_LOOP):ts.setMode(st.LINE_STRIP)}else pt.isPoints?ts.setMode(st.POINTS):pt.isSprite&&ts.setMode(st.TRIANGLES);if(pt.isBatchedMesh)pt._multiDrawInstances!==null?ts.renderMultiDrawInstances(pt._multiDrawStarts,pt._multiDrawCounts,pt._multiDrawCount,pt._multiDrawInstances):ts.renderMultiDraw(pt._multiDrawStarts,pt._multiDrawCounts,pt._multiDrawCount);else if(pt.isInstancedMesh)ts.renderInstances(vg,rI,pt.count);else if(Mt.isInstancedBufferGeometry){const Jo=Mt._maxInstanceCount!==void 0?Mt._maxInstanceCount:1/0,OQ=Math.min(Mt.instanceCount,Jo);ts.renderInstances(vg,rI,OQ)}else ts.render(vg,rI)};function Js(ne,nt,Mt){ne.transparent===!0&&ne.side===T&&ne.forceSinglePass===!1?(ne.side=_,ne.needsUpdate=!0,Oh(ne,nt,Mt),ne.side=z,ne.needsUpdate=!0,Oh(ne,nt,Mt),ne.side=T):Oh(ne,nt,Mt)}this.compile=function(ne,nt,Mt=null){Mt===null&&(Mt=ne),nA=Xi.get(Mt),nA.init(nt),RA.push(nA),Mt.traverseVisible(function(pt){pt.isLight&&pt.layers.test(nt.layers)&&(nA.pushLight(pt),pt.castShadow&&nA.pushShadow(pt))}),ne!==Mt&&ne.traverseVisible(function(pt){pt.isLight&&pt.layers.test(nt.layers)&&(nA.pushLight(pt),pt.castShadow&&nA.pushShadow(pt))}),nA.setupLights(mA._useLegacyLights);const ft=new Set;return ne.traverse(function(pt){const en=pt.material;if(en)if(Array.isArray(en))for(let Yn=0;Yn<en.length;Yn++){const Vn=en[Yn];Js(Vn,Mt,pt),ft.add(Vn)}else Js(en,Mt,pt),ft.add(en)}),RA.pop(),nA=null,ft},this.compileAsync=function(ne,nt,Mt=null){const ft=this.compile(ne,nt,Mt);return new Promise(pt=>{function en(){if(ft.forEach(function(Yn){Ei.get(Yn).currentProgram.isReady()&&ft.delete(Yn)}),ft.size===0){pt(ne);return}setTimeout(en,10)}qt.get("KHR_parallel_shader_compile")!==null?en():setTimeout(en,10)})};let Qg=null;function fa(ne){Qg&&Qg(ne)}function Cs(){Ta.stop()}function nC(){Ta.start()}const Ta=new kC;Ta.setAnimationLoop(fa),typeof self<"u"&&Ta.setContext(self),this.setAnimationLoop=function(ne){Qg=ne,tr.setAnimationLoop(ne),ne===null?Ta.stop():Ta.start()},tr.addEventListener("sessionstart",Cs),tr.addEventListener("sessionend",nC),this.render=function(ne,nt){if(nt!==void 0&&nt.isCamera!==!0){console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");return}if(kA===!0)return;ne.matrixWorldAutoUpdate===!0&&ne.updateMatrixWorld(),nt.parent===null&&nt.matrixWorldAutoUpdate===!0&&nt.updateMatrixWorld(),tr.enabled===!0&&tr.isPresenting===!0&&(tr.cameraAutoUpdate===!0&&tr.updateCamera(nt),nt=tr.getCamera()),ne.isScene===!0&&ne.onBeforeRender(mA,ne,nt,fe),nA=Xi.get(ne,RA.length),nA.init(nt),RA.push(nA),Un.multiplyMatrices(nt.projectionMatrix,nt.matrixWorldInverse),Is.setFromProjectionMatrix(Un),Gi=this.localClippingEnabled,Pt=Zi.init(this.clippingPlanes,Gi),BA=$n.get(ne,tA.length),BA.init(),tA.push(BA),Fu(ne,nt,0,mA.sortObjects),BA.finish(),mA.sortObjects===!0&&BA.sort(Nt,wi);const Mt=tr.enabled===!1||tr.isPresenting===!1||tr.hasDepthSensing()===!1;Mt&&Ti.addToRenderList(BA,ne),this.info.render.frame++,Pt===!0&&Zi.beginShadows();const ft=nA.state.shadowsArray;Wo.render(ft,ne,nt),Pt===!0&&Zi.endShadows(),this.info.autoReset===!0&&this.info.reset();const pt=BA.opaque,en=BA.transmissive;if(nA.setupLights(mA._useLegacyLights),nt.isArrayCamera){const Yn=nt.cameras;if(en.length>0)for(let Vn=0,wo=Yn.length;Vn<wo;Vn++){const Ko=Yn[Vn];Nu(pt,en,ne,Ko)}Mt&&Ti.render(ne);for(let Vn=0,wo=Yn.length;Vn<wo;Vn++){const Ko=Yn[Vn];vu(BA,ne,Ko,Ko.viewport)}}else en.length>0&&Nu(pt,en,ne,nt),Mt&&Ti.render(ne),vu(BA,ne,nt);fe!==null&&(pn.updateMultisampleRenderTarget(fe),pn.updateRenderTargetMipmap(fe)),ne.isScene===!0&&ne.onAfterRender(mA,ne,nt),er.resetDefaultState(),Je=-1,zA=null,RA.pop(),RA.length>0?(nA=RA[RA.length-1],Pt===!0&&Zi.setGlobalState(mA.clippingPlanes,nA.state.camera)):nA=null,tA.pop(),tA.length>0?BA=tA[tA.length-1]:BA=null};function Fu(ne,nt,Mt,ft){if(ne.visible===!1)return;if(ne.layers.test(nt.layers)){if(ne.isGroup)Mt=ne.renderOrder;else if(ne.isLOD)ne.autoUpdate===!0&&ne.update(nt);else if(ne.isLight)nA.pushLight(ne),ne.castShadow&&nA.pushShadow(ne);else if(ne.isSprite){if(!ne.frustumCulled||Is.intersectsSprite(ne)){ft&&Fi.setFromMatrixPosition(ne.matrixWorld).applyMatrix4(Un);const Yn=Ai.update(ne),Vn=ne.material;Vn.visible&&BA.push(ne,Yn,Vn,Mt,Fi.z,null)}}else if((ne.isMesh||ne.isLine||ne.isPoints)&&(!ne.frustumCulled||Is.intersectsObject(ne))){const Yn=Ai.update(ne),Vn=ne.material;if(ft&&(ne.boundingSphere!==void 0?(ne.boundingSphere===null&&ne.computeBoundingSphere(),Fi.copy(ne.boundingSphere.center)):(Yn.boundingSphere===null&&Yn.computeBoundingSphere(),Fi.copy(Yn.boundingSphere.center)),Fi.applyMatrix4(ne.matrixWorld).applyMatrix4(Un)),Array.isArray(Vn)){const wo=Yn.groups;for(let Ko=0,Xo=wo.length;Ko<Xo;Ko++){const ar=wo[Ko],vg=Vn[ar.materialIndex];vg&&vg.visible&&BA.push(ne,Yn,vg,Mt,Fi.z,ar)}}else Vn.visible&&BA.push(ne,Yn,Vn,Mt,Fi.z,null)}}const en=ne.children;for(let Yn=0,Vn=en.length;Yn<Vn;Yn++)Fu(en[Yn],nt,Mt,ft)}function vu(ne,nt,Mt,ft){const pt=ne.opaque,en=ne.transmissive,Yn=ne.transparent;nA.setupLightsView(Mt),Pt===!0&&Zi.setGlobalState(mA.clippingPlanes,Mt),ft&&ei.viewport(KA.copy(ft)),pt.length>0&&Ph(pt,nt,Mt),en.length>0&&Ph(en,nt,Mt),Yn.length>0&&Ph(Yn,nt,Mt),ei.buffers.depth.setTest(!0),ei.buffers.depth.setMask(!0),ei.buffers.color.setMask(!0),ei.setPolygonOffset(!1)}function Nu(ne,nt,Mt,ft){if((Mt.isScene===!0?Mt.overrideMaterial:null)!==null)return;nA.state.transmissionRenderTarget[ft.id]===void 0&&(nA.state.transmissionRenderTarget[ft.id]=new zo(1,1,{generateMipmaps:!0,type:qt.has("EXT_color_buffer_half_float")||qt.has("EXT_color_buffer_float")?Ss:Mi,minFilter:De,samples:4,stencilBuffer:a,resolveDepthBuffer:!1,resolveStencilBuffer:!1}));const en=nA.state.transmissionRenderTarget[ft.id],Yn=ft.viewport||KA;en.setSize(Yn.z,Yn.w);const Vn=mA.getRenderTarget();mA.setRenderTarget(en),mA.getClearColor(Ze),yt=mA.getClearAlpha(),yt<1&&mA.setClearColor(16777215,.5),mA.clear();const wo=mA.toneMapping;mA.toneMapping=le;const Ko=ft.viewport;if(ft.viewport!==void 0&&(ft.viewport=void 0),nA.setupLightsView(ft),Pt===!0&&Zi.setGlobalState(mA.clippingPlanes,ft),Ph(ne,Mt,ft),pn.updateMultisampleRenderTarget(en),pn.updateRenderTargetMipmap(en),qt.has("WEBGL_multisampled_render_to_texture")===!1){let Xo=!1;for(let ar=0,vg=nt.length;ar<vg;ar++){const pa=nt[ar],rI=pa.object,bC=pa.geometry,ts=pa.material,Jo=pa.group;if(ts.side===T&&rI.layers.test(ft.layers)){const OQ=ts.side;ts.side=_,ts.needsUpdate=!0,Uu(rI,Mt,ft,bC,ts,Jo),ts.side=OQ,ts.needsUpdate=!0,Xo=!0}}Xo===!0&&(pn.updateMultisampleRenderTarget(en),pn.updateRenderTargetMipmap(en))}mA.setRenderTarget(Vn),mA.setClearColor(Ze,yt),Ko!==void 0&&(ft.viewport=Ko),mA.toneMapping=wo}function Ph(ne,nt,Mt){const ft=nt.isScene===!0?nt.overrideMaterial:null;for(let pt=0,en=ne.length;pt<en;pt++){const Yn=ne[pt],Vn=Yn.object,wo=Yn.geometry,Ko=ft===null?Yn.material:ft,Xo=Yn.group;Vn.layers.test(Mt.layers)&&Uu(Vn,nt,Mt,wo,Ko,Xo)}}function Uu(ne,nt,Mt,ft,pt,en){ne.onBeforeRender(mA,nt,Mt,ft,pt,en),ne.modelViewMatrix.multiplyMatrices(Mt.matrixWorldInverse,ne.matrixWorld),ne.normalMatrix.getNormalMatrix(ne.modelViewMatrix),pt.onBeforeRender(mA,nt,Mt,ft,ne,en),pt.transparent===!0&&pt.side===T&&pt.forceSinglePass===!1?(pt.side=_,pt.needsUpdate=!0,mA.renderBufferDirect(Mt,nt,ft,pt,ne,en),pt.side=z,pt.needsUpdate=!0,mA.renderBufferDirect(Mt,nt,ft,pt,ne,en),pt.side=T):mA.renderBufferDirect(Mt,nt,ft,pt,ne,en),ne.onAfterRender(mA,nt,Mt,ft,pt,en)}function Oh(ne,nt,Mt){nt.isScene!==!0&&(nt=jo);const ft=Ei.get(ne),pt=nA.state.lights,en=nA.state.shadowsArray,Yn=pt.state.version,Vn=Ci.getParameters(ne,pt.state,en,nt,Mt),wo=Ci.getProgramCacheKey(Vn);let Ko=ft.programs;ft.environment=ne.isMeshStandardMaterial?nt.environment:null,ft.fog=nt.fog,ft.envMap=(ne.isMeshStandardMaterial?we:so).get(ne.envMap||ft.environment),ft.envMapRotation=ft.environment!==null&&ne.envMap===null?nt.environmentRotation:ne.envMapRotation,Ko===void 0&&(ne.addEventListener("dispose",An),Ko=new Map,ft.programs=Ko);let Xo=Ko.get(wo);if(Xo!==void 0){if(ft.currentProgram===Xo&&ft.lightsStateVersion===Yn)return xu(ne,Vn),Xo}else Vn.uniforms=Ci.getUniforms(ne),ne.onBuild(Mt,Vn,mA),ne.onBeforeCompile(Vn,mA),Xo=Ci.acquireProgram(Vn,wo),Ko.set(wo,Xo),ft.uniforms=Vn.uniforms;const ar=ft.uniforms;return(!ne.isShaderMaterial&&!ne.isRawShaderMaterial||ne.clipping===!0)&&(ar.clippingPlanes=Zi.uniform),xu(ne,Vn),ft.needsLights=up(ne),ft.lightsStateVersion=Yn,ft.needsLights&&(ar.ambientLightColor.value=pt.state.ambient,ar.lightProbe.value=pt.state.probe,ar.directionalLights.value=pt.state.directional,ar.directionalLightShadows.value=pt.state.directionalShadow,ar.spotLights.value=pt.state.spot,ar.spotLightShadows.value=pt.state.spotShadow,ar.rectAreaLights.value=pt.state.rectArea,ar.ltc_1.value=pt.state.rectAreaLTC1,ar.ltc_2.value=pt.state.rectAreaLTC2,ar.pointLights.value=pt.state.point,ar.pointLightShadows.value=pt.state.pointShadow,ar.hemisphereLights.value=pt.state.hemi,ar.directionalShadowMap.value=pt.state.directionalShadowMap,ar.directionalShadowMatrix.value=pt.state.directionalShadowMatrix,ar.spotShadowMap.value=pt.state.spotShadowMap,ar.spotLightMatrix.value=pt.state.spotLightMatrix,ar.spotLightMap.value=pt.state.spotLightMap,ar.pointShadowMap.value=pt.state.pointShadowMap,ar.pointShadowMatrix.value=pt.state.pointShadowMatrix),ft.currentProgram=Xo,ft.uniformsList=null,Xo}function Lu(ne){if(ne.uniformsList===null){const nt=ne.currentProgram.getUniforms();ne.uniformsList=uE.seqWithValue(nt.seq,ne.uniforms)}return ne.uniformsList}function xu(ne,nt){const Mt=Ei.get(ne);Mt.outputColorSpace=nt.outputColorSpace,Mt.batching=nt.batching,Mt.instancing=nt.instancing,Mt.instancingColor=nt.instancingColor,Mt.instancingMorph=nt.instancingMorph,Mt.skinning=nt.skinning,Mt.morphTargets=nt.morphTargets,Mt.morphNormals=nt.morphNormals,Mt.morphColors=nt.morphColors,Mt.morphTargetsCount=nt.morphTargetsCount,Mt.numClippingPlanes=nt.numClippingPlanes,Mt.numIntersection=nt.numClipIntersection,Mt.vertexAlphas=nt.vertexAlphas,Mt.vertexTangents=nt.vertexTangents,Mt.toneMapping=nt.toneMapping}function lp(ne,nt,Mt,ft,pt){nt.isScene!==!0&&(nt=jo),pn.resetTextureUnits();const en=nt.fog,Yn=ft.isMeshStandardMaterial?nt.environment:null,Vn=fe===null?mA.outputColorSpace:fe.isXRRenderTarget===!0?fe.texture.colorSpace:jr,wo=(ft.isMeshStandardMaterial?we:so).get(ft.envMap||Yn),Ko=ft.vertexColors===!0&&!!Mt.attributes.color&&Mt.attributes.color.itemSize===4,Xo=!!Mt.attributes.tangent&&(!!ft.normalMap||ft.anisotropy>0),ar=!!Mt.morphAttributes.position,vg=!!Mt.morphAttributes.normal,pa=!!Mt.morphAttributes.color;let rI=le;ft.toneMapped&&(fe===null||fe.isXRRenderTarget===!0)&&(rI=mA.toneMapping);const bC=Mt.morphAttributes.position||Mt.morphAttributes.normal||Mt.morphAttributes.color,ts=bC!==void 0?bC.length:0,Jo=Ei.get(ft),OQ=nA.state.lights;if(Pt===!0&&(Gi===!0||ne!==zA)){const fI=ne===zA&&ft.id===Je;Zi.setState(ft,ne,fI)}let Zs=!1;ft.version===Jo.__version?(Jo.needsLights&&Jo.lightsStateVersion!==OQ.state.version||Jo.outputColorSpace!==Vn||pt.isBatchedMesh&&Jo.batching===!1||!pt.isBatchedMesh&&Jo.batching===!0||pt.isInstancedMesh&&Jo.instancing===!1||!pt.isInstancedMesh&&Jo.instancing===!0||pt.isSkinnedMesh&&Jo.skinning===!1||!pt.isSkinnedMesh&&Jo.skinning===!0||pt.isInstancedMesh&&Jo.instancingColor===!0&&pt.instanceColor===null||pt.isInstancedMesh&&Jo.instancingColor===!1&&pt.instanceColor!==null||pt.isInstancedMesh&&Jo.instancingMorph===!0&&pt.morphTexture===null||pt.isInstancedMesh&&Jo.instancingMorph===!1&&pt.morphTexture!==null||Jo.envMap!==wo||ft.fog===!0&&Jo.fog!==en||Jo.numClippingPlanes!==void 0&&(Jo.numClippingPlanes!==Zi.numPlanes||Jo.numIntersection!==Zi.numIntersection)||Jo.vertexAlphas!==Ko||Jo.vertexTangents!==Xo||Jo.morphTargets!==ar||Jo.morphNormals!==vg||Jo.morphColors!==pa||Jo.toneMapping!==rI||Jo.morphTargetsCount!==ts)&&(Zs=!0):(Zs=!0,Jo.__version=ft.version);let zB=Jo.currentProgram;Zs===!0&&(zB=Oh(ft,nt,pt));let bu=!1,qQ=!1,Ed=!1;const ma=zB.getUniforms(),zC=Jo.uniforms;if(ei.useProgram(zB.program)&&(bu=!0,qQ=!0,Ed=!0),ft.id!==Je&&(Je=ft.id,qQ=!0),bu||zA!==ne){ma.setValue(st,"projectionMatrix",ne.projectionMatrix),ma.setValue(st,"viewMatrix",ne.matrixWorldInverse);const fI=ma.map.cameraPosition;fI!==void 0&&fI.setValue(st,Fi.setFromMatrixPosition(ne.matrixWorld)),ui.logarithmicDepthBuffer&&ma.setValue(st,"logDepthBufFC",2/(Math.log(ne.far+1)/Math.LN2)),(ft.isMeshPhongMaterial||ft.isMeshToonMaterial||ft.isMeshLambertMaterial||ft.isMeshBasicMaterial||ft.isMeshStandardMaterial||ft.isShaderMaterial)&&ma.setValue(st,"isOrthographic",ne.isOrthographicCamera===!0),zA!==ne&&(zA=ne,qQ=!0,Ed=!0)}if(pt.isSkinnedMesh){ma.setOptional(st,pt,"bindMatrix"),ma.setOptional(st,pt,"bindMatrixInverse");const fI=pt.skeleton;fI&&(fI.boneTexture===null&&fI.computeBoneTexture(),ma.setValue(st,"boneTexture",fI.boneTexture,pn))}pt.isBatchedMesh&&(ma.setOptional(st,pt,"batchingTexture"),ma.setValue(st,"batchingTexture",pt._matricesTexture,pn));const Qd=Mt.morphAttributes;if((Qd.position!==void 0||Qd.normal!==void 0||Qd.color!==void 0)&&jn.update(pt,Mt,zB),(qQ||Jo.receiveShadow!==pt.receiveShadow)&&(Jo.receiveShadow=pt.receiveShadow,ma.setValue(st,"receiveShadow",pt.receiveShadow)),ft.isMeshGouraudMaterial&&ft.envMap!==null&&(zC.envMap.value=wo,zC.flipEnvMap.value=wo.isCubeTexture&&wo.isRenderTargetTexture===!1?-1:1),ft.isMeshStandardMaterial&&ft.envMap===null&&nt.environment!==null&&(zC.envMapIntensity.value=nt.environmentIntensity),qQ&&(ma.setValue(st,"toneMappingExposure",mA.toneMappingExposure),Jo.needsLights&&dp(zC,Ed),en&&ft.fog===!0&&ri.refreshFogUniforms(zC,en),ri.refreshMaterialUniforms(zC,ft,Hi,oi,nA.state.transmissionRenderTarget[ne.id]),uE.upload(st,Lu(Jo),zC,pn)),ft.isShaderMaterial&&ft.uniformsNeedUpdate===!0&&(uE.upload(st,Lu(Jo),zC,pn),ft.uniformsNeedUpdate=!1),ft.isSpriteMaterial&&ma.setValue(st,"center",pt.center),ma.setValue(st,"modelViewMatrix",pt.modelViewMatrix),ma.setValue(st,"normalMatrix",pt.normalMatrix),ma.setValue(st,"modelMatrix",pt.matrixWorld),ft.isShaderMaterial||ft.isRawShaderMaterial){const fI=ft.uniformsGroups;for(let cd=0,fp=fI.length;cd<fp;cd++){const ku=fI[cd];Mr.update(ku,zB),Mr.bind(ku,zB)}}return zB}function dp(ne,nt){ne.ambientLightColor.needsUpdate=nt,ne.lightProbe.needsUpdate=nt,ne.directionalLights.needsUpdate=nt,ne.directionalLightShadows.needsUpdate=nt,ne.pointLights.needsUpdate=nt,ne.pointLightShadows.needsUpdate=nt,ne.spotLights.needsUpdate=nt,ne.spotLightShadows.needsUpdate=nt,ne.rectAreaLights.needsUpdate=nt,ne.hemisphereLights.needsUpdate=nt}function up(ne){return ne.isMeshLambertMaterial||ne.isMeshToonMaterial||ne.isMeshPhongMaterial||ne.isMeshStandardMaterial||ne.isShadowMaterial||ne.isShaderMaterial&&ne.lights===!0}this.getActiveCubeFace=function(){return _e},this.getActiveMipmapLevel=function(){return ae},this.getRenderTarget=function(){return fe},this.setRenderTargetTextures=function(ne,nt,Mt){Ei.get(ne.texture).__webglTexture=nt,Ei.get(ne.depthTexture).__webglTexture=Mt;const ft=Ei.get(ne);ft.__hasExternalTextures=!0,ft.__autoAllocateDepthBuffer=Mt===void 0,ft.__autoAllocateDepthBuffer||qt.has("WEBGL_multisampled_render_to_texture")===!0&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),ft.__useRenderToTexture=!1)},this.setRenderTargetFramebuffer=function(ne,nt){const Mt=Ei.get(ne);Mt.__webglFramebuffer=nt,Mt.__useDefaultFramebuffer=nt===void 0},this.setRenderTarget=function(ne,nt=0,Mt=0){fe=ne,_e=nt,ae=Mt;let ft=!0,pt=null,en=!1,Yn=!1;if(ne){const wo=Ei.get(ne);wo.__useDefaultFramebuffer!==void 0?(ei.bindFramebuffer(st.FRAMEBUFFER,null),ft=!1):wo.__webglFramebuffer===void 0?pn.setupRenderTarget(ne):wo.__hasExternalTextures&&pn.rebindTextures(ne,Ei.get(ne.texture).__webglTexture,Ei.get(ne.depthTexture).__webglTexture);const Ko=ne.texture;(Ko.isData3DTexture||Ko.isDataArrayTexture||Ko.isCompressedArrayTexture)&&(Yn=!0);const Xo=Ei.get(ne).__webglFramebuffer;ne.isWebGLCubeRenderTarget?(Array.isArray(Xo[nt])?pt=Xo[nt][Mt]:pt=Xo[nt],en=!0):ne.samples>0&&pn.useMultisampledRTT(ne)===!1?pt=Ei.get(ne).__webglMultisampledFramebuffer:Array.isArray(Xo)?pt=Xo[Mt]:pt=Xo,KA.copy(ne.viewport),tt.copy(ne.scissor),Rt=ne.scissorTest}else KA.copy(Di).multiplyScalar(Hi).floor(),tt.copy(Gn).multiplyScalar(Hi).floor(),Rt=Zo;if(ei.bindFramebuffer(st.FRAMEBUFFER,pt)&&ft&&ei.drawBuffers(ne,pt),ei.viewport(KA),ei.scissor(tt),ei.setScissorTest(Rt),en){const wo=Ei.get(ne.texture);st.framebufferTexture2D(st.FRAMEBUFFER,st.COLOR_ATTACHMENT0,st.TEXTURE_CUBE_MAP_POSITIVE_X+nt,wo.__webglTexture,Mt)}else if(Yn){const wo=Ei.get(ne.texture),Ko=nt||0;st.framebufferTextureLayer(st.FRAMEBUFFER,st.COLOR_ATTACHMENT0,wo.__webglTexture,Mt||0,Ko)}Je=-1},this.readRenderTargetPixels=function(ne,nt,Mt,ft,pt,en,Yn){if(!(ne&&ne.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let Vn=Ei.get(ne).__webglFramebuffer;if(ne.isWebGLCubeRenderTarget&&Yn!==void 0&&(Vn=Vn[Yn]),Vn){ei.bindFramebuffer(st.FRAMEBUFFER,Vn);try{const wo=ne.texture,Ko=wo.format,Xo=wo.type;if(!ui.textureFormatReadable(Ko)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}if(!ui.textureTypeReadable(Xo)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}nt>=0&&nt<=ne.width-ft&&Mt>=0&&Mt<=ne.height-pt&&st.readPixels(nt,Mt,ft,pt,Fn.convert(Ko),Fn.convert(Xo),en)}finally{const wo=fe!==null?Ei.get(fe).__webglFramebuffer:null;ei.bindFramebuffer(st.FRAMEBUFFER,wo)}}},this.copyFramebufferToTexture=function(ne,nt,Mt=0){const ft=Math.pow(2,-Mt),pt=Math.floor(nt.image.width*ft),en=Math.floor(nt.image.height*ft);pn.setTexture2D(nt,0),st.copyTexSubImage2D(st.TEXTURE_2D,Mt,0,0,ne.x,ne.y,pt,en),ei.unbindTexture()},this.copyTextureToTexture=function(ne,nt,Mt,ft=0){const pt=nt.image.width,en=nt.image.height,Yn=Fn.convert(Mt.format),Vn=Fn.convert(Mt.type);pn.setTexture2D(Mt,0),st.pixelStorei(st.UNPACK_FLIP_Y_WEBGL,Mt.flipY),st.pixelStorei(st.UNPACK_PREMULTIPLY_ALPHA_WEBGL,Mt.premultiplyAlpha),st.pixelStorei(st.UNPACK_ALIGNMENT,Mt.unpackAlignment),nt.isDataTexture?st.texSubImage2D(st.TEXTURE_2D,ft,ne.x,ne.y,pt,en,Yn,Vn,nt.image.data):nt.isCompressedTexture?st.compressedTexSubImage2D(st.TEXTURE_2D,ft,ne.x,ne.y,nt.mipmaps[0].width,nt.mipmaps[0].height,Yn,nt.mipmaps[0].data):st.texSubImage2D(st.TEXTURE_2D,ft,ne.x,ne.y,Yn,Vn,nt.image),ft===0&&Mt.generateMipmaps&&st.generateMipmap(st.TEXTURE_2D),ei.unbindTexture()},this.copyTextureToTexture3D=function(ne,nt,Mt,ft,pt=0){const en=ne.max.x-ne.min.x,Yn=ne.max.y-ne.min.y,Vn=ne.max.z-ne.min.z,wo=Fn.convert(ft.format),Ko=Fn.convert(ft.type);let Xo;if(ft.isData3DTexture)pn.setTexture3D(ft,0),Xo=st.TEXTURE_3D;else if(ft.isDataArrayTexture||ft.isCompressedArrayTexture)pn.setTexture2DArray(ft,0),Xo=st.TEXTURE_2D_ARRAY;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}st.pixelStorei(st.UNPACK_FLIP_Y_WEBGL,ft.flipY),st.pixelStorei(st.UNPACK_PREMULTIPLY_ALPHA_WEBGL,ft.premultiplyAlpha),st.pixelStorei(st.UNPACK_ALIGNMENT,ft.unpackAlignment);const ar=st.getParameter(st.UNPACK_ROW_LENGTH),vg=st.getParameter(st.UNPACK_IMAGE_HEIGHT),pa=st.getParameter(st.UNPACK_SKIP_PIXELS),rI=st.getParameter(st.UNPACK_SKIP_ROWS),bC=st.getParameter(st.UNPACK_SKIP_IMAGES),ts=Mt.isCompressedTexture?Mt.mipmaps[pt]:Mt.image;st.pixelStorei(st.UNPACK_ROW_LENGTH,ts.width),st.pixelStorei(st.UNPACK_IMAGE_HEIGHT,ts.height),st.pixelStorei(st.UNPACK_SKIP_PIXELS,ne.min.x),st.pixelStorei(st.UNPACK_SKIP_ROWS,ne.min.y),st.pixelStorei(st.UNPACK_SKIP_IMAGES,ne.min.z),Mt.isDataTexture||Mt.isData3DTexture?st.texSubImage3D(Xo,pt,nt.x,nt.y,nt.z,en,Yn,Vn,wo,Ko,ts.data):ft.isCompressedArrayTexture?st.compressedTexSubImage3D(Xo,pt,nt.x,nt.y,nt.z,en,Yn,Vn,wo,ts.data):st.texSubImage3D(Xo,pt,nt.x,nt.y,nt.z,en,Yn,Vn,wo,Ko,ts),st.pixelStorei(st.UNPACK_ROW_LENGTH,ar),st.pixelStorei(st.UNPACK_IMAGE_HEIGHT,vg),st.pixelStorei(st.UNPACK_SKIP_PIXELS,pa),st.pixelStorei(st.UNPACK_SKIP_ROWS,rI),st.pixelStorei(st.UNPACK_SKIP_IMAGES,bC),pt===0&&ft.generateMipmaps&&st.generateMipmap(Xo),ei.unbindTexture()},this.initTexture=function(ne){ne.isCubeTexture?pn.setTextureCube(ne,0):ne.isData3DTexture?pn.setTexture3D(ne,0):ne.isDataArrayTexture||ne.isCompressedArrayTexture?pn.setTexture2DArray(ne,0):pn.setTexture2D(ne,0),ei.unbindTexture()},this.resetState=function(){_e=0,ae=0,fe=null,ei.reset(),er.reset()},typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return ls}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(A){this._outputColorSpace=A;const t=this.getContext();t.drawingBufferColorSpace=A===Jg?"display-p3":"srgb",t.unpackColorSpace=oo.workingColorSpace===xg?"display-p3":"srgb"}get useLegacyLights(){return console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights}set useLegacyLights(A){console.warn("THREE.WebGLRenderer: The property .useLegacyLights has been deprecated. Migrate your lighting according to the following guide: https://discourse.threejs.org/t/updates-to-lighting-in-three-js-r155/53733."),this._useLegacyLights=A}}class DE{constructor(A,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new ve(A),this.density=t}clone(){return new DE(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class yE{constructor(A,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new ve(A),this.near=t,this.far=n}clone(){return new yE(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class Eh extends qA{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new Er,this.environmentIntensity=1,this.environmentRotation=new Er,this.overrideMaterial=null,typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(A,t){return super.copy(A,t),A.background!==null&&(this.background=A.background.clone()),A.environment!==null&&(this.environment=A.environment.clone()),A.fog!==null&&(this.fog=A.fog.clone()),this.backgroundBlurriness=A.backgroundBlurriness,this.backgroundIntensity=A.backgroundIntensity,this.backgroundRotation.copy(A.backgroundRotation),this.environmentIntensity=A.environmentIntensity,this.environmentRotation.copy(A.environmentRotation),A.overrideMaterial!==null&&(this.overrideMaterial=A.overrideMaterial.clone()),this.matrixAutoUpdate=A.matrixAutoUpdate,this}toJSON(A){const t=super.toJSON(A);return this.fog!==null&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),this.backgroundIntensity!==1&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),this.environmentIntensity!==1&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class gr{constructor(A,t){this.isInterleavedBuffer=!0,this.array=A,this.stride=t,this.count=A!==void 0?A.length/t:0,this.usage=vi,this._updateRange={offset:0,count:-1},this.updateRanges=[],this.version=0,this.uuid=Yo()}onUploadCallback(){}set needsUpdate(A){A===!0&&this.version++}get updateRange(){return MI("THREE.InterleavedBuffer: updateRange() is deprecated and will be removed in r169. Use addUpdateRange() instead."),this._updateRange}setUsage(A){return this.usage=A,this}addUpdateRange(A,t){this.updateRanges.push({start:A,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(A){return this.array=new A.array.constructor(A.array),this.count=A.count,this.stride=A.stride,this.usage=A.usage,this}copyAt(A,t,n){A*=this.stride,n*=t.stride;for(let r=0,a=this.stride;r<a;r++)this.array[A+r]=t.array[n+r];return this}set(A,t=0){return this.array.set(A,t),this}clone(A){A.arrayBuffers===void 0&&(A.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=Yo()),A.arrayBuffers[this.array.buffer._uuid]===void 0&&(A.arrayBuffers[this.array.buffer._uuid]=this.array.slice(0).buffer);const t=new this.array.constructor(A.arrayBuffers[this.array.buffer._uuid]),n=new this.constructor(t,this.stride);return n.setUsage(this.usage),n}onUpload(A){return this.onUploadCallback=A,this}toJSON(A){return A.arrayBuffers===void 0&&(A.arrayBuffers={}),this.array.buffer._uuid===void 0&&(this.array.buffer._uuid=Yo()),A.arrayBuffers[this.array.buffer._uuid]===void 0&&(A.arrayBuffers[this.array.buffer._uuid]=Array.from(new Uint32Array(this.array.buffer))),{uuid:this.uuid,buffer:this.array.buffer._uuid,type:this.array.constructor.name,stride:this.stride}}}const na=new Ee;class $I{constructor(A,t,n,r=!1){this.isInterleavedBufferAttribute=!0,this.name="",this.data=A,this.itemSize=t,this.offset=n,this.normalized=r}get count(){return this.data.count}get array(){return this.data.array}set needsUpdate(A){this.data.needsUpdate=A}applyMatrix4(A){for(let t=0,n=this.data.count;t<n;t++)na.fromBufferAttribute(this,t),na.applyMatrix4(A),this.setXYZ(t,na.x,na.y,na.z);return this}applyNormalMatrix(A){for(let t=0,n=this.count;t<n;t++)na.fromBufferAttribute(this,t),na.applyNormalMatrix(A),this.setXYZ(t,na.x,na.y,na.z);return this}transformDirection(A){for(let t=0,n=this.count;t<n;t++)na.fromBufferAttribute(this,t),na.transformDirection(A),this.setXYZ(t,na.x,na.y,na.z);return this}getComponent(A,t){let n=this.array[A*this.data.stride+this.offset+t];return this.normalized&&(n=Dn(n,this.array)),n}setComponent(A,t,n){return this.normalized&&(n=fA(n,this.array)),this.data.array[A*this.data.stride+this.offset+t]=n,this}setX(A,t){return this.normalized&&(t=fA(t,this.array)),this.data.array[A*this.data.stride+this.offset]=t,this}setY(A,t){return this.normalized&&(t=fA(t,this.array)),this.data.array[A*this.data.stride+this.offset+1]=t,this}setZ(A,t){return this.normalized&&(t=fA(t,this.array)),this.data.array[A*this.data.stride+this.offset+2]=t,this}setW(A,t){return this.normalized&&(t=fA(t,this.array)),this.data.array[A*this.data.stride+this.offset+3]=t,this}getX(A){let t=this.data.array[A*this.data.stride+this.offset];return this.normalized&&(t=Dn(t,this.array)),t}getY(A){let t=this.data.array[A*this.data.stride+this.offset+1];return this.normalized&&(t=Dn(t,this.array)),t}getZ(A){let t=this.data.array[A*this.data.stride+this.offset+2];return this.normalized&&(t=Dn(t,this.array)),t}getW(A){let t=this.data.array[A*this.data.stride+this.offset+3];return this.normalized&&(t=Dn(t,this.array)),t}setXY(A,t,n){return A=A*this.data.stride+this.offset,this.normalized&&(t=fA(t,this.array),n=fA(n,this.array)),this.data.array[A+0]=t,this.data.array[A+1]=n,this}setXYZ(A,t,n,r){return A=A*this.data.stride+this.offset,this.normalized&&(t=fA(t,this.array),n=fA(n,this.array),r=fA(r,this.array)),this.data.array[A+0]=t,this.data.array[A+1]=n,this.data.array[A+2]=r,this}setXYZW(A,t,n,r,a){return A=A*this.data.stride+this.offset,this.normalized&&(t=fA(t,this.array),n=fA(n,this.array),r=fA(r,this.array),a=fA(a,this.array)),this.data.array[A+0]=t,this.data.array[A+1]=n,this.data.array[A+2]=r,this.data.array[A+3]=a,this}clone(A){if(A===void 0){console.log("THREE.InterleavedBufferAttribute.clone(): Cloning an interleaved buffer attribute will de-interleave buffer data.");const t=[];for(let n=0;n<this.count;n++){const r=n*this.data.stride+this.offset;for(let a=0;a<this.itemSize;a++)t.push(this.data.array[r+a])}return new oe(new this.array.constructor(t),this.itemSize,this.normalized)}else return A.interleavedBuffers===void 0&&(A.interleavedBuffers={}),A.interleavedBuffers[this.data.uuid]===void 0&&(A.interleavedBuffers[this.data.uuid]=this.data.clone(A)),new $I(A.interleavedBuffers[this.data.uuid],this.itemSize,this.offset,this.normalized)}toJSON(A){if(A===void 0){console.log("THREE.InterleavedBufferAttribute.toJSON(): Serializing an interleaved buffer attribute will de-interleave buffer data.");const t=[];for(let n=0;n<this.count;n++){const r=n*this.data.stride+this.offset;for(let a=0;a<this.itemSize;a++)t.push(this.data.array[r+a])}return{itemSize:this.itemSize,type:this.array.constructor.name,array:t,normalized:this.normalized}}else return A.interleavedBuffers===void 0&&(A.interleavedBuffers={}),A.interleavedBuffers[this.data.uuid]===void 0&&(A.interleavedBuffers[this.data.uuid]=this.data.toJSON(A)),{isInterleavedBufferAttribute:!0,itemSize:this.itemSize,data:this.data.uuid,offset:this.offset,normalized:this.normalized}}}class DQ extends FA{constructor(A){super(),this.isSpriteMaterial=!0,this.type="SpriteMaterial",this.color=new ve(16777215),this.map=null,this.alphaMap=null,this.rotation=0,this.sizeAttenuation=!0,this.transparent=!0,this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.alphaMap=A.alphaMap,this.rotation=A.rotation,this.sizeAttenuation=A.sizeAttenuation,this.fog=A.fog,this}}let HC;const MB=new Ee,PC=new Ee,AC=new Ee,OC=new Ot,SB=new Ot,Qh=new tn,wE=new Ee,qC=new Ee,ME=new Ee,yQ=new Ot,RB=new Ot,ch=new Ot;class hh extends qA{constructor(A=new DQ){if(super(),this.isSprite=!0,this.type="Sprite",HC===void 0){HC=new li;const t=new Float32Array([-.5,-.5,0,0,0,.5,-.5,0,1,0,.5,.5,0,1,1,-.5,.5,0,0,1]),n=new gr(t,5);HC.setIndex([0,1,2,0,2,3]),HC.setAttribute("position",new $I(n,3,0,!1)),HC.setAttribute("uv",new $I(n,2,3,!1))}this.geometry=HC,this.material=A,this.center=new Ot(.5,.5)}raycast(A,t){A.camera===null&&console.error('THREE.Sprite: "Raycaster.camera" needs to be set in order to raycast against sprites.'),PC.setFromMatrixScale(this.matrixWorld),Qh.copy(A.camera.matrixWorld),this.modelViewMatrix.multiplyMatrices(A.camera.matrixWorldInverse,this.matrixWorld),AC.setFromMatrixPosition(this.modelViewMatrix),A.camera.isPerspectiveCamera&&this.material.sizeAttenuation===!1&&PC.multiplyScalar(-AC.z);const n=this.material.rotation;let r,a;n!==0&&(a=Math.cos(n),r=Math.sin(n));const B=this.center;WC(wE.set(-.5,-.5,0),AC,B,PC,r,a),WC(qC.set(.5,-.5,0),AC,B,PC,r,a),WC(ME.set(.5,.5,0),AC,B,PC,r,a),yQ.set(0,0),RB.set(1,0),ch.set(1,1);let Q=A.ray.intersectTriangle(wE,qC,ME,!1,MB);if(Q===null&&(WC(qC.set(-.5,.5,0),AC,B,PC,r,a),RB.set(0,1),Q=A.ray.intersectTriangle(wE,ME,qC,!1,MB),Q===null))return;const y=A.ray.origin.distanceTo(MB);y<A.near||y>A.far||t.push({distance:y,point:MB.clone(),uv:Le.getInterpolation(MB,wE,qC,ME,yQ,RB,ch,new Ot),face:null,object:this})}copy(A,t){return super.copy(A,t),A.center!==void 0&&this.center.copy(A.center),this.material=A.material,this}}function WC(I,A,t,n,r,a){OC.subVectors(I,t).addScalar(.5).multiply(n),r!==void 0?(SB.x=a*OC.x-r*OC.y,SB.y=r*OC.x+a*OC.y):SB.copy(OC),I.copy(A),I.x+=SB.x,I.y+=SB.y,I.applyMatrix4(Qh)}const GB=new Ee,lh=new Ee;class wQ extends qA{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(A){super.copy(A,!1);const t=A.levels;for(let n=0,r=t.length;n<r;n++){const a=t[n];this.addLevel(a.object.clone(),a.distance,a.hysteresis)}return this.autoUpdate=A.autoUpdate,this}addLevel(A,t=0,n=0){t=Math.abs(t);const r=this.levels;let a;for(a=0;a<r.length&&!(t<r[a].distance);a++);return r.splice(a,0,{distance:t,hysteresis:n,object:A}),this.add(A),this}getCurrentLevel(){return this._currentLevel}getObjectForDistance(A){const t=this.levels;if(t.length>0){let n,r;for(n=1,r=t.length;n<r;n++){let a=t[n].distance;if(t[n].object.visible&&(a-=a*t[n].hysteresis),A<a)break}return t[n-1].object}return null}raycast(A,t){if(this.levels.length>0){GB.setFromMatrixPosition(this.matrixWorld);const r=A.ray.origin.distanceTo(GB);this.getObjectForDistance(r).raycast(A,t)}}update(A){const t=this.levels;if(t.length>1){GB.setFromMatrixPosition(A.matrixWorld),lh.setFromMatrixPosition(this.matrixWorld);const n=GB.distanceTo(lh)/A.zoom;t[0].object.visible=!0;let r,a;for(r=1,a=t.length;r<a;r++){let B=t[r].distance;if(t[r].object.visible&&(B-=B*t[r].hysteresis),n>=B)t[r-1].object.visible=!1,t[r].object.visible=!0;else break}for(this._currentLevel=r-1;r<a;r++)t[r].object.visible=!1}}toJSON(A){const t=super.toJSON(A);this.autoUpdate===!1&&(t.object.autoUpdate=!1),t.object.levels=[];const n=this.levels;for(let r=0,a=n.length;r<a;r++){const B=n[r];t.object.levels.push({object:B.object.uuid,distance:B.distance,hysteresis:B.hysteresis})}return t}}const FB=new Ee,dh=new xo,MQ=new xo,Hl=new Ee,TI=new tn,RC=new Ee,vB=new qr,uh=new tn,SE=new Tr;class fh extends mo{constructor(A,t){super(A,t),this.isSkinnedMesh=!0,this.type="SkinnedMesh",this.bindMode=En,this.bindMatrix=new tn,this.bindMatrixInverse=new tn,this.boundingBox=null,this.boundingSphere=null}computeBoundingBox(){const A=this.geometry;this.boundingBox===null&&(this.boundingBox=new To),this.boundingBox.makeEmpty();const t=A.getAttribute("position");for(let n=0;n<t.count;n++)this.getVertexPosition(n,RC),this.boundingBox.expandByPoint(RC)}computeBoundingSphere(){const A=this.geometry;this.boundingSphere===null&&(this.boundingSphere=new qr),this.boundingSphere.makeEmpty();const t=A.getAttribute("position");for(let n=0;n<t.count;n++)this.getVertexPosition(n,RC),this.boundingSphere.expandByPoint(RC)}copy(A,t){return super.copy(A,t),this.bindMode=A.bindMode,this.bindMatrix.copy(A.bindMatrix),this.bindMatrixInverse.copy(A.bindMatrixInverse),this.skeleton=A.skeleton,A.boundingBox!==null&&(this.boundingBox=A.boundingBox.clone()),A.boundingSphere!==null&&(this.boundingSphere=A.boundingSphere.clone()),this}raycast(A,t){const n=this.material,r=this.matrixWorld;n!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),vB.copy(this.boundingSphere),vB.applyMatrix4(r),A.ray.intersectsSphere(vB)!==!1&&(uh.copy(r).invert(),SE.copy(A.ray).applyMatrix4(uh),!(this.boundingBox!==null&&SE.intersectsBox(this.boundingBox)===!1)&&this._computeIntersections(A,t,SE)))}getVertexPosition(A,t){return super.getVertexPosition(A,t),this.applyBoneTransform(A,t),t}bind(A,t){this.skeleton=A,t===void 0&&(this.updateMatrixWorld(!0),this.skeleton.calculateInverses(),t=this.matrixWorld),this.bindMatrix.copy(t),this.bindMatrixInverse.copy(t).invert()}pose(){this.skeleton.pose()}normalizeSkinWeights(){const A=new xo,t=this.geometry.attributes.skinWeight;for(let n=0,r=t.count;n<r;n++){A.fromBufferAttribute(t,n);const a=1/A.manhattanLength();a!==1/0?A.multiplyScalar(a):A.set(1,0,0,0),t.setXYZW(n,A.x,A.y,A.z,A.w)}}updateMatrixWorld(A){super.updateMatrixWorld(A),this.bindMode===En?this.bindMatrixInverse.copy(this.matrixWorld).invert():this.bindMode===bn?this.bindMatrixInverse.copy(this.bindMatrix).invert():console.warn("THREE.SkinnedMesh: Unrecognized bindMode: "+this.bindMode)}applyBoneTransform(A,t){const n=this.skeleton,r=this.geometry;dh.fromBufferAttribute(r.attributes.skinIndex,A),MQ.fromBufferAttribute(r.attributes.skinWeight,A),FB.copy(t).applyMatrix4(this.bindMatrix),t.set(0,0,0);for(let a=0;a<4;a++){const B=MQ.getComponent(a);if(B!==0){const Q=dh.getComponent(a);TI.multiplyMatrices(n.bones[Q].matrixWorld,n.boneInverses[Q]),t.addScaledVector(Hl.copy(FB).applyMatrix4(TI),B)}}return t.applyMatrix4(this.bindMatrixInverse)}}class SQ extends qA{constructor(){super(),this.isBone=!0,this.type="Bone"}}class KI extends Sr{constructor(A=null,t=1,n=1,r,a,B,Q,y,M=jA,K=jA,W,V){super(null,B,Q,y,M,K,r,a,W,V),this.isDataTexture=!0,this.image={data:A,width:t,height:n},this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}}const RQ=new tn,Pl=new tn;class RE{constructor(A=[],t=[]){this.uuid=Yo(),this.bones=A.slice(0),this.boneInverses=t,this.boneMatrices=null,this.boneTexture=null,this.init()}init(){const A=this.bones,t=this.boneInverses;if(this.boneMatrices=new Float32Array(A.length*16),t.length===0)this.calculateInverses();else if(A.length!==t.length){console.warn("THREE.Skeleton: Number of inverse bone matrices does not match amount of bones."),this.boneInverses=[];for(let n=0,r=this.bones.length;n<r;n++)this.boneInverses.push(new tn)}}calculateInverses(){this.boneInverses.length=0;for(let A=0,t=this.bones.length;A<t;A++){const n=new tn;this.bones[A]&&n.copy(this.bones[A].matrixWorld).invert(),this.boneInverses.push(n)}}pose(){for(let A=0,t=this.bones.length;A<t;A++){const n=this.bones[A];n&&n.matrixWorld.copy(this.boneInverses[A]).invert()}for(let A=0,t=this.bones.length;A<t;A++){const n=this.bones[A];n&&(n.parent&&n.parent.isBone?(n.matrix.copy(n.parent.matrixWorld).invert(),n.matrix.multiply(n.matrixWorld)):n.matrix.copy(n.matrixWorld),n.matrix.decompose(n.position,n.quaternion,n.scale))}}update(){const A=this.bones,t=this.boneInverses,n=this.boneMatrices,r=this.boneTexture;for(let a=0,B=A.length;a<B;a++){const Q=A[a]?A[a].matrixWorld:Pl;RQ.multiplyMatrices(Q,t[a]),RQ.toArray(n,a*16)}r!==null&&(r.needsUpdate=!0)}clone(){return new RE(this.bones,this.boneInverses)}computeBoneTexture(){let A=Math.sqrt(this.bones.length*4);A=Math.ceil(A/4)*4,A=Math.max(A,4);const t=new Float32Array(A*A*4);t.set(this.boneMatrices);const n=new KI(t,A,A,os,hr);return n.needsUpdate=!0,this.boneMatrices=t,this.boneTexture=n,this}getBoneByName(A){for(let t=0,n=this.bones.length;t<n;t++){const r=this.bones[t];if(r.name===A)return r}}dispose(){this.boneTexture!==null&&(this.boneTexture.dispose(),this.boneTexture=null)}fromJSON(A,t){this.uuid=A.uuid;for(let n=0,r=A.bones.length;n<r;n++){const a=A.bones[n];let B=t[a];B===void 0&&(console.warn("THREE.Skeleton: No bone found with UUID:",a),B=new SQ),this.bones.push(B),this.boneInverses.push(new tn().fromArray(A.boneInverses[n]))}return this.init(),this}toJSON(){const A={metadata:{version:4.6,type:"Skeleton",generator:"Skeleton.toJSON"},bones:[],boneInverses:[]};A.uuid=this.uuid;const t=this.bones,n=this.boneInverses;for(let r=0,a=t.length;r<a;r++){const B=t[r];A.bones.push(B.uuid);const Q=n[r];A.boneInverses.push(Q.toArray())}return A}}class VC extends oe{constructor(A,t,n,r=1){super(A,t,n),this.isInstancedBufferAttribute=!0,this.meshPerAttribute=r}copy(A){return super.copy(A),this.meshPerAttribute=A.meshPerAttribute,this}toJSON(){const A=super.toJSON();return A.meshPerAttribute=this.meshPerAttribute,A.isInstancedBufferAttribute=!0,A}}const GC=new tn,NB=new tn,UB=[],ph=new To,GE=new tn,Qs=new mo,LB=new qr;class Ws extends mo{constructor(A,t,n){super(A,t),this.isInstancedMesh=!0,this.instanceMatrix=new VC(new Float32Array(n*16),16),this.instanceColor=null,this.morphTexture=null,this.count=n,this.boundingBox=null,this.boundingSphere=null;for(let r=0;r<n;r++)this.setMatrixAt(r,GE)}computeBoundingBox(){const A=this.geometry,t=this.count;this.boundingBox===null&&(this.boundingBox=new To),A.boundingBox===null&&A.computeBoundingBox(),this.boundingBox.makeEmpty();for(let n=0;n<t;n++)this.getMatrixAt(n,GC),ph.copy(A.boundingBox).applyMatrix4(GC),this.boundingBox.union(ph)}computeBoundingSphere(){const A=this.geometry,t=this.count;this.boundingSphere===null&&(this.boundingSphere=new qr),A.boundingSphere===null&&A.computeBoundingSphere(),this.boundingSphere.makeEmpty();for(let n=0;n<t;n++)this.getMatrixAt(n,GC),LB.copy(A.boundingSphere).applyMatrix4(GC),this.boundingSphere.union(LB)}copy(A,t){return super.copy(A,t),this.instanceMatrix.copy(A.instanceMatrix),A.morphTexture!==null&&(this.morphTexture=A.morphTexture.clone()),A.instanceColor!==null&&(this.instanceColor=A.instanceColor.clone()),this.count=A.count,A.boundingBox!==null&&(this.boundingBox=A.boundingBox.clone()),A.boundingSphere!==null&&(this.boundingSphere=A.boundingSphere.clone()),this}getColorAt(A,t){t.fromArray(this.instanceColor.array,A*3)}getMatrixAt(A,t){t.fromArray(this.instanceMatrix.array,A*16)}getMorphAt(A,t){const n=t.morphTargetInfluences,r=this.morphTexture.source.data.data,a=n.length+1,B=A*a+1;for(let Q=0;Q<n.length;Q++)n[Q]=r[B+Q]}raycast(A,t){const n=this.matrixWorld,r=this.count;if(Qs.geometry=this.geometry,Qs.material=this.material,Qs.material!==void 0&&(this.boundingSphere===null&&this.computeBoundingSphere(),LB.copy(this.boundingSphere),LB.applyMatrix4(n),A.ray.intersectsSphere(LB)!==!1))for(let a=0;a<r;a++){this.getMatrixAt(a,GC),NB.multiplyMatrices(n,GC),Qs.matrixWorld=NB,Qs.raycast(A,UB);for(let B=0,Q=UB.length;B<Q;B++){const y=UB[B];y.instanceId=a,y.object=this,t.push(y)}UB.length=0}}setColorAt(A,t){this.instanceColor===null&&(this.instanceColor=new VC(new Float32Array(this.instanceMatrix.count*3),3)),t.toArray(this.instanceColor.array,A*3)}setMatrixAt(A,t){t.toArray(this.instanceMatrix.array,A*16)}setMorphAt(A,t){const n=t.morphTargetInfluences,r=n.length+1;this.morphTexture===null&&(this.morphTexture=new KI(new Float32Array(r*this.count),r,this.count,ya,hr));const a=this.morphTexture.source.data.data;let B=0;for(let M=0;M<n.length;M++)B+=n[M];const Q=this.geometry.morphTargetsRelative?1:1-B,y=r*A;a[y]=Q,a.set(n,y+1)}updateMorphTargets(){}dispose(){return this.dispatchEvent({type:"dispose"}),this.morphTexture!==null&&(this.morphTexture.dispose(),this.morphTexture=null),this}}function FE(I,A){return I.z-A.z}function Ol(I,A){return A.z-I.z}class ql{constructor(){this.index=0,this.pool=[],this.list=[]}push(A,t){const n=this.pool,r=this.list;this.index>=n.length&&n.push({start:-1,count:-1,z:-1});const a=n[this.index];r.push(a),this.index++,a.start=A.start,a.count=A.count,a.z=t}reset(){this.list.length=0,this.index=0}}const ZC="batchId",JI=new tn,xB=new tn,GQ=new tn,mh=new tn,FQ=new xa,vE=new To,FC=new qr,bB=new Ee,vQ=new ql,qg=new mo,kB=[];function Wl(I,A,t=0){const n=A.itemSize;if(I.isInterleavedBufferAttribute||I.array.constructor!==A.array.constructor){const r=I.count;for(let a=0;a<r;a++)for(let B=0;B<n;B++)A.setComponent(a+t,B,I.getComponent(a,B))}else A.array.set(I.array,t*n);A.needsUpdate=!0}class Dh extends mo{get maxGeometryCount(){return this._maxGeometryCount}constructor(A,t,n=t*2,r){super(new li,r),this.isBatchedMesh=!0,this.perObjectFrustumCulled=!0,this.sortObjects=!0,this.boundingBox=null,this.boundingSphere=null,this.customSort=null,this._drawRanges=[],this._reservedRanges=[],this._visibility=[],this._active=[],this._bounds=[],this._maxGeometryCount=A,this._maxVertexCount=t,this._maxIndexCount=n,this._geometryInitialized=!1,this._geometryCount=0,this._multiDrawCounts=new Int32Array(A),this._multiDrawStarts=new Int32Array(A),this._multiDrawCount=0,this._multiDrawInstances=null,this._visibilityChanged=!0,this._matricesTexture=null,this._initMatricesTexture()}_initMatricesTexture(){let A=Math.sqrt(this._maxGeometryCount*4);A=Math.ceil(A/4)*4,A=Math.max(A,4);const t=new Float32Array(A*A*4),n=new KI(t,A,A,os,hr);this._matricesTexture=n}_initializeGeometry(A){const t=this.geometry,n=this._maxVertexCount,r=this._maxGeometryCount,a=this._maxIndexCount;if(this._geometryInitialized===!1){for(const Q in A.attributes){const y=A.getAttribute(Q),{array:M,itemSize:K,normalized:W}=y,V=new M.constructor(n*K),X=new oe(V,K,W);t.setAttribute(Q,X)}if(A.getIndex()!==null){const Q=n>65536?new Uint32Array(a):new Uint16Array(a);t.setIndex(new oe(Q,1))}const B=r>65536?new Uint32Array(n):new Uint16Array(n);t.setAttribute(ZC,new oe(B,1)),this._geometryInitialized=!0}}_validateGeometry(A){if(A.getAttribute(ZC))throw new Error(`BatchedMesh: Geometry cannot use attribute "${ZC}"`);const t=this.geometry;if(!!A.getIndex()!=!!t.getIndex())throw new Error('BatchedMesh: All geometries must consistently have "index".');for(const n in t.attributes){if(n===ZC)continue;if(!A.hasAttribute(n))throw new Error(`BatchedMesh: Added geometry missing "${n}". All geometries must have consistent attributes.`);const r=A.getAttribute(n),a=t.getAttribute(n);if(r.itemSize!==a.itemSize||r.normalized!==a.normalized)throw new Error("BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}setCustomSort(A){return this.customSort=A,this}computeBoundingBox(){this.boundingBox===null&&(this.boundingBox=new To);const A=this._geometryCount,t=this.boundingBox,n=this._active;t.makeEmpty();for(let r=0;r<A;r++)n[r]!==!1&&(this.getMatrixAt(r,JI),this.getBoundingBoxAt(r,vE).applyMatrix4(JI),t.union(vE))}computeBoundingSphere(){this.boundingSphere===null&&(this.boundingSphere=new qr);const A=this._geometryCount,t=this.boundingSphere,n=this._active;t.makeEmpty();for(let r=0;r<A;r++)n[r]!==!1&&(this.getMatrixAt(r,JI),this.getBoundingSphereAt(r,FC).applyMatrix4(JI),t.union(FC))}addGeometry(A,t=-1,n=-1){if(this._initializeGeometry(A),this._validateGeometry(A),this._geometryCount>=this._maxGeometryCount)throw new Error("BatchedMesh: Maximum geometry count reached.");const r={vertexStart:-1,vertexCount:-1,indexStart:-1,indexCount:-1};let a=null;const B=this._reservedRanges,Q=this._drawRanges,y=this._bounds;this._geometryCount!==0&&(a=B[B.length-1]),t===-1?r.vertexCount=A.getAttribute("position").count:r.vertexCount=t,a===null?r.vertexStart=0:r.vertexStart=a.vertexStart+a.vertexCount;const M=A.getIndex(),K=M!==null;if(K&&(n===-1?r.indexCount=M.count:r.indexCount=n,a===null?r.indexStart=0:r.indexStart=a.indexStart+a.indexCount),r.indexStart!==-1&&r.indexStart+r.indexCount>this._maxIndexCount||r.vertexStart+r.vertexCount>this._maxVertexCount)throw new Error("BatchedMesh: Reserved space request exceeds the maximum buffer size.");const W=this._visibility,V=this._active,X=this._matricesTexture,iA=this._matricesTexture.image.data;W.push(!0),V.push(!0);const BA=this._geometryCount;this._geometryCount++,GQ.toArray(iA,BA*16),X.needsUpdate=!0,B.push(r),Q.push({start:K?r.indexStart:r.vertexStart,count:-1}),y.push({boxInitialized:!1,box:new To,sphereInitialized:!1,sphere:new qr});const nA=this.geometry.getAttribute(ZC);for(let tA=0;tA<r.vertexCount;tA++)nA.setX(r.vertexStart+tA,BA);return nA.needsUpdate=!0,this.setGeometryAt(BA,A),BA}setGeometryAt(A,t){if(A>=this._geometryCount)throw new Error("BatchedMesh: Maximum geometry count reached.");this._validateGeometry(t);const n=this.geometry,r=n.getIndex()!==null,a=n.getIndex(),B=t.getIndex(),Q=this._reservedRanges[A];if(r&&B.count>Q.indexCount||t.attributes.position.count>Q.vertexCount)throw new Error("BatchedMesh: Reserved space not large enough for provided geometry.");const y=Q.vertexStart,M=Q.vertexCount;for(const X in n.attributes){if(X===ZC)continue;const iA=t.getAttribute(X),BA=n.getAttribute(X);Wl(iA,BA,y);const nA=iA.itemSize;for(let tA=iA.count,RA=M;tA<RA;tA++){const mA=y+tA;for(let kA=0;kA<nA;kA++)BA.setComponent(mA,kA,0)}BA.needsUpdate=!0,BA.addUpdateRange(y*nA,M*nA)}if(r){const X=Q.indexStart;for(let iA=0;iA<B.count;iA++)a.setX(X+iA,y+B.getX(iA));for(let iA=B.count,BA=Q.indexCount;iA<BA;iA++)a.setX(X+iA,y);a.needsUpdate=!0,a.addUpdateRange(X,Q.indexCount)}const K=this._bounds[A];t.boundingBox!==null?(K.box.copy(t.boundingBox),K.boxInitialized=!0):K.boxInitialized=!1,t.boundingSphere!==null?(K.sphere.copy(t.boundingSphere),K.sphereInitialized=!0):K.sphereInitialized=!1;const W=this._drawRanges[A],V=t.getAttribute("position");return W.count=r?B.count:V.count,this._visibilityChanged=!0,A}deleteGeometry(A){const t=this._active;return A>=t.length||t[A]===!1?this:(t[A]=!1,this._visibilityChanged=!0,this)}getInstanceCountAt(A){return this._multiDrawInstances===null?null:this._multiDrawInstances[A]}setInstanceCountAt(A,t){return this._multiDrawInstances===null&&(this._multiDrawInstances=new Int32Array(this._maxGeometryCount).fill(1)),this._multiDrawInstances[A]=t,A}getBoundingBoxAt(A,t){if(this._active[A]===!1)return null;const r=this._bounds[A],a=r.box,B=this.geometry;if(r.boxInitialized===!1){a.makeEmpty();const Q=B.index,y=B.attributes.position,M=this._drawRanges[A];for(let K=M.start,W=M.start+M.count;K<W;K++){let V=K;Q&&(V=Q.getX(V)),a.expandByPoint(bB.fromBufferAttribute(y,V))}r.boxInitialized=!0}return t.copy(a),t}getBoundingSphereAt(A,t){if(this._active[A]===!1)return null;const r=this._bounds[A],a=r.sphere,B=this.geometry;if(r.sphereInitialized===!1){a.makeEmpty(),this.getBoundingBoxAt(A,vE),vE.getCenter(a.center);const Q=B.index,y=B.attributes.position,M=this._drawRanges[A];let K=0;for(let W=M.start,V=M.start+M.count;W<V;W++){let X=W;Q&&(X=Q.getX(X)),bB.fromBufferAttribute(y,X),K=Math.max(K,a.center.distanceToSquared(bB))}a.radius=Math.sqrt(K),r.sphereInitialized=!0}return t.copy(a),t}setMatrixAt(A,t){const n=this._active,r=this._matricesTexture,a=this._matricesTexture.image.data,B=this._geometryCount;return A>=B||n[A]===!1?this:(t.toArray(a,A*16),r.needsUpdate=!0,this)}getMatrixAt(A,t){const n=this._active,r=this._matricesTexture.image.data,a=this._geometryCount;return A>=a||n[A]===!1?null:t.fromArray(r,A*16)}setVisibleAt(A,t){const n=this._visibility,r=this._active,a=this._geometryCount;return A>=a||r[A]===!1||n[A]===t?this:(n[A]=t,this._visibilityChanged=!0,this)}getVisibleAt(A){const t=this._visibility,n=this._active,r=this._geometryCount;return A>=r||n[A]===!1?!1:t[A]}raycast(A,t){const n=this._visibility,r=this._active,a=this._drawRanges,B=this._geometryCount,Q=this.matrixWorld,y=this.geometry;qg.material=this.material,qg.geometry.index=y.index,qg.geometry.attributes=y.attributes,qg.geometry.boundingBox===null&&(qg.geometry.boundingBox=new To),qg.geometry.boundingSphere===null&&(qg.geometry.boundingSphere=new qr);for(let M=0;M<B;M++){if(!n[M]||!r[M])continue;const K=a[M];qg.geometry.setDrawRange(K.start,K.count),this.getMatrixAt(M,qg.matrixWorld).premultiply(Q),this.getBoundingBoxAt(M,qg.geometry.boundingBox),this.getBoundingSphereAt(M,qg.geometry.boundingSphere),qg.raycast(A,kB);for(let W=0,V=kB.length;W<V;W++){const X=kB[W];X.object=this,X.batchId=M,t.push(X)}kB.length=0}qg.material=null,qg.geometry.index=null,qg.geometry.attributes={},qg.geometry.setDrawRange(0,1/0)}copy(A){return super.copy(A),this.geometry=A.geometry.clone(),this.perObjectFrustumCulled=A.perObjectFrustumCulled,this.sortObjects=A.sortObjects,this.boundingBox=A.boundingBox!==null?A.boundingBox.clone():null,this.boundingSphere=A.boundingSphere!==null?A.boundingSphere.clone():null,this._drawRanges=A._drawRanges.map(t=>({...t})),this._reservedRanges=A._reservedRanges.map(t=>({...t})),this._visibility=A._visibility.slice(),this._active=A._active.slice(),this._bounds=A._bounds.map(t=>({boxInitialized:t.boxInitialized,box:t.box.clone(),sphereInitialized:t.sphereInitialized,sphere:t.sphere.clone()})),this._maxGeometryCount=A._maxGeometryCount,this._maxVertexCount=A._maxVertexCount,this._maxIndexCount=A._maxIndexCount,this._geometryInitialized=A._geometryInitialized,this._geometryCount=A._geometryCount,this._multiDrawCounts=A._multiDrawCounts.slice(),this._multiDrawStarts=A._multiDrawStarts.slice(),this._matricesTexture=A._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.slice(),this}dispose(){return this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this}onBeforeRender(A,t,n,r,a){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;const B=r.getIndex(),Q=B===null?1:B.array.BYTES_PER_ELEMENT,y=this._active,M=this._visibility,K=this._multiDrawStarts,W=this._multiDrawCounts,V=this._drawRanges,X=this.perObjectFrustumCulled;X&&(mh.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse).multiply(this.matrixWorld),FQ.setFromProjectionMatrix(mh,A.coordinateSystem));let iA=0;if(this.sortObjects){xB.copy(this.matrixWorld).invert(),bB.setFromMatrixPosition(n.matrixWorld).applyMatrix4(xB);for(let tA=0,RA=M.length;tA<RA;tA++)if(M[tA]&&y[tA]){this.getMatrixAt(tA,JI),this.getBoundingSphereAt(tA,FC).applyMatrix4(JI);let mA=!1;if(X&&(mA=!FQ.intersectsSphere(FC)),!mA){const kA=bB.distanceTo(FC.center);vQ.push(V[tA],kA)}}const BA=vQ.list,nA=this.customSort;nA===null?BA.sort(a.transparent?Ol:FE):nA.call(this,BA,n);for(let tA=0,RA=BA.length;tA<RA;tA++){const mA=BA[tA];K[iA]=mA.start*Q,W[iA]=mA.count,iA++}vQ.reset()}else for(let BA=0,nA=M.length;BA<nA;BA++)if(M[BA]&&y[BA]){let tA=!1;if(X&&(this.getMatrixAt(BA,JI),this.getBoundingSphereAt(BA,FC).applyMatrix4(JI),tA=!FQ.intersectsSphere(FC)),!tA){const RA=V[BA];K[iA]=RA.start*Q,W[iA]=RA.count,iA++}}this._multiDrawCount=iA,this._visibilityChanged=!1}onBeforeShadow(A,t,n,r,a,B){this.onBeforeRender(A,null,r,a,B)}}class P extends FA{constructor(A){super(),this.isLineBasicMaterial=!0,this.type="LineBasicMaterial",this.color=new ve(16777215),this.map=null,this.linewidth=1,this.linecap="round",this.linejoin="round",this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.linewidth=A.linewidth,this.linecap=A.linecap,this.linejoin=A.linejoin,this.fog=A.fog,this}}const e=new Ee,i=new Ee,o=new tn,g=new Tr,C=new qr,c=new Ee,f=new Ee;class S extends qA{constructor(A=new li,t=new P){super(),this.isLine=!0,this.type="Line",this.geometry=A,this.material=t,this.updateMorphTargets()}copy(A,t){return super.copy(A,t),this.material=Array.isArray(A.material)?A.material.slice():A.material,this.geometry=A.geometry,this}computeLineDistances(){const A=this.geometry;if(A.index===null){const t=A.attributes.position,n=[0];for(let r=1,a=t.count;r<a;r++)e.fromBufferAttribute(t,r-1),i.fromBufferAttribute(t,r),n[r]=n[r-1],n[r]+=e.distanceTo(i);A.setAttribute("lineDistance",new vt(n,1))}else console.warn("THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}raycast(A,t){const n=this.geometry,r=this.matrixWorld,a=A.params.Line.threshold,B=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),C.copy(n.boundingSphere),C.applyMatrix4(r),C.radius+=a,A.ray.intersectsSphere(C)===!1)return;o.copy(r).invert(),g.copy(A.ray).applyMatrix4(o);const Q=a/((this.scale.x+this.scale.y+this.scale.z)/3),y=Q*Q,M=this.isLineSegments?2:1,K=n.index,V=n.attributes.position;if(K!==null){const X=Math.max(0,B.start),iA=Math.min(K.count,B.start+B.count);for(let BA=X,nA=iA-1;BA<nA;BA+=M){const tA=K.getX(BA),RA=K.getX(BA+1),mA=b(this,A,g,y,tA,RA);mA&&t.push(mA)}if(this.isLineLoop){const BA=K.getX(iA-1),nA=K.getX(X),tA=b(this,A,g,y,BA,nA);tA&&t.push(tA)}}else{const X=Math.max(0,B.start),iA=Math.min(V.count,B.start+B.count);for(let BA=X,nA=iA-1;BA<nA;BA+=M){const tA=b(this,A,g,y,BA,BA+1);tA&&t.push(tA)}if(this.isLineLoop){const BA=b(this,A,g,y,iA-1,X);BA&&t.push(BA)}}}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,B=r.length;a<B;a++){const Q=r[a].name||String(a);this.morphTargetInfluences.push(0),this.morphTargetDictionary[Q]=a}}}}}function b(I,A,t,n,r,a){const B=I.geometry.attributes.position;if(e.fromBufferAttribute(B,r),i.fromBufferAttribute(B,a),t.distanceSqToSegment(e,i,c,f)>n)return;c.applyMatrix4(I.matrixWorld);const y=A.ray.origin.distanceTo(c);if(!(y<A.near||y>A.far))return{distance:y,point:f.clone().applyMatrix4(I.matrixWorld),index:r,face:null,faceIndex:null,object:I}}const $=new Ee,oA=new Ee;class rA extends S{constructor(A,t){super(A,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){const A=this.geometry;if(A.index===null){const t=A.attributes.position,n=[];for(let r=0,a=t.count;r<a;r+=2)$.fromBufferAttribute(t,r),oA.fromBufferAttribute(t,r+1),n[r]=r===0?0:n[r-1],n[r+1]=n[r]+$.distanceTo(oA);A.setAttribute("lineDistance",new vt(n,1))}else console.warn("THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.");return this}}class IA extends S{constructor(A,t){super(A,t),this.isLineLoop=!0,this.type="LineLoop"}}class cA extends FA{constructor(A){super(),this.isPointsMaterial=!0,this.type="PointsMaterial",this.color=new ve(16777215),this.map=null,this.alphaMap=null,this.size=1,this.sizeAttenuation=!0,this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.alphaMap=A.alphaMap,this.size=A.size,this.sizeAttenuation=A.sizeAttenuation,this.fog=A.fog,this}}const JA=new tn,te=new Tr,Ce=new qr,Me=new Ee;class Re extends qA{constructor(A=new li,t=new cA){super(),this.isPoints=!0,this.type="Points",this.geometry=A,this.material=t,this.updateMorphTargets()}copy(A,t){return super.copy(A,t),this.material=Array.isArray(A.material)?A.material.slice():A.material,this.geometry=A.geometry,this}raycast(A,t){const n=this.geometry,r=this.matrixWorld,a=A.params.Points.threshold,B=n.drawRange;if(n.boundingSphere===null&&n.computeBoundingSphere(),Ce.copy(n.boundingSphere),Ce.applyMatrix4(r),Ce.radius+=a,A.ray.intersectsSphere(Ce)===!1)return;JA.copy(r).invert(),te.copy(A.ray).applyMatrix4(JA);const Q=a/((this.scale.x+this.scale.y+this.scale.z)/3),y=Q*Q,M=n.index,W=n.attributes.position;if(M!==null){const V=Math.max(0,B.start),X=Math.min(M.count,B.start+B.count);for(let iA=V,BA=X;iA<BA;iA++){const nA=M.getX(iA);Me.fromBufferAttribute(W,nA),Ne(Me,nA,y,r,A,t,this)}}else{const V=Math.max(0,B.start),X=Math.min(W.count,B.start+B.count);for(let iA=V,BA=X;iA<BA;iA++)Me.fromBufferAttribute(W,iA),Ne(Me,iA,y,r,A,t,this)}}updateMorphTargets(){const t=this.geometry.morphAttributes,n=Object.keys(t);if(n.length>0){const r=t[n[0]];if(r!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let a=0,B=r.length;a<B;a++){const Q=r[a].name||String(a);this.morphTargetInfluences.push(0),this.morphTargetDictionary[Q]=a}}}}}function Ne(I,A,t,n,r,a,B){const Q=te.distanceSqToPoint(I);if(Q<t){const y=new Ee;te.closestPointToPoint(I,y),y.applyMatrix4(n);const M=r.ray.origin.distanceTo(y);if(M<r.near||M>r.far)return;a.push({distance:M,distanceToRay:Math.sqrt(Q),point:y,index:A,face:null,object:B})}}class wt extends Sr{constructor(A,t,n,r,a,B,Q,y,M){super(A,t,n,r,a,B,Q,y,M),this.isVideoTexture=!0,this.minFilter=B!==void 0?B:DA,this.magFilter=a!==void 0?a:DA,this.generateMipmaps=!1;const K=this;function W(){K.needsUpdate=!0,A.requestVideoFrameCallback(W)}"requestVideoFrameCallback"in A&&A.requestVideoFrameCallback(W)}clone(){return new this.constructor(this.image).copy(this)}update(){const A=this.image;"requestVideoFrameCallback"in A===!1&&A.readyState>=A.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}class St extends Sr{constructor(A,t){super({width:A,height:t}),this.isFramebufferTexture=!0,this.magFilter=jA,this.minFilter=jA,this.generateMipmaps=!1,this.needsUpdate=!0}}class Yt extends Sr{constructor(A,t,n,r,a,B,Q,y,M,K,W,V){super(null,B,Q,y,M,K,r,a,W,V),this.isCompressedTexture=!0,this.image={width:t,height:n},this.mipmaps=A,this.flipY=!1,this.generateMipmaps=!1}}class xt extends Yt{constructor(A,t,n,r,a,B){super(A,t,n,a,B),this.isCompressedArrayTexture=!0,this.image.depth=r,this.wrapR=ie}}class Li extends Yt{constructor(A,t,n){super(void 0,A[0].width,A[0].height,t,n,Ao),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=A}}class Wi extends Sr{constructor(A,t,n,r,a,B,Q,y,M){super(A,t,n,r,a,B,Q,y,M),this.isCanvasTexture=!0,this.needsUpdate=!0}}class hn{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(A,t){const n=this.getUtoTmapping(A);return this.getPoint(n,t)}getPoints(A=5){const t=[];for(let n=0;n<=A;n++)t.push(this.getPoint(n/A));return t}getSpacedPoints(A=5){const t=[];for(let n=0;n<=A;n++)t.push(this.getPointAt(n/A));return t}getLength(){const A=this.getLengths();return A[A.length-1]}getLengths(A=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===A+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;const t=[];let n,r=this.getPoint(0),a=0;t.push(0);for(let B=1;B<=A;B++)n=this.getPoint(B/A),a+=n.distanceTo(r),t.push(a),r=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(A,t){const n=this.getLengths();let r=0;const a=n.length;let B;t?B=t:B=A*n[a-1];let Q=0,y=a-1,M;for(;Q<=y;)if(r=Math.floor(Q+(y-Q)/2),M=n[r]-B,M<0)Q=r+1;else if(M>0)y=r-1;else{y=r;break}if(r=y,n[r]===B)return r/(a-1);const K=n[r],V=n[r+1]-K,X=(B-K)/V;return(r+X)/(a-1)}getTangent(A,t){let r=A-1e-4,a=A+1e-4;r<0&&(r=0),a>1&&(a=1);const B=this.getPoint(r),Q=this.getPoint(a),y=t||(B.isVector2?new Ot:new Ee);return y.copy(Q).sub(B).normalize(),y}getTangentAt(A,t){const n=this.getUtoTmapping(A);return this.getTangent(n,t)}computeFrenetFrames(A,t){const n=new Ee,r=[],a=[],B=[],Q=new Ee,y=new tn;for(let X=0;X<=A;X++){const iA=X/A;r[X]=this.getTangentAt(iA,new Ee)}a[0]=new Ee,B[0]=new Ee;let M=Number.MAX_VALUE;const K=Math.abs(r[0].x),W=Math.abs(r[0].y),V=Math.abs(r[0].z);K<=M&&(M=K,n.set(1,0,0)),W<=M&&(M=W,n.set(0,1,0)),V<=M&&n.set(0,0,1),Q.crossVectors(r[0],n).normalize(),a[0].crossVectors(r[0],Q),B[0].crossVectors(r[0],a[0]);for(let X=1;X<=A;X++){if(a[X]=a[X-1].clone(),B[X]=B[X-1].clone(),Q.crossVectors(r[X-1],r[X]),Q.length()>Number.EPSILON){Q.normalize();const iA=Math.acos(Co(r[X-1].dot(r[X]),-1,1));a[X].applyMatrix4(y.makeRotationAxis(Q,iA))}B[X].crossVectors(r[X],a[X])}if(t===!0){let X=Math.acos(Co(a[0].dot(a[A]),-1,1));X/=A,r[0].dot(Q.crossVectors(a[0],a[A]))>0&&(X=-X);for(let iA=1;iA<=A;iA++)a[iA].applyMatrix4(y.makeRotationAxis(r[iA],X*iA)),B[iA].crossVectors(r[iA],a[iA])}return{tangents:r,normals:a,binormals:B}}clone(){return new this.constructor().copy(this)}copy(A){return this.arcLengthDivisions=A.arcLengthDivisions,this}toJSON(){const A={metadata:{version:4.6,type:"Curve",generator:"Curve.toJSON"}};return A.arcLengthDivisions=this.arcLengthDivisions,A.type=this.type,A}fromJSON(A){return this.arcLengthDivisions=A.arcLengthDivisions,this}}class qo extends hn{constructor(A=0,t=0,n=1,r=1,a=0,B=Math.PI*2,Q=!1,y=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=A,this.aY=t,this.xRadius=n,this.yRadius=r,this.aStartAngle=a,this.aEndAngle=B,this.aClockwise=Q,this.aRotation=y}getPoint(A,t=new Ot){const n=t,r=Math.PI*2;let a=this.aEndAngle-this.aStartAngle;const B=Math.abs(a)<Number.EPSILON;for(;a<0;)a+=r;for(;a>r;)a-=r;a<Number.EPSILON&&(B?a=0:a=r),this.aClockwise===!0&&!B&&(a===r?a=-r:a=a-r);const Q=this.aStartAngle+A*a;let y=this.aX+this.xRadius*Math.cos(Q),M=this.aY+this.yRadius*Math.sin(Q);if(this.aRotation!==0){const K=Math.cos(this.aRotation),W=Math.sin(this.aRotation),V=y-this.aX,X=M-this.aY;y=V*K-X*W+this.aX,M=V*W+X*K+this.aY}return n.set(y,M)}copy(A){return super.copy(A),this.aX=A.aX,this.aY=A.aY,this.xRadius=A.xRadius,this.yRadius=A.yRadius,this.aStartAngle=A.aStartAngle,this.aEndAngle=A.aEndAngle,this.aClockwise=A.aClockwise,this.aRotation=A.aRotation,this}toJSON(){const A=super.toJSON();return A.aX=this.aX,A.aY=this.aY,A.xRadius=this.xRadius,A.yRadius=this.yRadius,A.aStartAngle=this.aStartAngle,A.aEndAngle=this.aEndAngle,A.aClockwise=this.aClockwise,A.aRotation=this.aRotation,A}fromJSON(A){return super.fromJSON(A),this.aX=A.aX,this.aY=A.aY,this.xRadius=A.xRadius,this.yRadius=A.yRadius,this.aStartAngle=A.aStartAngle,this.aEndAngle=A.aEndAngle,this.aClockwise=A.aClockwise,this.aRotation=A.aRotation,this}}class Qr extends qo{constructor(A,t,n,r,a,B){super(A,t,n,n,r,a,B),this.isArcCurve=!0,this.type="ArcCurve"}}function ur(){let I=0,A=0,t=0,n=0;function r(a,B,Q,y){I=a,A=Q,t=-3*a+3*B-2*Q-y,n=2*a-2*B+Q+y}return{initCatmullRom:function(a,B,Q,y,M){r(B,Q,M*(Q-a),M*(y-B))},initNonuniformCatmullRom:function(a,B,Q,y,M,K,W){let V=(B-a)/M-(Q-a)/(M+K)+(Q-B)/K,X=(Q-B)/K-(y-B)/(K+W)+(y-Q)/W;V*=K,X*=K,r(B,Q,V,X)},calc:function(a){const B=a*a,Q=B*a;return I+A*a+t*B+n*Q}}}const cs=new Ee,Ms=new ur,ua=new ur,_a=new ur;class Ks extends hn{constructor(A=[],t=!1,n="centripetal",r=.5){super(),this.isCatmullRomCurve3=!0,this.type="CatmullRomCurve3",this.points=A,this.closed=t,this.curveType=n,this.tension=r}getPoint(A,t=new Ee){const n=t,r=this.points,a=r.length,B=(a-(this.closed?0:1))*A;let Q=Math.floor(B),y=B-Q;this.closed?Q+=Q>0?0:(Math.floor(Math.abs(Q)/a)+1)*a:y===0&&Q===a-1&&(Q=a-2,y=1);let M,K;this.closed||Q>0?M=r[(Q-1)%a]:(cs.subVectors(r[0],r[1]).add(r[0]),M=cs);const W=r[Q%a],V=r[(Q+1)%a];if(this.closed||Q+2<a?K=r[(Q+2)%a]:(cs.subVectors(r[a-1],r[a-2]).add(r[a-1]),K=cs),this.curveType==="centripetal"||this.curveType==="chordal"){const X=this.curveType==="chordal"?.5:.25;let iA=Math.pow(M.distanceToSquared(W),X),BA=Math.pow(W.distanceToSquared(V),X),nA=Math.pow(V.distanceToSquared(K),X);BA<1e-4&&(BA=1),iA<1e-4&&(iA=BA),nA<1e-4&&(nA=BA),Ms.initNonuniformCatmullRom(M.x,W.x,V.x,K.x,iA,BA,nA),ua.initNonuniformCatmullRom(M.y,W.y,V.y,K.y,iA,BA,nA),_a.initNonuniformCatmullRom(M.z,W.z,V.z,K.z,iA,BA,nA)}else this.curveType==="catmullrom"&&(Ms.initCatmullRom(M.x,W.x,V.x,K.x,this.tension),ua.initCatmullRom(M.y,W.y,V.y,K.y,this.tension),_a.initCatmullRom(M.z,W.z,V.z,K.z,this.tension));return n.set(Ms.calc(y),ua.calc(y),_a.calc(y)),n}copy(A){super.copy(A),this.points=[];for(let t=0,n=A.points.length;t<n;t++){const r=A.points[t];this.points.push(r.clone())}return this.closed=A.closed,this.curveType=A.curveType,this.tension=A.tension,this}toJSON(){const A=super.toJSON();A.points=[];for(let t=0,n=this.points.length;t<n;t++){const r=this.points[t];A.points.push(r.toArray())}return A.closed=this.closed,A.curveType=this.curveType,A.tension=this.tension,A}fromJSON(A){super.fromJSON(A),this.points=[];for(let t=0,n=A.points.length;t<n;t++){const r=A.points[t];this.points.push(new Ee().fromArray(r))}return this.closed=A.closed,this.curveType=A.curveType,this.tension=A.tension,this}}function tg(I,A,t,n,r){const a=(n-A)*.5,B=(r-t)*.5,Q=I*I,y=I*Q;return(2*t-2*n+a+B)*y+(-3*t+3*n-2*a-B)*Q+a*I+t}function Vs(I,A){const t=1-I;return t*t*A}function nI(I,A){return 2*(1-I)*I*A}function vC(I,A){return I*I*A}function NC(I,A,t,n){return Vs(I,A)+nI(I,t)+vC(I,n)}function NE(I,A){const t=1-I;return t*t*t*A}function yh(I,A){const t=1-I;return 3*t*t*I*A}function YI(I,A){return 3*(1-I)*I*I*A}function UE(I,A){return I*I*I*A}function _B(I,A,t,n,r){return NE(I,A)+yh(I,t)+YI(I,n)+UE(I,r)}class oI extends hn{constructor(A=new Ot,t=new Ot,n=new Ot,r=new Ot){super(),this.isCubicBezierCurve=!0,this.type="CubicBezierCurve",this.v0=A,this.v1=t,this.v2=n,this.v3=r}getPoint(A,t=new Ot){const n=t,r=this.v0,a=this.v1,B=this.v2,Q=this.v3;return n.set(_B(A,r.x,a.x,B.x,Q.x),_B(A,r.y,a.y,B.y,Q.y)),n}copy(A){return super.copy(A),this.v0.copy(A.v0),this.v1.copy(A.v1),this.v2.copy(A.v2),this.v3.copy(A.v3),this}toJSON(){const A=super.toJSON();return A.v0=this.v0.toArray(),A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A.v3=this.v3.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v0.fromArray(A.v0),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this.v3.fromArray(A.v3),this}}class uI extends hn{constructor(A=new Ee,t=new Ee,n=new Ee,r=new Ee){super(),this.isCubicBezierCurve3=!0,this.type="CubicBezierCurve3",this.v0=A,this.v1=t,this.v2=n,this.v3=r}getPoint(A,t=new Ee){const n=t,r=this.v0,a=this.v1,B=this.v2,Q=this.v3;return n.set(_B(A,r.x,a.x,B.x,Q.x),_B(A,r.y,a.y,B.y,Q.y),_B(A,r.z,a.z,B.z,Q.z)),n}copy(A){return super.copy(A),this.v0.copy(A.v0),this.v1.copy(A.v1),this.v2.copy(A.v2),this.v3.copy(A.v3),this}toJSON(){const A=super.toJSON();return A.v0=this.v0.toArray(),A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A.v3=this.v3.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v0.fromArray(A.v0),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this.v3.fromArray(A.v3),this}}class Vi extends hn{constructor(A=new Ot,t=new Ot){super(),this.isLineCurve=!0,this.type="LineCurve",this.v1=A,this.v2=t}getPoint(A,t=new Ot){const n=t;return A===1?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(A).add(this.v1)),n}getPointAt(A,t){return this.getPoint(A,t)}getTangent(A,t=new Ot){return t.subVectors(this.v2,this.v1).normalize()}getTangentAt(A,t){return this.getTangent(A,t)}copy(A){return super.copy(A),this.v1.copy(A.v1),this.v2.copy(A.v2),this}toJSON(){const A=super.toJSON();return A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this}}class Cn extends hn{constructor(A=new Ee,t=new Ee){super(),this.isLineCurve3=!0,this.type="LineCurve3",this.v1=A,this.v2=t}getPoint(A,t=new Ee){const n=t;return A===1?n.copy(this.v2):(n.copy(this.v2).sub(this.v1),n.multiplyScalar(A).add(this.v1)),n}getPointAt(A,t){return this.getPoint(A,t)}getTangent(A,t=new Ee){return t.subVectors(this.v2,this.v1).normalize()}getTangentAt(A,t){return this.getTangent(A,t)}copy(A){return super.copy(A),this.v1.copy(A.v1),this.v2.copy(A.v2),this}toJSON(){const A=super.toJSON();return A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this}}class Bn extends hn{constructor(A=new Ot,t=new Ot,n=new Ot){super(),this.isQuadraticBezierCurve=!0,this.type="QuadraticBezierCurve",this.v0=A,this.v1=t,this.v2=n}getPoint(A,t=new Ot){const n=t,r=this.v0,a=this.v1,B=this.v2;return n.set(NC(A,r.x,a.x,B.x),NC(A,r.y,a.y,B.y)),n}copy(A){return super.copy(A),this.v0.copy(A.v0),this.v1.copy(A.v1),this.v2.copy(A.v2),this}toJSON(){const A=super.toJSON();return A.v0=this.v0.toArray(),A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v0.fromArray(A.v0),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this}}class Do extends hn{constructor(A=new Ee,t=new Ee,n=new Ee){super(),this.isQuadraticBezierCurve3=!0,this.type="QuadraticBezierCurve3",this.v0=A,this.v1=t,this.v2=n}getPoint(A,t=new Ee){const n=t,r=this.v0,a=this.v1,B=this.v2;return n.set(NC(A,r.x,a.x,B.x),NC(A,r.y,a.y,B.y),NC(A,r.z,a.z,B.z)),n}copy(A){return super.copy(A),this.v0.copy(A.v0),this.v1.copy(A.v1),this.v2.copy(A.v2),this}toJSON(){const A=super.toJSON();return A.v0=this.v0.toArray(),A.v1=this.v1.toArray(),A.v2=this.v2.toArray(),A}fromJSON(A){return super.fromJSON(A),this.v0.fromArray(A.v0),this.v1.fromArray(A.v1),this.v2.fromArray(A.v2),this}}class _n extends hn{constructor(A=[]){super(),this.isSplineCurve=!0,this.type="SplineCurve",this.points=A}getPoint(A,t=new Ot){const n=t,r=this.points,a=(r.length-1)*A,B=Math.floor(a),Q=a-B,y=r[B===0?B:B-1],M=r[B],K=r[B>r.length-2?r.length-1:B+1],W=r[B>r.length-3?r.length-1:B+2];return n.set(tg(Q,y.x,M.x,K.x,W.x),tg(Q,y.y,M.y,K.y,W.y)),n}copy(A){super.copy(A),this.points=[];for(let t=0,n=A.points.length;t<n;t++){const r=A.points[t];this.points.push(r.clone())}return this}toJSON(){const A=super.toJSON();A.points=[];for(let t=0,n=this.points.length;t<n;t++){const r=this.points[t];A.points.push(r.toArray())}return A}fromJSON(A){super.fromJSON(A),this.points=[];for(let t=0,n=A.points.length;t<n;t++){const r=A.points[t];this.points.push(new Ot().fromArray(r))}return this}}var yr=Object.freeze({__proto__:null,ArcCurve:Qr,CatmullRomCurve3:Ks,CubicBezierCurve:oI,CubicBezierCurve3:uI,EllipseCurve:qo,LineCurve:Vi,LineCurve3:Cn,QuadraticBezierCurve:Bn,QuadraticBezierCurve3:Do,SplineCurve:_n});class Wr extends hn{constructor(){super(),this.type="CurvePath",this.curves=[],this.autoClose=!1}add(A){this.curves.push(A)}closePath(){const A=this.curves[0].getPoint(0),t=this.curves[this.curves.length-1].getPoint(1);if(!A.equals(t)){const n=A.isVector2===!0?"LineCurve":"LineCurve3";this.curves.push(new yr[n](t,A))}return this}getPoint(A,t){const n=A*this.getLength(),r=this.getCurveLengths();let a=0;for(;a<r.length;){if(r[a]>=n){const B=r[a]-n,Q=this.curves[a],y=Q.getLength(),M=y===0?0:1-B/y;return Q.getPointAt(M,t)}a++}return null}getLength(){const A=this.getCurveLengths();return A[A.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;const A=[];let t=0;for(let n=0,r=this.curves.length;n<r;n++)t+=this.curves[n].getLength(),A.push(t);return this.cacheLengths=A,A}getSpacedPoints(A=40){const t=[];for(let n=0;n<=A;n++)t.push(this.getPoint(n/A));return this.autoClose&&t.push(t[0]),t}getPoints(A=12){const t=[];let n;for(let r=0,a=this.curves;r<a.length;r++){const B=a[r],Q=B.isEllipseCurve?A*2:B.isLineCurve||B.isLineCurve3?1:B.isSplineCurve?A*B.points.length:A,y=B.getPoints(Q);for(let M=0;M<y.length;M++){const K=y[M];n&&n.equals(K)||(t.push(K),n=K)}}return this.autoClose&&t.length>1&&!t[t.length-1].equals(t[0])&&t.push(t[0]),t}copy(A){super.copy(A),this.curves=[];for(let t=0,n=A.curves.length;t<n;t++){const r=A.curves[t];this.curves.push(r.clone())}return this.autoClose=A.autoClose,this}toJSON(){const A=super.toJSON();A.autoClose=this.autoClose,A.curves=[];for(let t=0,n=this.curves.length;t<n;t++){const r=this.curves[t];A.curves.push(r.toJSON())}return A}fromJSON(A){super.fromJSON(A),this.autoClose=A.autoClose,this.curves=[];for(let t=0,n=A.curves.length;t<n;t++){const r=A.curves[t];this.curves.push(new yr[r.type]().fromJSON(r))}return this}}class hs extends Wr{constructor(A){super(),this.type="Path",this.currentPoint=new Ot,A&&this.setFromPoints(A)}setFromPoints(A){this.moveTo(A[0].x,A[0].y);for(let t=1,n=A.length;t<n;t++)this.lineTo(A[t].x,A[t].y);return this}moveTo(A,t){return this.currentPoint.set(A,t),this}lineTo(A,t){const n=new Vi(this.currentPoint.clone(),new Ot(A,t));return this.curves.push(n),this.currentPoint.set(A,t),this}quadraticCurveTo(A,t,n,r){const a=new Bn(this.currentPoint.clone(),new Ot(A,t),new Ot(n,r));return this.curves.push(a),this.currentPoint.set(n,r),this}bezierCurveTo(A,t,n,r,a,B){const Q=new oI(this.currentPoint.clone(),new Ot(A,t),new Ot(n,r),new Ot(a,B));return this.curves.push(Q),this.currentPoint.set(a,B),this}splineThru(A){const t=[this.currentPoint.clone()].concat(A),n=new _n(t);return this.curves.push(n),this.currentPoint.copy(A[A.length-1]),this}arc(A,t,n,r,a,B){const Q=this.currentPoint.x,y=this.currentPoint.y;return this.absarc(A+Q,t+y,n,r,a,B),this}absarc(A,t,n,r,a,B){return this.absellipse(A,t,n,n,r,a,B),this}ellipse(A,t,n,r,a,B,Q,y){const M=this.currentPoint.x,K=this.currentPoint.y;return this.absellipse(A+M,t+K,n,r,a,B,Q,y),this}absellipse(A,t,n,r,a,B,Q,y){const M=new qo(A,t,n,r,a,B,Q,y);if(this.curves.length>0){const W=M.getPoint(0);W.equals(this.currentPoint)||this.lineTo(W.x,W.y)}this.curves.push(M);const K=M.getPoint(1);return this.currentPoint.copy(K),this}copy(A){return super.copy(A),this.currentPoint.copy(A.currentPoint),this}toJSON(){const A=super.toJSON();return A.currentPoint=this.currentPoint.toArray(),A}fromJSON(A){return super.fromJSON(A),this.currentPoint.fromArray(A.currentPoint),this}}class Mg extends li{constructor(A=[new Ot(0,-.5),new Ot(.5,0),new Ot(0,.5)],t=12,n=0,r=Math.PI*2){super(),this.type="LatheGeometry",this.parameters={points:A,segments:t,phiStart:n,phiLength:r},t=Math.floor(t),r=Co(r,0,Math.PI*2);const a=[],B=[],Q=[],y=[],M=[],K=1/t,W=new Ee,V=new Ot,X=new Ee,iA=new Ee,BA=new Ee;let nA=0,tA=0;for(let RA=0;RA<=A.length-1;RA++)switch(RA){case 0:nA=A[RA+1].x-A[RA].x,tA=A[RA+1].y-A[RA].y,X.x=tA*1,X.y=-nA,X.z=tA*0,BA.copy(X),X.normalize(),y.push(X.x,X.y,X.z);break;case A.length-1:y.push(BA.x,BA.y,BA.z);break;default:nA=A[RA+1].x-A[RA].x,tA=A[RA+1].y-A[RA].y,X.x=tA*1,X.y=-nA,X.z=tA*0,iA.copy(X),X.x+=BA.x,X.y+=BA.y,X.z+=BA.z,X.normalize(),y.push(X.x,X.y,X.z),BA.copy(iA)}for(let RA=0;RA<=t;RA++){const mA=n+RA*K*r,kA=Math.sin(mA),_e=Math.cos(mA);for(let ae=0;ae<=A.length-1;ae++){W.x=A[ae].x*kA,W.y=A[ae].y,W.z=A[ae].x*_e,B.push(W.x,W.y,W.z),V.x=RA/t,V.y=ae/(A.length-1),Q.push(V.x,V.y);const fe=y[3*ae+0]*kA,Je=y[3*ae+1],zA=y[3*ae+0]*_e;M.push(fe,Je,zA)}}for(let RA=0;RA<t;RA++)for(let mA=0;mA<A.length-1;mA++){const kA=mA+RA*A.length,_e=kA,ae=kA+A.length,fe=kA+A.length+1,Je=kA+1;a.push(_e,ae,Je),a.push(fe,Je,ae)}this.setIndex(a),this.setAttribute("position",new vt(B,3)),this.setAttribute("uv",new vt(Q,2)),this.setAttribute("normal",new vt(M,3))}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new Mg(A.points,A.segments,A.phiStart,A.phiLength)}}class Bg extends Mg{constructor(A=1,t=1,n=4,r=8){const a=new hs;a.absarc(0,-t/2,A,Math.PI*1.5,0),a.absarc(0,t/2,A,0,Math.PI*.5),super(a.getPoints(n),r),this.type="CapsuleGeometry",this.parameters={radius:A,length:t,capSegments:n,radialSegments:r}}static fromJSON(A){return new Bg(A.radius,A.length,A.capSegments,A.radialSegments)}}class eC extends li{constructor(A=1,t=32,n=0,r=Math.PI*2){super(),this.type="CircleGeometry",this.parameters={radius:A,segments:t,thetaStart:n,thetaLength:r},t=Math.max(3,t);const a=[],B=[],Q=[],y=[],M=new Ee,K=new Ot;B.push(0,0,0),Q.push(0,0,1),y.push(.5,.5);for(let W=0,V=3;W<=t;W++,V+=3){const X=n+W/t*r;M.x=A*Math.cos(X),M.y=A*Math.sin(X),B.push(M.x,M.y,M.z),Q.push(0,0,1),K.x=(B[V]/A+1)/2,K.y=(B[V+1]/A+1)/2,y.push(K.x,K.y)}for(let W=1;W<=t;W++)a.push(W,W+1,0);this.setIndex(a),this.setAttribute("position",new vt(B,3)),this.setAttribute("normal",new vt(Q,3)),this.setAttribute("uv",new vt(y,2))}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new eC(A.radius,A.segments,A.thetaStart,A.thetaLength)}}class tC extends li{constructor(A=1,t=1,n=1,r=32,a=1,B=!1,Q=0,y=Math.PI*2){super(),this.type="CylinderGeometry",this.parameters={radiusTop:A,radiusBottom:t,height:n,radialSegments:r,heightSegments:a,openEnded:B,thetaStart:Q,thetaLength:y};const M=this;r=Math.floor(r),a=Math.floor(a);const K=[],W=[],V=[],X=[];let iA=0;const BA=[],nA=n/2;let tA=0;RA(),B===!1&&(A>0&&mA(!0),t>0&&mA(!1)),this.setIndex(K),this.setAttribute("position",new vt(W,3)),this.setAttribute("normal",new vt(V,3)),this.setAttribute("uv",new vt(X,2));function RA(){const kA=new Ee,_e=new Ee;let ae=0;const fe=(t-A)/n;for(let Je=0;Je<=a;Je++){const zA=[],KA=Je/a,tt=KA*(t-A)+A;for(let Rt=0;Rt<=r;Rt++){const Ze=Rt/r,yt=Ze*y+Q,jt=Math.sin(yt),oi=Math.cos(yt);_e.x=tt*jt,_e.y=-KA*n+nA,_e.z=tt*oi,W.push(_e.x,_e.y,_e.z),kA.set(jt,fe,oi).normalize(),V.push(kA.x,kA.y,kA.z),X.push(Ze,1-KA),zA.push(iA++)}BA.push(zA)}for(let Je=0;Je<r;Je++)for(let zA=0;zA<a;zA++){const KA=BA[zA][Je],tt=BA[zA+1][Je],Rt=BA[zA+1][Je+1],Ze=BA[zA][Je+1];K.push(KA,tt,Ze),K.push(tt,Rt,Ze),ae+=6}M.addGroup(tA,ae,0),tA+=ae}function mA(kA){const _e=iA,ae=new Ot,fe=new Ee;let Je=0;const zA=kA===!0?A:t,KA=kA===!0?1:-1;for(let Rt=1;Rt<=r;Rt++)W.push(0,nA*KA,0),V.push(0,KA,0),X.push(.5,.5),iA++;const tt=iA;for(let Rt=0;Rt<=r;Rt++){const yt=Rt/r*y+Q,jt=Math.cos(yt),oi=Math.sin(yt);fe.x=zA*oi,fe.y=nA*KA,fe.z=zA*jt,W.push(fe.x,fe.y,fe.z),V.push(0,KA,0),ae.x=jt*.5+.5,ae.y=oi*.5*KA+.5,X.push(ae.x,ae.y),iA++}for(let Rt=0;Rt<r;Rt++){const Ze=_e+Rt,yt=tt+Rt;kA===!0?K.push(yt,yt+1,Ze):K.push(yt+1,yt,Ze),Je+=3}M.addGroup(tA,Je,kA===!0?1:2),tA+=Je}}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new tC(A.radiusTop,A.radiusBottom,A.height,A.radialSegments,A.heightSegments,A.openEnded,A.thetaStart,A.thetaLength)}}class Pa extends tC{constructor(A=1,t=1,n=32,r=1,a=!1,B=0,Q=Math.PI*2){super(0,A,t,n,r,a,B,Q),this.type="ConeGeometry",this.parameters={radius:A,height:t,radialSegments:n,heightSegments:r,openEnded:a,thetaStart:B,thetaLength:Q}}static fromJSON(A){return new Pa(A.radius,A.height,A.radialSegments,A.heightSegments,A.openEnded,A.thetaStart,A.thetaLength)}}class HI extends li{constructor(A=[],t=[],n=1,r=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:A,indices:t,radius:n,detail:r};const a=[],B=[];Q(r),M(n),K(),this.setAttribute("position",new vt(a,3)),this.setAttribute("normal",new vt(a.slice(),3)),this.setAttribute("uv",new vt(B,2)),r===0?this.computeVertexNormals():this.normalizeNormals();function Q(RA){const mA=new Ee,kA=new Ee,_e=new Ee;for(let ae=0;ae<t.length;ae+=3)X(t[ae+0],mA),X(t[ae+1],kA),X(t[ae+2],_e),y(mA,kA,_e,RA)}function y(RA,mA,kA,_e){const ae=_e+1,fe=[];for(let Je=0;Je<=ae;Je++){fe[Je]=[];const zA=RA.clone().lerp(kA,Je/ae),KA=mA.clone().lerp(kA,Je/ae),tt=ae-Je;for(let Rt=0;Rt<=tt;Rt++)Rt===0&&Je===ae?fe[Je][Rt]=zA:fe[Je][Rt]=zA.clone().lerp(KA,Rt/tt)}for(let Je=0;Je<ae;Je++)for(let zA=0;zA<2*(ae-Je)-1;zA++){const KA=Math.floor(zA/2);zA%2===0?(V(fe[Je][KA+1]),V(fe[Je+1][KA]),V(fe[Je][KA])):(V(fe[Je][KA+1]),V(fe[Je+1][KA+1]),V(fe[Je+1][KA]))}}function M(RA){const mA=new Ee;for(let kA=0;kA<a.length;kA+=3)mA.x=a[kA+0],mA.y=a[kA+1],mA.z=a[kA+2],mA.normalize().multiplyScalar(RA),a[kA+0]=mA.x,a[kA+1]=mA.y,a[kA+2]=mA.z}function K(){const RA=new Ee;for(let mA=0;mA<a.length;mA+=3){RA.x=a[mA+0],RA.y=a[mA+1],RA.z=a[mA+2];const kA=nA(RA)/2/Math.PI+.5,_e=tA(RA)/Math.PI+.5;B.push(kA,1-_e)}iA(),W()}function W(){for(let RA=0;RA<B.length;RA+=6){const mA=B[RA+0],kA=B[RA+2],_e=B[RA+4],ae=Math.max(mA,kA,_e),fe=Math.min(mA,kA,_e);ae>.9&&fe<.1&&(mA<.2&&(B[RA+0]+=1),kA<.2&&(B[RA+2]+=1),_e<.2&&(B[RA+4]+=1))}}function V(RA){a.push(RA.x,RA.y,RA.z)}function X(RA,mA){const kA=RA*3;mA.x=A[kA+0],mA.y=A[kA+1],mA.z=A[kA+2]}function iA(){const RA=new Ee,mA=new Ee,kA=new Ee,_e=new Ee,ae=new Ot,fe=new Ot,Je=new Ot;for(let zA=0,KA=0;zA<a.length;zA+=9,KA+=6){RA.set(a[zA+0],a[zA+1],a[zA+2]),mA.set(a[zA+3],a[zA+4],a[zA+5]),kA.set(a[zA+6],a[zA+7],a[zA+8]),ae.set(B[KA+0],B[KA+1]),fe.set(B[KA+2],B[KA+3]),Je.set(B[KA+4],B[KA+5]),_e.copy(RA).add(mA).add(kA).divideScalar(3);const tt=nA(_e);BA(ae,KA+0,RA,tt),BA(fe,KA+2,mA,tt),BA(Je,KA+4,kA,tt)}}function BA(RA,mA,kA,_e){_e<0&&RA.x===1&&(B[mA]=RA.x-1),kA.x===0&&kA.z===0&&(B[mA]=_e/2/Math.PI+.5)}function nA(RA){return Math.atan2(RA.z,-RA.x)}function tA(RA){return Math.atan2(-RA.y,Math.sqrt(RA.x*RA.x+RA.z*RA.z))}}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new HI(A.vertices,A.indices,A.radius,A.details)}}class TB extends HI{constructor(A=1,t=0){const n=(1+Math.sqrt(5))/2,r=1/n,a=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-r,-n,0,-r,n,0,r,-n,0,r,n,-r,-n,0,-r,n,0,r,-n,0,r,n,0,-n,0,-r,n,0,-r,-n,0,r,n,0,r],B=[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9];super(a,B,A,t),this.type="DodecahedronGeometry",this.parameters={radius:A,detail:t}}static fromJSON(A){return new TB(A.radius,A.detail)}}const KB=new Ee,LE=new Ee,NQ=new Ee,JB=new Le;class UQ extends li{constructor(A=null,t=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:A,thresholdAngle:t},A!==null){const r=Math.pow(10,4),a=Math.cos(sg*t),B=A.getIndex(),Q=A.getAttribute("position"),y=B?B.count:Q.count,M=[0,0,0],K=["a","b","c"],W=new Array(3),V={},X=[];for(let iA=0;iA<y;iA+=3){B?(M[0]=B.getX(iA),M[1]=B.getX(iA+1),M[2]=B.getX(iA+2)):(M[0]=iA,M[1]=iA+1,M[2]=iA+2);const{a:BA,b:nA,c:tA}=JB;if(BA.fromBufferAttribute(Q,M[0]),nA.fromBufferAttribute(Q,M[1]),tA.fromBufferAttribute(Q,M[2]),JB.getNormal(NQ),W[0]=`${Math.round(BA.x*r)},${Math.round(BA.y*r)},${Math.round(BA.z*r)}`,W[1]=`${Math.round(nA.x*r)},${Math.round(nA.y*r)},${Math.round(nA.z*r)}`,W[2]=`${Math.round(tA.x*r)},${Math.round(tA.y*r)},${Math.round(tA.z*r)}`,!(W[0]===W[1]||W[1]===W[2]||W[2]===W[0]))for(let RA=0;RA<3;RA++){const mA=(RA+1)%3,kA=W[RA],_e=W[mA],ae=JB[K[RA]],fe=JB[K[mA]],Je=`${kA}_${_e}`,zA=`${_e}_${kA}`;zA in V&&V[zA]?(NQ.dot(V[zA].normal)<=a&&(X.push(ae.x,ae.y,ae.z),X.push(fe.x,fe.y,fe.z)),V[zA]=null):Je in V||(V[Je]={index0:M[RA],index1:M[mA],normal:NQ.clone()})}}for(const iA in V)if(V[iA]){const{index0:BA,index1:nA}=V[iA];KB.fromBufferAttribute(Q,BA),LE.fromBufferAttribute(Q,nA),X.push(KB.x,KB.y,KB.z),X.push(LE.x,LE.y,LE.z)}this.setAttribute("position",new vt(X,3))}}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}}class YB extends hs{constructor(A){super(A),this.uuid=Yo(),this.type="Shape",this.holes=[]}getPointsHoles(A){const t=[];for(let n=0,r=this.holes.length;n<r;n++)t[n]=this.holes[n].getPoints(A);return t}extractPoints(A){return{shape:this.getPoints(A),holes:this.getPointsHoles(A)}}copy(A){super.copy(A),this.holes=[];for(let t=0,n=A.holes.length;t<n;t++){const r=A.holes[t];this.holes.push(r.clone())}return this}toJSON(){const A=super.toJSON();A.uuid=this.uuid,A.holes=[];for(let t=0,n=this.holes.length;t<n;t++){const r=this.holes[t];A.holes.push(r.toJSON())}return A}fromJSON(A){super.fromJSON(A),this.uuid=A.uuid,this.holes=[];for(let t=0,n=A.holes.length;t<n;t++){const r=A.holes[t];this.holes.push(new hs().fromJSON(r))}return this}}const Hu={triangulate:function(I,A,t=2){const n=A&&A.length,r=n?A[0]*t:I.length;let a=wd(I,0,r,t,!0);const B=[];if(!a||a.next===a.prev)return B;let Q,y,M,K,W,V,X;if(n&&(a=Vu(I,A,a,t)),I.length>80*t){Q=M=I[0],y=K=I[1];for(let iA=t;iA<r;iA+=t)W=I[iA],V=I[iA+1],W<Q&&(Q=W),V<y&&(y=V),W>M&&(M=W),V>K&&(K=V);X=Math.max(M-Q,K-y),X=X!==0?32767/X:0}return LQ(a,B,t,Q,y,X,0),B}};function wd(I,A,t,n,r){let a,B;if(r===rf(I,A,t,n)>0)for(a=A;a<t;a+=n)B=Rd(a,I[a],I[a+1],B);else for(a=t-n;a>=A;a-=n)B=Rd(a,I[a],I[a+1],B);return B&&wh(B,B.next)&&(bQ(B),B=B.next),B}function HB(I,A){if(!I)return I;A||(A=I);let t=I,n;do if(n=!1,!t.steiner&&(wh(t,t.next)||ig(t.prev,t,t.next)===0)){if(bQ(t),t=A=t.prev,t===t.next)break;n=!0}else t=t.next;while(n||t!==A);return A}function LQ(I,A,t,n,r,a,B){if(!I)return;!B&&a&&$u(I,n,r,a);let Q=I,y,M;for(;I.prev!==I.next;){if(y=I.prev,M=I.next,a?Ou(I,n,r,a):Pu(I)){A.push(y.i/t|0),A.push(I.i/t|0),A.push(M.i/t|0),bQ(I),I=M.next,Q=M.next;continue}if(I=M,I===Q){B?B===1?(I=qu(HB(I),A,t),LQ(I,A,t,n,r,a,2)):B===2&&Wu(I,A,t,n,r,a):LQ(HB(I),A,t,n,r,a,1);break}}}function Pu(I){const A=I.prev,t=I,n=I.next;if(ig(A,t,n)>=0)return!1;const r=A.x,a=t.x,B=n.x,Q=A.y,y=t.y,M=n.y,K=r<a?r<B?r:B:a<B?a:B,W=Q<y?Q<M?Q:M:y<M?y:M,V=r>a?r>B?r:B:a>B?a:B,X=Q>y?Q>M?Q:M:y>M?y:M;let iA=n.next;for(;iA!==A;){if(iA.x>=K&&iA.x<=V&&iA.y>=W&&iA.y<=X&&xE(r,Q,a,y,B,M,iA.x,iA.y)&&ig(iA.prev,iA,iA.next)>=0)return!1;iA=iA.next}return!0}function Ou(I,A,t,n){const r=I.prev,a=I,B=I.next;if(ig(r,a,B)>=0)return!1;const Q=r.x,y=a.x,M=B.x,K=r.y,W=a.y,V=B.y,X=Q<y?Q<M?Q:M:y<M?y:M,iA=K<W?K<V?K:V:W<V?W:V,BA=Q>y?Q>M?Q:M:y>M?y:M,nA=K>W?K>V?K:V:W>V?W:V,tA=Vl(X,iA,A,t,n),RA=Vl(BA,nA,A,t,n);let mA=I.prevZ,kA=I.nextZ;for(;mA&&mA.z>=tA&&kA&&kA.z<=RA;){if(mA.x>=X&&mA.x<=BA&&mA.y>=iA&&mA.y<=nA&&mA!==r&&mA!==B&&xE(Q,K,y,W,M,V,mA.x,mA.y)&&ig(mA.prev,mA,mA.next)>=0||(mA=mA.prevZ,kA.x>=X&&kA.x<=BA&&kA.y>=iA&&kA.y<=nA&&kA!==r&&kA!==B&&xE(Q,K,y,W,M,V,kA.x,kA.y)&&ig(kA.prev,kA,kA.next)>=0))return!1;kA=kA.nextZ}for(;mA&&mA.z>=tA;){if(mA.x>=X&&mA.x<=BA&&mA.y>=iA&&mA.y<=nA&&mA!==r&&mA!==B&&xE(Q,K,y,W,M,V,mA.x,mA.y)&&ig(mA.prev,mA,mA.next)>=0)return!1;mA=mA.prevZ}for(;kA&&kA.z<=RA;){if(kA.x>=X&&kA.x<=BA&&kA.y>=iA&&kA.y<=nA&&kA!==r&&kA!==B&&xE(Q,K,y,W,M,V,kA.x,kA.y)&&ig(kA.prev,kA,kA.next)>=0)return!1;kA=kA.nextZ}return!0}function qu(I,A,t){let n=I;do{const r=n.prev,a=n.next.next;!wh(r,a)&&Md(r,n,n.next,a)&&xQ(r,a)&&xQ(a,r)&&(A.push(r.i/t|0),A.push(n.i/t|0),A.push(a.i/t|0),bQ(n),bQ(n.next),n=I=a),n=n.next}while(n!==I);return HB(n)}function Wu(I,A,t,n,r,a){let B=I;do{let Q=B.next.next;for(;Q!==B.prev;){if(B.i!==Q.i&&tf(B,Q)){let y=Sd(B,Q);B=HB(B,B.next),y=HB(y,y.next),LQ(B,A,t,n,r,a,0),LQ(y,A,t,n,r,a,0);return}Q=Q.next}B=B.next}while(B!==I)}function Vu(I,A,t,n){const r=[];let a,B,Q,y,M;for(a=0,B=A.length;a<B;a++)Q=A[a]*n,y=a<B-1?A[a+1]*n:I.length,M=wd(I,Q,y,n,!1),M===M.next&&(M.steiner=!0),r.push(ef(M));for(r.sort(Zu),a=0;a<r.length;a++)t=ju(r[a],t);return t}function Zu(I,A){return I.x-A.x}function ju(I,A){const t=Xu(I,A);if(!t)return A;const n=Sd(t,I);return HB(n,n.next),HB(t,t.next)}function Xu(I,A){let t=A,n=-1/0,r;const a=I.x,B=I.y;do{if(B<=t.y&&B>=t.next.y&&t.next.y!==t.y){const V=t.x+(B-t.y)*(t.next.x-t.x)/(t.next.y-t.y);if(V<=a&&V>n&&(n=V,r=t.x<t.next.x?t:t.next,V===a))return r}t=t.next}while(t!==A);if(!r)return null;const Q=r,y=r.x,M=r.y;let K=1/0,W;t=r;do a>=t.x&&t.x>=y&&a!==t.x&&xE(B<M?a:n,B,y,M,B<M?n:a,B,t.x,t.y)&&(W=Math.abs(B-t.y)/(a-t.x),xQ(t,I)&&(W<K||W===K&&(t.x>r.x||t.x===r.x&&zu(r,t)))&&(r=t,K=W)),t=t.next;while(t!==Q);return r}function zu(I,A){return ig(I.prev,I,A.prev)<0&&ig(A.next,I,I.next)<0}function $u(I,A,t,n){let r=I;do r.z===0&&(r.z=Vl(r.x,r.y,A,t,n)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==I);r.prevZ.nextZ=null,r.prevZ=null,Af(r)}function Af(I){let A,t,n,r,a,B,Q,y,M=1;do{for(t=I,I=null,a=null,B=0;t;){for(B++,n=t,Q=0,A=0;A<M&&(Q++,n=n.nextZ,!!n);A++);for(y=M;Q>0||y>0&&n;)Q!==0&&(y===0||!n||t.z<=n.z)?(r=t,t=t.nextZ,Q--):(r=n,n=n.nextZ,y--),a?a.nextZ=r:I=r,r.prevZ=a,a=r;t=n}a.nextZ=null,M*=2}while(B>1);return I}function Vl(I,A,t,n,r){return I=(I-t)*r|0,A=(A-n)*r|0,I=(I|I<<8)&16711935,I=(I|I<<4)&252645135,I=(I|I<<2)&858993459,I=(I|I<<1)&1431655765,A=(A|A<<8)&16711935,A=(A|A<<4)&252645135,A=(A|A<<2)&858993459,A=(A|A<<1)&1431655765,I|A<<1}function ef(I){let A=I,t=I;do(A.x<t.x||A.x===t.x&&A.y<t.y)&&(t=A),A=A.next;while(A!==I);return t}function xE(I,A,t,n,r,a,B,Q){return(r-B)*(A-Q)>=(I-B)*(a-Q)&&(I-B)*(n-Q)>=(t-B)*(A-Q)&&(t-B)*(a-Q)>=(r-B)*(n-Q)}function tf(I,A){return I.next.i!==A.i&&I.prev.i!==A.i&&!nf(I,A)&&(xQ(I,A)&&xQ(A,I)&&of(I,A)&&(ig(I.prev,I,A.prev)||ig(I,A.prev,A))||wh(I,A)&&ig(I.prev,I,I.next)>0&&ig(A.prev,A,A.next)>0)}function ig(I,A,t){return(A.y-I.y)*(t.x-A.x)-(A.x-I.x)*(t.y-A.y)}function wh(I,A){return I.x===A.x&&I.y===A.y}function Md(I,A,t,n){const r=Sh(ig(I,A,t)),a=Sh(ig(I,A,n)),B=Sh(ig(t,n,I)),Q=Sh(ig(t,n,A));return!!(r!==a&&B!==Q||r===0&&Mh(I,t,A)||a===0&&Mh(I,n,A)||B===0&&Mh(t,I,n)||Q===0&&Mh(t,A,n))}function Mh(I,A,t){return A.x<=Math.max(I.x,t.x)&&A.x>=Math.min(I.x,t.x)&&A.y<=Math.max(I.y,t.y)&&A.y>=Math.min(I.y,t.y)}function Sh(I){return I>0?1:I<0?-1:0}function nf(I,A){let t=I;do{if(t.i!==I.i&&t.next.i!==I.i&&t.i!==A.i&&t.next.i!==A.i&&Md(t,t.next,I,A))return!0;t=t.next}while(t!==I);return!1}function xQ(I,A){return ig(I.prev,I,I.next)<0?ig(I,A,I.next)>=0&&ig(I,I.prev,A)>=0:ig(I,A,I.prev)<0||ig(I,I.next,A)<0}function of(I,A){let t=I,n=!1;const r=(I.x+A.x)/2,a=(I.y+A.y)/2;do t.y>a!=t.next.y>a&&t.next.y!==t.y&&r<(t.next.x-t.x)*(a-t.y)/(t.next.y-t.y)+t.x&&(n=!n),t=t.next;while(t!==I);return n}function Sd(I,A){const t=new Zl(I.i,I.x,I.y),n=new Zl(A.i,A.x,A.y),r=I.next,a=A.prev;return I.next=A,A.prev=I,t.next=r,r.prev=t,n.next=t,t.prev=n,a.next=n,n.prev=a,n}function Rd(I,A,t,n){const r=new Zl(I,A,t);return n?(r.next=n.next,r.prev=n,n.next.prev=r,n.next=r):(r.prev=r,r.next=r),r}function bQ(I){I.next.prev=I.prev,I.prev.next=I.next,I.prevZ&&(I.prevZ.nextZ=I.nextZ),I.nextZ&&(I.nextZ.prevZ=I.prevZ)}function Zl(I,A,t){this.i=I,this.x=A,this.y=t,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function rf(I,A,t,n){let r=0;for(let a=A,B=t-n;a<t;a+=n)r+=(I[B]-I[a])*(I[a+1]+I[B+1]),B=a;return r}class iC{static area(A){const t=A.length;let n=0;for(let r=t-1,a=0;a<t;r=a++)n+=A[r].x*A[a].y-A[a].x*A[r].y;return n*.5}static isClockWise(A){return iC.area(A)<0}static triangulateShape(A,t){const n=[],r=[],a=[];Gd(A),Fd(n,A);let B=A.length;t.forEach(Gd);for(let y=0;y<t.length;y++)r.push(B),B+=t[y].length,Fd(n,t[y]);const Q=Hu.triangulate(n,r);for(let y=0;y<Q.length;y+=3)a.push(Q.slice(y,y+3));return a}}function Gd(I){const A=I.length;A>2&&I[A-1].equals(I[0])&&I.pop()}function Fd(I,A){for(let t=0;t<A.length;t++)I.push(A[t].x),I.push(A[t].y)}class Rh extends li{constructor(A=new YB([new Ot(.5,.5),new Ot(-.5,.5),new Ot(-.5,-.5),new Ot(.5,-.5)]),t={}){super(),this.type="ExtrudeGeometry",this.parameters={shapes:A,options:t},A=Array.isArray(A)?A:[A];const n=this,r=[],a=[];for(let Q=0,y=A.length;Q<y;Q++){const M=A[Q];B(M)}this.setAttribute("position",new vt(r,3)),this.setAttribute("uv",new vt(a,2)),this.computeVertexNormals();function B(Q){const y=[],M=t.curveSegments!==void 0?t.curveSegments:12,K=t.steps!==void 0?t.steps:1,W=t.depth!==void 0?t.depth:1;let V=t.bevelEnabled!==void 0?t.bevelEnabled:!0,X=t.bevelThickness!==void 0?t.bevelThickness:.2,iA=t.bevelSize!==void 0?t.bevelSize:X-.1,BA=t.bevelOffset!==void 0?t.bevelOffset:0,nA=t.bevelSegments!==void 0?t.bevelSegments:3;const tA=t.extrudePath,RA=t.UVGenerator!==void 0?t.UVGenerator:sf;let mA,kA=!1,_e,ae,fe,Je;tA&&(mA=tA.getSpacedPoints(K),kA=!0,V=!1,_e=tA.computeFrenetFrames(K,!1),ae=new Ee,fe=new Ee,Je=new Ee),V||(nA=0,X=0,iA=0,BA=0);const zA=Q.extractPoints(M);let KA=zA.shape;const tt=zA.holes;if(!iC.isClockWise(KA)){KA=KA.reverse();for(let qt=0,ui=tt.length;qt<ui;qt++){const ei=tt[qt];iC.isClockWise(ei)&&(tt[qt]=ei.reverse())}}const Ze=iC.triangulateShape(KA,tt),yt=KA;for(let qt=0,ui=tt.length;qt<ui;qt++){const ei=tt[qt];KA=KA.concat(ei)}function jt(qt,ui,ei){return ui||console.error("THREE.ExtrudeGeometry: vec does not exist"),qt.clone().addScaledVector(ui,ei)}const oi=KA.length,Hi=Ze.length;function Nt(qt,ui,ei){let Ji,Ei,pn;const so=qt.x-ui.x,we=qt.y-ui.y,VA=ei.x-qt.x,dt=ei.y-qt.y,Ai=so*so+we*we,Ci=so*dt-we*VA;if(Math.abs(Ci)>Number.EPSILON){const ri=Math.sqrt(Ai),$n=Math.sqrt(VA*VA+dt*dt),Xi=ui.x-we/ri,Zi=ui.y+so/ri,Wo=ei.x-dt/$n,Ti=ei.y+VA/$n,jn=((Wo-Xi)*dt-(Ti-Zi)*VA)/(so*dt-we*VA);Ji=Xi+so*jn-qt.x,Ei=Zi+we*jn-qt.y;const fr=Ji*Ji+Ei*Ei;if(fr<=2)return new Ot(Ji,Ei);pn=Math.sqrt(fr/2)}else{let ri=!1;so>Number.EPSILON?VA>Number.EPSILON&&(ri=!0):so<-Number.EPSILON?VA<-Number.EPSILON&&(ri=!0):Math.sign(we)===Math.sign(dt)&&(ri=!0),ri?(Ji=-we,Ei=so,pn=Math.sqrt(Ai)):(Ji=so,Ei=we,pn=Math.sqrt(Ai/2))}return new Ot(Ji/pn,Ei/pn)}const wi=[];for(let qt=0,ui=yt.length,ei=ui-1,Ji=qt+1;qt<ui;qt++,ei++,Ji++)ei===ui&&(ei=0),Ji===ui&&(Ji=0),wi[qt]=Nt(yt[qt],yt[ei],yt[Ji]);const Di=[];let Gn,Zo=wi.concat();for(let qt=0,ui=tt.length;qt<ui;qt++){const ei=tt[qt];Gn=[];for(let Ji=0,Ei=ei.length,pn=Ei-1,so=Ji+1;Ji<Ei;Ji++,pn++,so++)pn===Ei&&(pn=0),so===Ei&&(so=0),Gn[Ji]=Nt(ei[Ji],ei[pn],ei[so]);Di.push(Gn),Zo=Zo.concat(Gn)}for(let qt=0;qt<nA;qt++){const ui=qt/nA,ei=X*Math.cos(ui*Math.PI/2),Ji=iA*Math.sin(ui*Math.PI/2)+BA;for(let Ei=0,pn=yt.length;Ei<pn;Ei++){const so=jt(yt[Ei],wi[Ei],Ji);Fi(so.x,so.y,-ei)}for(let Ei=0,pn=tt.length;Ei<pn;Ei++){const so=tt[Ei];Gn=Di[Ei];for(let we=0,VA=so.length;we<VA;we++){const dt=jt(so[we],Gn[we],Ji);Fi(dt.x,dt.y,-ei)}}}const Is=iA+BA;for(let qt=0;qt<oi;qt++){const ui=V?jt(KA[qt],Zo[qt],Is):KA[qt];kA?(fe.copy(_e.normals[0]).multiplyScalar(ui.x),ae.copy(_e.binormals[0]).multiplyScalar(ui.y),Je.copy(mA[0]).add(fe).add(ae),Fi(Je.x,Je.y,Je.z)):Fi(ui.x,ui.y,0)}for(let qt=1;qt<=K;qt++)for(let ui=0;ui<oi;ui++){const ei=V?jt(KA[ui],Zo[ui],Is):KA[ui];kA?(fe.copy(_e.normals[qt]).multiplyScalar(ei.x),ae.copy(_e.binormals[qt]).multiplyScalar(ei.y),Je.copy(mA[qt]).add(fe).add(ae),Fi(Je.x,Je.y,Je.z)):Fi(ei.x,ei.y,W/K*qt)}for(let qt=nA-1;qt>=0;qt--){const ui=qt/nA,ei=X*Math.cos(ui*Math.PI/2),Ji=iA*Math.sin(ui*Math.PI/2)+BA;for(let Ei=0,pn=yt.length;Ei<pn;Ei++){const so=jt(yt[Ei],wi[Ei],Ji);Fi(so.x,so.y,W+ei)}for(let Ei=0,pn=tt.length;Ei<pn;Ei++){const so=tt[Ei];Gn=Di[Ei];for(let we=0,VA=so.length;we<VA;we++){const dt=jt(so[we],Gn[we],Ji);kA?Fi(dt.x,dt.y+mA[K-1].y,mA[K-1].x+ei):Fi(dt.x,dt.y,W+ei)}}}Pt(),Gi();function Pt(){const qt=r.length/3;if(V){let ui=0,ei=oi*ui;for(let Ji=0;Ji<Hi;Ji++){const Ei=Ze[Ji];jo(Ei[2]+ei,Ei[1]+ei,Ei[0]+ei)}ui=K+nA*2,ei=oi*ui;for(let Ji=0;Ji<Hi;Ji++){const Ei=Ze[Ji];jo(Ei[0]+ei,Ei[1]+ei,Ei[2]+ei)}}else{for(let ui=0;ui<Hi;ui++){const ei=Ze[ui];jo(ei[2],ei[1],ei[0])}for(let ui=0;ui<Hi;ui++){const ei=Ze[ui];jo(ei[0]+oi*K,ei[1]+oi*K,ei[2]+oi*K)}}n.addGroup(qt,r.length/3-qt,0)}function Gi(){const qt=r.length/3;let ui=0;Un(yt,ui),ui+=yt.length;for(let ei=0,Ji=tt.length;ei<Ji;ei++){const Ei=tt[ei];Un(Ei,ui),ui+=Ei.length}n.addGroup(qt,r.length/3-qt,1)}function Un(qt,ui){let ei=qt.length;for(;--ei>=0;){const Ji=ei;let Ei=ei-1;Ei<0&&(Ei=qt.length-1);for(let pn=0,so=K+nA*2;pn<so;pn++){const we=oi*pn,VA=oi*(pn+1),dt=ui+Ji+we,Ai=ui+Ei+we,Ci=ui+Ei+VA,ri=ui+Ji+VA;cr(dt,Ai,Ci,ri)}}}function Fi(qt,ui,ei){y.push(qt),y.push(ui),y.push(ei)}function jo(qt,ui,ei){st(qt),st(ui),st(ei);const Ji=r.length/3,Ei=RA.generateTopUV(n,r,Ji-3,Ji-2,Ji-1);wr(Ei[0]),wr(Ei[1]),wr(Ei[2])}function cr(qt,ui,ei,Ji){st(qt),st(ui),st(Ji),st(ui),st(ei),st(Ji);const Ei=r.length/3,pn=RA.generateSideWallUV(n,r,Ei-6,Ei-3,Ei-2,Ei-1);wr(pn[0]),wr(pn[1]),wr(pn[3]),wr(pn[1]),wr(pn[2]),wr(pn[3])}function st(qt){r.push(y[qt*3+0]),r.push(y[qt*3+1]),r.push(y[qt*3+2])}function wr(qt){a.push(qt.x),a.push(qt.y)}}}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}toJSON(){const A=super.toJSON(),t=this.parameters.shapes,n=this.parameters.options;return gf(t,n,A)}static fromJSON(A,t){const n=[];for(let a=0,B=A.shapes.length;a<B;a++){const Q=t[A.shapes[a]];n.push(Q)}const r=A.options.extrudePath;return r!==void 0&&(A.options.extrudePath=new yr[r.type]().fromJSON(r)),new Rh(n,A.options)}}const sf={generateTopUV:function(I,A,t,n,r){const a=A[t*3],B=A[t*3+1],Q=A[n*3],y=A[n*3+1],M=A[r*3],K=A[r*3+1];return[new Ot(a,B),new Ot(Q,y),new Ot(M,K)]},generateSideWallUV:function(I,A,t,n,r,a){const B=A[t*3],Q=A[t*3+1],y=A[t*3+2],M=A[n*3],K=A[n*3+1],W=A[n*3+2],V=A[r*3],X=A[r*3+1],iA=A[r*3+2],BA=A[a*3],nA=A[a*3+1],tA=A[a*3+2];return Math.abs(Q-K)<Math.abs(B-M)?[new Ot(B,1-y),new Ot(M,1-W),new Ot(V,1-iA),new Ot(BA,1-tA)]:[new Ot(Q,1-y),new Ot(K,1-W),new Ot(X,1-iA),new Ot(nA,1-tA)]}};function gf(I,A,t){if(t.shapes=[],Array.isArray(I))for(let n=0,r=I.length;n<r;n++){const a=I[n];t.shapes.push(a.uuid)}else t.shapes.push(I.uuid);return t.options=Object.assign({},A),A.extrudePath!==void 0&&(t.options.extrudePath=A.extrudePath.toJSON()),t}class Gh extends HI{constructor(A=1,t=0){const n=(1+Math.sqrt(5))/2,r=[-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1],a=[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1];super(r,a,A,t),this.type="IcosahedronGeometry",this.parameters={radius:A,detail:t}}static fromJSON(A){return new Gh(A.radius,A.detail)}}class kQ extends HI{constructor(A=1,t=0){const n=[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],r=[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2];super(n,r,A,t),this.type="OctahedronGeometry",this.parameters={radius:A,detail:t}}static fromJSON(A){return new kQ(A.radius,A.detail)}}class Fh extends li{constructor(A=.5,t=1,n=32,r=1,a=0,B=Math.PI*2){super(),this.type="RingGeometry",this.parameters={innerRadius:A,outerRadius:t,thetaSegments:n,phiSegments:r,thetaStart:a,thetaLength:B},n=Math.max(3,n),r=Math.max(1,r);const Q=[],y=[],M=[],K=[];let W=A;const V=(t-A)/r,X=new Ee,iA=new Ot;for(let BA=0;BA<=r;BA++){for(let nA=0;nA<=n;nA++){const tA=a+nA/n*B;X.x=W*Math.cos(tA),X.y=W*Math.sin(tA),y.push(X.x,X.y,X.z),M.push(0,0,1),iA.x=(X.x/t+1)/2,iA.y=(X.y/t+1)/2,K.push(iA.x,iA.y)}W+=V}for(let BA=0;BA<r;BA++){const nA=BA*(n+1);for(let tA=0;tA<n;tA++){const RA=tA+nA,mA=RA,kA=RA+n+1,_e=RA+n+2,ae=RA+1;Q.push(mA,kA,ae),Q.push(kA,_e,ae)}}this.setIndex(Q),this.setAttribute("position",new vt(y,3)),this.setAttribute("normal",new vt(M,3)),this.setAttribute("uv",new vt(K,2))}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new Fh(A.innerRadius,A.outerRadius,A.thetaSegments,A.phiSegments,A.thetaStart,A.thetaLength)}}class vh extends li{constructor(A=new YB([new Ot(0,.5),new Ot(-.5,-.5),new Ot(.5,-.5)]),t=12){super(),this.type="ShapeGeometry",this.parameters={shapes:A,curveSegments:t};const n=[],r=[],a=[],B=[];let Q=0,y=0;if(Array.isArray(A)===!1)M(A);else for(let K=0;K<A.length;K++)M(A[K]),this.addGroup(Q,y,K),Q+=y,y=0;this.setIndex(n),this.setAttribute("position",new vt(r,3)),this.setAttribute("normal",new vt(a,3)),this.setAttribute("uv",new vt(B,2));function M(K){const W=r.length/3,V=K.extractPoints(t);let X=V.shape;const iA=V.holes;iC.isClockWise(X)===!1&&(X=X.reverse());for(let nA=0,tA=iA.length;nA<tA;nA++){const RA=iA[nA];iC.isClockWise(RA)===!0&&(iA[nA]=RA.reverse())}const BA=iC.triangulateShape(X,iA);for(let nA=0,tA=iA.length;nA<tA;nA++){const RA=iA[nA];X=X.concat(RA)}for(let nA=0,tA=X.length;nA<tA;nA++){const RA=X[nA];r.push(RA.x,RA.y,0),a.push(0,0,1),B.push(RA.x,RA.y)}for(let nA=0,tA=BA.length;nA<tA;nA++){const RA=BA[nA],mA=RA[0]+W,kA=RA[1]+W,_e=RA[2]+W;n.push(mA,kA,_e),y+=3}}}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}toJSON(){const A=super.toJSON(),t=this.parameters.shapes;return af(t,A)}static fromJSON(A,t){const n=[];for(let r=0,a=A.shapes.length;r<a;r++){const B=t[A.shapes[r]];n.push(B)}return new vh(n,A.curveSegments)}}function af(I,A){if(A.shapes=[],Array.isArray(I))for(let t=0,n=I.length;t<n;t++){const r=I[t];A.shapes.push(r.uuid)}else A.shapes.push(I.uuid);return A}class _Q extends li{constructor(A=1,t=32,n=16,r=0,a=Math.PI*2,B=0,Q=Math.PI){super(),this.type="SphereGeometry",this.parameters={radius:A,widthSegments:t,heightSegments:n,phiStart:r,phiLength:a,thetaStart:B,thetaLength:Q},t=Math.max(3,Math.floor(t)),n=Math.max(2,Math.floor(n));const y=Math.min(B+Q,Math.PI);let M=0;const K=[],W=new Ee,V=new Ee,X=[],iA=[],BA=[],nA=[];for(let tA=0;tA<=n;tA++){const RA=[],mA=tA/n;let kA=0;tA===0&&B===0?kA=.5/t:tA===n&&y===Math.PI&&(kA=-.5/t);for(let _e=0;_e<=t;_e++){const ae=_e/t;W.x=-A*Math.cos(r+ae*a)*Math.sin(B+mA*Q),W.y=A*Math.cos(B+mA*Q),W.z=A*Math.sin(r+ae*a)*Math.sin(B+mA*Q),iA.push(W.x,W.y,W.z),V.copy(W).normalize(),BA.push(V.x,V.y,V.z),nA.push(ae+kA,1-mA),RA.push(M++)}K.push(RA)}for(let tA=0;tA<n;tA++)for(let RA=0;RA<t;RA++){const mA=K[tA][RA+1],kA=K[tA][RA],_e=K[tA+1][RA],ae=K[tA+1][RA+1];(tA!==0||B>0)&&X.push(mA,kA,ae),(tA!==n-1||y<Math.PI)&&X.push(kA,_e,ae)}this.setIndex(X),this.setAttribute("position",new vt(iA,3)),this.setAttribute("normal",new vt(BA,3)),this.setAttribute("uv",new vt(nA,2))}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new _Q(A.radius,A.widthSegments,A.heightSegments,A.phiStart,A.phiLength,A.thetaStart,A.thetaLength)}}class Nh extends HI{constructor(A=1,t=0){const n=[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],r=[2,1,0,0,3,2,1,3,0,2,3,1];super(n,r,A,t),this.type="TetrahedronGeometry",this.parameters={radius:A,detail:t}}static fromJSON(A){return new Nh(A.radius,A.detail)}}class Uh extends li{constructor(A=1,t=.4,n=12,r=48,a=Math.PI*2){super(),this.type="TorusGeometry",this.parameters={radius:A,tube:t,radialSegments:n,tubularSegments:r,arc:a},n=Math.floor(n),r=Math.floor(r);const B=[],Q=[],y=[],M=[],K=new Ee,W=new Ee,V=new Ee;for(let X=0;X<=n;X++)for(let iA=0;iA<=r;iA++){const BA=iA/r*a,nA=X/n*Math.PI*2;W.x=(A+t*Math.cos(nA))*Math.cos(BA),W.y=(A+t*Math.cos(nA))*Math.sin(BA),W.z=t*Math.sin(nA),Q.push(W.x,W.y,W.z),K.x=A*Math.cos(BA),K.y=A*Math.sin(BA),V.subVectors(W,K).normalize(),y.push(V.x,V.y,V.z),M.push(iA/r),M.push(X/n)}for(let X=1;X<=n;X++)for(let iA=1;iA<=r;iA++){const BA=(r+1)*X+iA-1,nA=(r+1)*(X-1)+iA-1,tA=(r+1)*(X-1)+iA,RA=(r+1)*X+iA;B.push(BA,nA,RA),B.push(nA,tA,RA)}this.setIndex(B),this.setAttribute("position",new vt(Q,3)),this.setAttribute("normal",new vt(y,3)),this.setAttribute("uv",new vt(M,2))}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new Uh(A.radius,A.tube,A.radialSegments,A.tubularSegments,A.arc)}}class Lh extends li{constructor(A=1,t=.4,n=64,r=8,a=2,B=3){super(),this.type="TorusKnotGeometry",this.parameters={radius:A,tube:t,tubularSegments:n,radialSegments:r,p:a,q:B},n=Math.floor(n),r=Math.floor(r);const Q=[],y=[],M=[],K=[],W=new Ee,V=new Ee,X=new Ee,iA=new Ee,BA=new Ee,nA=new Ee,tA=new Ee;for(let mA=0;mA<=n;++mA){const kA=mA/n*a*Math.PI*2;RA(kA,a,B,A,X),RA(kA+.01,a,B,A,iA),nA.subVectors(iA,X),tA.addVectors(iA,X),BA.crossVectors(nA,tA),tA.crossVectors(BA,nA),BA.normalize(),tA.normalize();for(let _e=0;_e<=r;++_e){const ae=_e/r*Math.PI*2,fe=-t*Math.cos(ae),Je=t*Math.sin(ae);W.x=X.x+(fe*tA.x+Je*BA.x),W.y=X.y+(fe*tA.y+Je*BA.y),W.z=X.z+(fe*tA.z+Je*BA.z),y.push(W.x,W.y,W.z),V.subVectors(W,X).normalize(),M.push(V.x,V.y,V.z),K.push(mA/n),K.push(_e/r)}}for(let mA=1;mA<=n;mA++)for(let kA=1;kA<=r;kA++){const _e=(r+1)*(mA-1)+(kA-1),ae=(r+1)*mA+(kA-1),fe=(r+1)*mA+kA,Je=(r+1)*(mA-1)+kA;Q.push(_e,ae,Je),Q.push(ae,fe,Je)}this.setIndex(Q),this.setAttribute("position",new vt(y,3)),this.setAttribute("normal",new vt(M,3)),this.setAttribute("uv",new vt(K,2));function RA(mA,kA,_e,ae,fe){const Je=Math.cos(mA),zA=Math.sin(mA),KA=_e/kA*mA,tt=Math.cos(KA);fe.x=ae*(2+tt)*.5*Je,fe.y=ae*(2+tt)*zA*.5,fe.z=ae*Math.sin(KA)*.5}}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}static fromJSON(A){return new Lh(A.radius,A.tube,A.tubularSegments,A.radialSegments,A.p,A.q)}}class xh extends li{constructor(A=new Do(new Ee(-1,-1,0),new Ee(-1,1,0),new Ee(1,1,0)),t=64,n=1,r=8,a=!1){super(),this.type="TubeGeometry",this.parameters={path:A,tubularSegments:t,radius:n,radialSegments:r,closed:a};const B=A.computeFrenetFrames(t,a);this.tangents=B.tangents,this.normals=B.normals,this.binormals=B.binormals;const Q=new Ee,y=new Ee,M=new Ot;let K=new Ee;const W=[],V=[],X=[],iA=[];BA(),this.setIndex(iA),this.setAttribute("position",new vt(W,3)),this.setAttribute("normal",new vt(V,3)),this.setAttribute("uv",new vt(X,2));function BA(){for(let mA=0;mA<t;mA++)nA(mA);nA(a===!1?t:0),RA(),tA()}function nA(mA){K=A.getPointAt(mA/t,K);const kA=B.normals[mA],_e=B.binormals[mA];for(let ae=0;ae<=r;ae++){const fe=ae/r*Math.PI*2,Je=Math.sin(fe),zA=-Math.cos(fe);y.x=zA*kA.x+Je*_e.x,y.y=zA*kA.y+Je*_e.y,y.z=zA*kA.z+Je*_e.z,y.normalize(),V.push(y.x,y.y,y.z),Q.x=K.x+n*y.x,Q.y=K.y+n*y.y,Q.z=K.z+n*y.z,W.push(Q.x,Q.y,Q.z)}}function tA(){for(let mA=1;mA<=t;mA++)for(let kA=1;kA<=r;kA++){const _e=(r+1)*(mA-1)+(kA-1),ae=(r+1)*mA+(kA-1),fe=(r+1)*mA+kA,Je=(r+1)*(mA-1)+kA;iA.push(_e,ae,Je),iA.push(ae,fe,Je)}}function RA(){for(let mA=0;mA<=t;mA++)for(let kA=0;kA<=r;kA++)M.x=mA/t,M.y=kA/r,X.push(M.x,M.y)}}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}toJSON(){const A=super.toJSON();return A.path=this.parameters.path.toJSON(),A}static fromJSON(A){return new xh(new yr[A.path.type]().fromJSON(A.path),A.tubularSegments,A.radius,A.radialSegments,A.closed)}}class vd extends li{constructor(A=null){if(super(),this.type="WireframeGeometry",this.parameters={geometry:A},A!==null){const t=[],n=new Set,r=new Ee,a=new Ee;if(A.index!==null){const B=A.attributes.position,Q=A.index;let y=A.groups;y.length===0&&(y=[{start:0,count:Q.count,materialIndex:0}]);for(let M=0,K=y.length;M<K;++M){const W=y[M],V=W.start,X=W.count;for(let iA=V,BA=V+X;iA<BA;iA+=3)for(let nA=0;nA<3;nA++){const tA=Q.getX(iA+nA),RA=Q.getX(iA+(nA+1)%3);r.fromBufferAttribute(B,tA),a.fromBufferAttribute(B,RA),Nd(r,a,n)===!0&&(t.push(r.x,r.y,r.z),t.push(a.x,a.y,a.z))}}}else{const B=A.attributes.position;for(let Q=0,y=B.count/3;Q<y;Q++)for(let M=0;M<3;M++){const K=3*Q+M,W=3*Q+(M+1)%3;r.fromBufferAttribute(B,K),a.fromBufferAttribute(B,W),Nd(r,a,n)===!0&&(t.push(r.x,r.y,r.z),t.push(a.x,a.y,a.z))}}this.setAttribute("position",new vt(t,3))}}copy(A){return super.copy(A),this.parameters=Object.assign({},A.parameters),this}}function Nd(I,A,t){const n=`${I.x},${I.y},${I.z}-${A.x},${A.y},${A.z}`,r=`${A.x},${A.y},${A.z}-${I.x},${I.y},${I.z}`;return t.has(n)===!0||t.has(r)===!0?!1:(t.add(n),t.add(r),!0)}var Ud=Object.freeze({__proto__:null,BoxGeometry:ot,CapsuleGeometry:Bg,CircleGeometry:eC,ConeGeometry:Pa,CylinderGeometry:tC,DodecahedronGeometry:TB,EdgesGeometry:UQ,ExtrudeGeometry:Rh,IcosahedronGeometry:Gh,LatheGeometry:Mg,OctahedronGeometry:kQ,PlaneGeometry:EI,PolyhedronGeometry:HI,RingGeometry:Fh,ShapeGeometry:vh,SphereGeometry:_Q,TetrahedronGeometry:Nh,TorusGeometry:Uh,TorusKnotGeometry:Lh,TubeGeometry:xh,WireframeGeometry:vd});class Ld extends FA{constructor(A){super(),this.isShadowMaterial=!0,this.type="ShadowMaterial",this.color=new ve(0),this.transparent=!0,this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.fog=A.fog,this}}class xd extends di{constructor(A){super(A),this.isRawShaderMaterial=!0,this.type="RawShaderMaterial"}}class jl extends FA{constructor(A){super(),this.isMeshStandardMaterial=!0,this.defines={STANDARD:""},this.type="MeshStandardMaterial",this.color=new ve(16777215),this.roughness=1,this.metalness=0,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ve(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Cr,this.normalScale=new Ot(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.roughnessMap=null,this.metalnessMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Er,this.envMapIntensity=1,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.defines={STANDARD:""},this.color.copy(A.color),this.roughness=A.roughness,this.metalness=A.metalness,this.map=A.map,this.lightMap=A.lightMap,this.lightMapIntensity=A.lightMapIntensity,this.aoMap=A.aoMap,this.aoMapIntensity=A.aoMapIntensity,this.emissive.copy(A.emissive),this.emissiveMap=A.emissiveMap,this.emissiveIntensity=A.emissiveIntensity,this.bumpMap=A.bumpMap,this.bumpScale=A.bumpScale,this.normalMap=A.normalMap,this.normalMapType=A.normalMapType,this.normalScale.copy(A.normalScale),this.displacementMap=A.displacementMap,this.displacementScale=A.displacementScale,this.displacementBias=A.displacementBias,this.roughnessMap=A.roughnessMap,this.metalnessMap=A.metalnessMap,this.alphaMap=A.alphaMap,this.envMap=A.envMap,this.envMapRotation.copy(A.envMapRotation),this.envMapIntensity=A.envMapIntensity,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.wireframeLinecap=A.wireframeLinecap,this.wireframeLinejoin=A.wireframeLinejoin,this.flatShading=A.flatShading,this.fog=A.fog,this}}class bd extends jl{constructor(A){super(),this.isMeshPhysicalMaterial=!0,this.defines={STANDARD:"",PHYSICAL:""},this.type="MeshPhysicalMaterial",this.anisotropyRotation=0,this.anisotropyMap=null,this.clearcoatMap=null,this.clearcoatRoughness=0,this.clearcoatRoughnessMap=null,this.clearcoatNormalScale=new Ot(1,1),this.clearcoatNormalMap=null,this.ior=1.5,Object.defineProperty(this,"reflectivity",{get:function(){return Co(2.5*(this.ior-1)/(this.ior+1),0,1)},set:function(t){this.ior=(1+.4*t)/(1-.4*t)}}),this.iridescenceMap=null,this.iridescenceIOR=1.3,this.iridescenceThicknessRange=[100,400],this.iridescenceThicknessMap=null,this.sheenColor=new ve(0),this.sheenColorMap=null,this.sheenRoughness=1,this.sheenRoughnessMap=null,this.transmissionMap=null,this.thickness=0,this.thicknessMap=null,this.attenuationDistance=1/0,this.attenuationColor=new ve(1,1,1),this.specularIntensity=1,this.specularIntensityMap=null,this.specularColor=new ve(1,1,1),this.specularColorMap=null,this._anisotropy=0,this._clearcoat=0,this._dispersion=0,this._iridescence=0,this._sheen=0,this._transmission=0,this.setValues(A)}get anisotropy(){return this._anisotropy}set anisotropy(A){this._anisotropy>0!=A>0&&this.version++,this._anisotropy=A}get clearcoat(){return this._clearcoat}set clearcoat(A){this._clearcoat>0!=A>0&&this.version++,this._clearcoat=A}get iridescence(){return this._iridescence}set iridescence(A){this._iridescence>0!=A>0&&this.version++,this._iridescence=A}get dispersion(){return this._dispersion}set dispersion(A){this._dispersion>0!=A>0&&this.version++,this._dispersion=A}get sheen(){return this._sheen}set sheen(A){this._sheen>0!=A>0&&this.version++,this._sheen=A}get transmission(){return this._transmission}set transmission(A){this._transmission>0!=A>0&&this.version++,this._transmission=A}copy(A){return super.copy(A),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=A.anisotropy,this.anisotropyRotation=A.anisotropyRotation,this.anisotropyMap=A.anisotropyMap,this.clearcoat=A.clearcoat,this.clearcoatMap=A.clearcoatMap,this.clearcoatRoughness=A.clearcoatRoughness,this.clearcoatRoughnessMap=A.clearcoatRoughnessMap,this.clearcoatNormalMap=A.clearcoatNormalMap,this.clearcoatNormalScale.copy(A.clearcoatNormalScale),this.dispersion=A.dispersion,this.ior=A.ior,this.iridescence=A.iridescence,this.iridescenceMap=A.iridescenceMap,this.iridescenceIOR=A.iridescenceIOR,this.iridescenceThicknessRange=[...A.iridescenceThicknessRange],this.iridescenceThicknessMap=A.iridescenceThicknessMap,this.sheen=A.sheen,this.sheenColor.copy(A.sheenColor),this.sheenColorMap=A.sheenColorMap,this.sheenRoughness=A.sheenRoughness,this.sheenRoughnessMap=A.sheenRoughnessMap,this.transmission=A.transmission,this.transmissionMap=A.transmissionMap,this.thickness=A.thickness,this.thicknessMap=A.thicknessMap,this.attenuationDistance=A.attenuationDistance,this.attenuationColor.copy(A.attenuationColor),this.specularIntensity=A.specularIntensity,this.specularIntensityMap=A.specularIntensityMap,this.specularColor.copy(A.specularColor),this.specularColorMap=A.specularColorMap,this}}class kd extends FA{constructor(A){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new ve(16777215),this.specular=new ve(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ve(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Cr,this.normalScale=new Ot(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Er,this.combine=gA,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.specular.copy(A.specular),this.shininess=A.shininess,this.map=A.map,this.lightMap=A.lightMap,this.lightMapIntensity=A.lightMapIntensity,this.aoMap=A.aoMap,this.aoMapIntensity=A.aoMapIntensity,this.emissive.copy(A.emissive),this.emissiveMap=A.emissiveMap,this.emissiveIntensity=A.emissiveIntensity,this.bumpMap=A.bumpMap,this.bumpScale=A.bumpScale,this.normalMap=A.normalMap,this.normalMapType=A.normalMapType,this.normalScale.copy(A.normalScale),this.displacementMap=A.displacementMap,this.displacementScale=A.displacementScale,this.displacementBias=A.displacementBias,this.specularMap=A.specularMap,this.alphaMap=A.alphaMap,this.envMap=A.envMap,this.envMapRotation.copy(A.envMapRotation),this.combine=A.combine,this.reflectivity=A.reflectivity,this.refractionRatio=A.refractionRatio,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.wireframeLinecap=A.wireframeLinecap,this.wireframeLinejoin=A.wireframeLinejoin,this.flatShading=A.flatShading,this.fog=A.fog,this}}class _d extends FA{constructor(A){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new ve(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ve(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Cr,this.normalScale=new Ot(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.gradientMap=A.gradientMap,this.lightMap=A.lightMap,this.lightMapIntensity=A.lightMapIntensity,this.aoMap=A.aoMap,this.aoMapIntensity=A.aoMapIntensity,this.emissive.copy(A.emissive),this.emissiveMap=A.emissiveMap,this.emissiveIntensity=A.emissiveIntensity,this.bumpMap=A.bumpMap,this.bumpScale=A.bumpScale,this.normalMap=A.normalMap,this.normalMapType=A.normalMapType,this.normalScale.copy(A.normalScale),this.displacementMap=A.displacementMap,this.displacementScale=A.displacementScale,this.displacementBias=A.displacementBias,this.alphaMap=A.alphaMap,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.wireframeLinecap=A.wireframeLinecap,this.wireframeLinejoin=A.wireframeLinejoin,this.fog=A.fog,this}}class Td extends FA{constructor(A){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Cr,this.normalScale=new Ot(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(A)}copy(A){return super.copy(A),this.bumpMap=A.bumpMap,this.bumpScale=A.bumpScale,this.normalMap=A.normalMap,this.normalMapType=A.normalMapType,this.normalScale.copy(A.normalScale),this.displacementMap=A.displacementMap,this.displacementScale=A.displacementScale,this.displacementBias=A.displacementBias,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.flatShading=A.flatShading,this}}class Kd extends FA{constructor(A){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new ve(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new ve(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Cr,this.normalScale=new Ot(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new Er,this.combine=gA,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.color.copy(A.color),this.map=A.map,this.lightMap=A.lightMap,this.lightMapIntensity=A.lightMapIntensity,this.aoMap=A.aoMap,this.aoMapIntensity=A.aoMapIntensity,this.emissive.copy(A.emissive),this.emissiveMap=A.emissiveMap,this.emissiveIntensity=A.emissiveIntensity,this.bumpMap=A.bumpMap,this.bumpScale=A.bumpScale,this.normalMap=A.normalMap,this.normalMapType=A.normalMapType,this.normalScale.copy(A.normalScale),this.displacementMap=A.displacementMap,this.displacementScale=A.displacementScale,this.displacementBias=A.displacementBias,this.specularMap=A.specularMap,this.alphaMap=A.alphaMap,this.envMap=A.envMap,this.envMapRotation.copy(A.envMapRotation),this.combine=A.combine,this.reflectivity=A.reflectivity,this.refractionRatio=A.refractionRatio,this.wireframe=A.wireframe,this.wireframeLinewidth=A.wireframeLinewidth,this.wireframeLinecap=A.wireframeLinecap,this.wireframeLinejoin=A.wireframeLinejoin,this.flatShading=A.flatShading,this.fog=A.fog,this}}class Jd extends FA{constructor(A){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new ve(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=Cr,this.normalScale=new Ot(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(A)}copy(A){return super.copy(A),this.defines={MATCAP:""},this.color.copy(A.color),this.matcap=A.matcap,this.map=A.map,this.bumpMap=A.bumpMap,this.bumpScale=A.bumpScale,this.normalMap=A.normalMap,this.normalMapType=A.normalMapType,this.normalScale.copy(A.normalScale),this.displacementMap=A.displacementMap,this.displacementScale=A.displacementScale,this.displacementBias=A.displacementBias,this.alphaMap=A.alphaMap,this.flatShading=A.flatShading,this.fog=A.fog,this}}class Yd extends P{constructor(A){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(A)}copy(A){return super.copy(A),this.scale=A.scale,this.dashSize=A.dashSize,this.gapSize=A.gapSize,this}}function PB(I,A,t){return!I||!t&&I.constructor===A?I:typeof A.BYTES_PER_ELEMENT=="number"?new A(I):Array.prototype.slice.call(I)}function Hd(I){return ArrayBuffer.isView(I)&&!(I instanceof DataView)}function Pd(I){function A(r,a){return I[r]-I[a]}const t=I.length,n=new Array(t);for(let r=0;r!==t;++r)n[r]=r;return n.sort(A),n}function Xl(I,A,t){const n=I.length,r=new I.constructor(n);for(let a=0,B=0;B!==n;++a){const Q=t[a]*A;for(let y=0;y!==A;++y)r[B++]=I[Q+y]}return r}function zl(I,A,t,n){let r=1,a=I[0];for(;a!==void 0&&a[n]===void 0;)a=I[r++];if(a===void 0)return;let B=a[n];if(B!==void 0)if(Array.isArray(B))do B=a[n],B!==void 0&&(A.push(a.time),t.push.apply(t,B)),a=I[r++];while(a!==void 0);else if(B.toArray!==void 0)do B=a[n],B!==void 0&&(A.push(a.time),B.toArray(t,t.length)),a=I[r++];while(a!==void 0);else do B=a[n],B!==void 0&&(A.push(a.time),t.push(B)),a=I[r++];while(a!==void 0)}function If(I,A,t,n,r=30){const a=I.clone();a.name=A;const B=[];for(let y=0;y<a.tracks.length;++y){const M=a.tracks[y],K=M.getValueSize(),W=[],V=[];for(let X=0;X<M.times.length;++X){const iA=M.times[X]*r;if(!(iA<t||iA>=n)){W.push(M.times[X]);for(let BA=0;BA<K;++BA)V.push(M.values[X*K+BA])}}W.length!==0&&(M.times=PB(W,M.times.constructor),M.values=PB(V,M.values.constructor),B.push(M))}a.tracks=B;let Q=1/0;for(let y=0;y<a.tracks.length;++y)Q>a.tracks[y].times[0]&&(Q=a.tracks[y].times[0]);for(let y=0;y<a.tracks.length;++y)a.tracks[y].shift(-1*Q);return a.resetDuration(),a}function Cf(I,A=0,t=I,n=30){n<=0&&(n=30);const r=t.tracks.length,a=A/n;for(let B=0;B<r;++B){const Q=t.tracks[B],y=Q.ValueTypeName;if(y==="bool"||y==="string")continue;const M=I.tracks.find(function(tA){return tA.name===Q.name&&tA.ValueTypeName===y});if(M===void 0)continue;let K=0;const W=Q.getValueSize();Q.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(K=W/3);let V=0;const X=M.getValueSize();M.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline&&(V=X/3);const iA=Q.times.length-1;let BA;if(a<=Q.times[0]){const tA=K,RA=W-K;BA=Q.values.slice(tA,RA)}else if(a>=Q.times[iA]){const tA=iA*W+K,RA=tA+W-K;BA=Q.values.slice(tA,RA)}else{const tA=Q.createInterpolant(),RA=K,mA=W-K;tA.evaluate(a),BA=tA.resultBuffer.slice(RA,mA)}y==="quaternion"&&new Us().fromArray(BA).normalize().conjugate().toArray(BA);const nA=M.times.length;for(let tA=0;tA<nA;++tA){const RA=tA*X+V;if(y==="quaternion")Us.multiplyQuaternionsFlat(M.values,RA,BA,0,M.values,RA);else{const mA=X-V*2;for(let kA=0;kA<mA;++kA)M.values[RA+kA]-=BA[kA]}}}return I.blendMode=Ia,I}const Bf={convertArray:PB,isTypedArray:Hd,getKeyframeOrder:Pd,sortedArray:Xl,flattenJSON:zl,subclip:If,makeClipAdditive:Cf};class TQ{constructor(A,t,n,r){this.parameterPositions=A,this._cachedIndex=0,this.resultBuffer=r!==void 0?r:new t.constructor(n),this.sampleValues=t,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(A){const t=this.parameterPositions;let n=this._cachedIndex,r=t[n],a=t[n-1];A:{e:{let B;t:{i:if(!(A<r)){for(let Q=n+2;;){if(r===void 0){if(A<a)break i;return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}if(n===Q)break;if(a=r,r=t[++n],A<r)break e}B=t.length;break t}if(!(A>=a)){const Q=t[1];A<Q&&(n=2,a=Q);for(let y=n-2;;){if(a===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(n===y)break;if(r=a,a=t[--n-1],A>=a)break e}B=n,n=0;break t}break A}for(;n<B;){const Q=n+B>>>1;A<t[Q]?B=Q:n=Q+1}if(r=t[n],a=t[n-1],a===void 0)return this._cachedIndex=0,this.copySampleValue_(0);if(r===void 0)return n=t.length,this._cachedIndex=n,this.copySampleValue_(n-1)}this._cachedIndex=n,this.intervalChanged_(n,a,r)}return this.interpolate_(n,a,A,r)}getSettings_(){return this.settings||this.DefaultSettings_}copySampleValue_(A){const t=this.resultBuffer,n=this.sampleValues,r=this.valueSize,a=A*r;for(let B=0;B!==r;++B)t[B]=n[a+B];return t}interpolate_(){throw new Error("call to abstract method")}intervalChanged_(){}}class Od extends TQ{constructor(A,t,n,r){super(A,t,n,r),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0,this.DefaultSettings_={endingStart:lg,endingEnd:lg}}intervalChanged_(A,t,n){const r=this.parameterPositions;let a=A-2,B=A+1,Q=r[a],y=r[B];if(Q===void 0)switch(this.getSettings_().endingStart){case rg:a=A,Q=2*t-n;break;case Lg:a=r.length-2,Q=t+r[a]-r[a+1];break;default:a=A,Q=n}if(y===void 0)switch(this.getSettings_().endingEnd){case rg:B=A,y=2*n-t;break;case Lg:B=1,y=n+r[1]-r[0];break;default:B=A-1,y=t}const M=(n-t)*.5,K=this.valueSize;this._weightPrev=M/(t-Q),this._weightNext=M/(y-n),this._offsetPrev=a*K,this._offsetNext=B*K}interpolate_(A,t,n,r){const a=this.resultBuffer,B=this.sampleValues,Q=this.valueSize,y=A*Q,M=y-Q,K=this._offsetPrev,W=this._offsetNext,V=this._weightPrev,X=this._weightNext,iA=(n-t)/(r-t),BA=iA*iA,nA=BA*iA,tA=-V*nA+2*V*BA-V*iA,RA=(1+V)*nA+(-1.5-2*V)*BA+(-.5+V)*iA+1,mA=(-1-X)*nA+(1.5+X)*BA+.5*iA,kA=X*nA-X*BA;for(let _e=0;_e!==Q;++_e)a[_e]=tA*B[K+_e]+RA*B[M+_e]+mA*B[y+_e]+kA*B[W+_e];return a}}class $l extends TQ{constructor(A,t,n,r){super(A,t,n,r)}interpolate_(A,t,n,r){const a=this.resultBuffer,B=this.sampleValues,Q=this.valueSize,y=A*Q,M=y-Q,K=(n-t)/(r-t),W=1-K;for(let V=0;V!==Q;++V)a[V]=B[M+V]*W+B[y+V]*K;return a}}class qd extends TQ{constructor(A,t,n,r){super(A,t,n,r)}interpolate_(A){return this.copySampleValue_(A-1)}}class PI{constructor(A,t,n,r){if(A===void 0)throw new Error("THREE.KeyframeTrack: track name is undefined");if(t===void 0||t.length===0)throw new Error("THREE.KeyframeTrack: no keyframes in track named "+A);this.name=A,this.times=PB(t,this.TimeBufferType),this.values=PB(n,this.ValueBufferType),this.setInterpolation(r||this.DefaultInterpolation)}static toJSON(A){const t=A.constructor;let n;if(t.toJSON!==this.toJSON)n=t.toJSON(A);else{n={name:A.name,times:PB(A.times,Array),values:PB(A.values,Array)};const r=A.getInterpolation();r!==A.DefaultInterpolation&&(n.interpolation=r)}return n.type=A.ValueTypeName,n}InterpolantFactoryMethodDiscrete(A){return new qd(this.times,this.values,this.getValueSize(),A)}InterpolantFactoryMethodLinear(A){return new $l(this.times,this.values,this.getValueSize(),A)}InterpolantFactoryMethodSmooth(A){return new Od(this.times,this.values,this.getValueSize(),A)}setInterpolation(A){let t;switch(A){case hg:t=this.InterpolantFactoryMethodDiscrete;break;case Xg:t=this.InterpolantFactoryMethodLinear;break;case aa:t=this.InterpolantFactoryMethodSmooth;break}if(t===void 0){const n="unsupported interpolation for "+this.ValueTypeName+" keyframe track named "+this.name;if(this.createInterpolant===void 0)if(A!==this.DefaultInterpolation)this.setInterpolation(this.DefaultInterpolation);else throw new Error(n);return console.warn("THREE.KeyframeTrack:",n),this}return this.createInterpolant=t,this}getInterpolation(){switch(this.createInterpolant){case this.InterpolantFactoryMethodDiscrete:return hg;case this.InterpolantFactoryMethodLinear:return Xg;case this.InterpolantFactoryMethodSmooth:return aa}}getValueSize(){return this.values.length/this.times.length}shift(A){if(A!==0){const t=this.times;for(let n=0,r=t.length;n!==r;++n)t[n]+=A}return this}scale(A){if(A!==1){const t=this.times;for(let n=0,r=t.length;n!==r;++n)t[n]*=A}return this}trim(A,t){const n=this.times,r=n.length;let a=0,B=r-1;for(;a!==r&&n[a]<A;)++a;for(;B!==-1&&n[B]>t;)--B;if(++B,a!==0||B!==r){a>=B&&(B=Math.max(B,1),a=B-1);const Q=this.getValueSize();this.times=n.slice(a,B),this.values=this.values.slice(a*Q,B*Q)}return this}validate(){let A=!0;const t=this.getValueSize();t-Math.floor(t)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),A=!1);const n=this.times,r=this.values,a=n.length;a===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),A=!1);let B=null;for(let Q=0;Q!==a;Q++){const y=n[Q];if(typeof y=="number"&&isNaN(y)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,Q,y),A=!1;break}if(B!==null&&B>y){console.error("THREE.KeyframeTrack: Out of order keys.",this,Q,y,B),A=!1;break}B=y}if(r!==void 0&&Hd(r))for(let Q=0,y=r.length;Q!==y;++Q){const M=r[Q];if(isNaN(M)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,Q,M),A=!1;break}}return A}optimize(){const A=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),r=this.getInterpolation()===aa,a=A.length-1;let B=1;for(let Q=1;Q<a;++Q){let y=!1;const M=A[Q],K=A[Q+1];if(M!==K&&(Q!==1||M!==A[0]))if(r)y=!0;else{const W=Q*n,V=W-n,X=W+n;for(let iA=0;iA!==n;++iA){const BA=t[W+iA];if(BA!==t[V+iA]||BA!==t[X+iA]){y=!0;break}}}if(y){if(Q!==B){A[B]=A[Q];const W=Q*n,V=B*n;for(let X=0;X!==n;++X)t[V+X]=t[W+X]}++B}}if(a>0){A[B]=A[a];for(let Q=a*n,y=B*n,M=0;M!==n;++M)t[y+M]=t[Q+M];++B}return B!==A.length?(this.times=A.slice(0,B),this.values=t.slice(0,B*n)):(this.times=A,this.values=t),this}clone(){const A=this.times.slice(),t=this.values.slice(),n=this.constructor,r=new n(this.name,A,t);return r.createInterpolant=this.createInterpolant,r}}PI.prototype.TimeBufferType=Float32Array,PI.prototype.ValueBufferType=Float32Array,PI.prototype.DefaultInterpolation=Xg;class OB extends PI{}OB.prototype.ValueTypeName="bool",OB.prototype.ValueBufferType=Array,OB.prototype.DefaultInterpolation=hg,OB.prototype.InterpolantFactoryMethodLinear=void 0,OB.prototype.InterpolantFactoryMethodSmooth=void 0;class Ad extends PI{}Ad.prototype.ValueTypeName="color";class KQ extends PI{}KQ.prototype.ValueTypeName="number";class Wd extends TQ{constructor(A,t,n,r){super(A,t,n,r)}interpolate_(A,t,n,r){const a=this.resultBuffer,B=this.sampleValues,Q=this.valueSize,y=(n-t)/(r-t);let M=A*Q;for(let K=M+Q;M!==K;M+=4)Us.slerpFlat(a,0,B,M-Q,B,M,y);return a}}class bE extends PI{InterpolantFactoryMethodLinear(A){return new Wd(this.times,this.values,this.getValueSize(),A)}}bE.prototype.ValueTypeName="quaternion",bE.prototype.DefaultInterpolation=Xg,bE.prototype.InterpolantFactoryMethodSmooth=void 0;class qB extends PI{}qB.prototype.ValueTypeName="string",qB.prototype.ValueBufferType=Array,qB.prototype.DefaultInterpolation=hg,qB.prototype.InterpolantFactoryMethodLinear=void 0,qB.prototype.InterpolantFactoryMethodSmooth=void 0;class JQ extends PI{}JQ.prototype.ValueTypeName="vector";class YQ{constructor(A="",t=-1,n=[],r=Rs){this.name=A,this.tracks=n,this.duration=t,this.blendMode=r,this.uuid=Yo(),this.duration<0&&this.resetDuration()}static parse(A){const t=[],n=A.tracks,r=1/(A.fps||1);for(let B=0,Q=n.length;B!==Q;++B)t.push(Qf(n[B]).scale(r));const a=new this(A.name,A.duration,t,A.blendMode);return a.uuid=A.uuid,a}static toJSON(A){const t=[],n=A.tracks,r={name:A.name,duration:A.duration,tracks:t,uuid:A.uuid,blendMode:A.blendMode};for(let a=0,B=n.length;a!==B;++a)t.push(PI.toJSON(n[a]));return r}static CreateFromMorphTargetSequence(A,t,n,r){const a=t.length,B=[];for(let Q=0;Q<a;Q++){let y=[],M=[];y.push((Q+a-1)%a,Q,(Q+1)%a),M.push(0,1,0);const K=Pd(y);y=Xl(y,1,K),M=Xl(M,1,K),!r&&y[0]===0&&(y.push(a),M.push(M[0])),B.push(new KQ(".morphTargetInfluences["+t[Q].name+"]",y,M).scale(1/n))}return new this(A,-1,B)}static findByName(A,t){let n=A;if(!Array.isArray(A)){const r=A;n=r.geometry&&r.geometry.animations||r.animations}for(let r=0;r<n.length;r++)if(n[r].name===t)return n[r];return null}static CreateClipsFromMorphTargetSequences(A,t,n){const r={},a=/^([\w-]*?)([\d]+)$/;for(let Q=0,y=A.length;Q<y;Q++){const M=A[Q],K=M.name.match(a);if(K&&K.length>1){const W=K[1];let V=r[W];V||(r[W]=V=[]),V.push(M)}}const B=[];for(const Q in r)B.push(this.CreateFromMorphTargetSequence(Q,r[Q],t,n));return B}static parseAnimation(A,t){if(!A)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;const n=function(W,V,X,iA,BA){if(X.length!==0){const nA=[],tA=[];zl(X,nA,tA,iA),nA.length!==0&&BA.push(new W(V,nA,tA))}},r=[],a=A.name||"default",B=A.fps||30,Q=A.blendMode;let y=A.length||-1;const M=A.hierarchy||[];for(let W=0;W<M.length;W++){const V=M[W].keys;if(!(!V||V.length===0))if(V[0].morphTargets){const X={};let iA;for(iA=0;iA<V.length;iA++)if(V[iA].morphTargets)for(let BA=0;BA<V[iA].morphTargets.length;BA++)X[V[iA].morphTargets[BA]]=-1;for(const BA in X){const nA=[],tA=[];for(let RA=0;RA!==V[iA].morphTargets.length;++RA){const mA=V[iA];nA.push(mA.time),tA.push(mA.morphTarget===BA?1:0)}r.push(new KQ(".morphTargetInfluence["+BA+"]",nA,tA))}y=X.length*B}else{const X=".bones["+t[W].name+"]";n(JQ,X+".position",V,"pos",r),n(bE,X+".quaternion",V,"rot",r),n(JQ,X+".scale",V,"scl",r)}}return r.length===0?null:new this(a,y,r,Q)}resetDuration(){const A=this.tracks;let t=0;for(let n=0,r=A.length;n!==r;++n){const a=this.tracks[n];t=Math.max(t,a.times[a.times.length-1])}return this.duration=t,this}trim(){for(let A=0;A<this.tracks.length;A++)this.tracks[A].trim(0,this.duration);return this}validate(){let A=!0;for(let t=0;t<this.tracks.length;t++)A=A&&this.tracks[t].validate();return A}optimize(){for(let A=0;A<this.tracks.length;A++)this.tracks[A].optimize();return this}clone(){const A=[];for(let t=0;t<this.tracks.length;t++)A.push(this.tracks[t].clone());return new this.constructor(this.name,this.duration,A,this.blendMode)}toJSON(){return this.constructor.toJSON(this)}}function Ef(I){switch(I.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return KQ;case"vector":case"vector2":case"vector3":case"vector4":return JQ;case"color":return Ad;case"quaternion":return bE;case"bool":case"boolean":return OB;case"string":return qB}throw new Error("THREE.KeyframeTrack: Unsupported typeName: "+I)}function Qf(I){if(I.type===void 0)throw new Error("THREE.KeyframeTrack: track type undefined, can not parse");const A=Ef(I.type);if(I.times===void 0){const t=[],n=[];zl(I.keys,t,n,"value"),I.times=t,I.values=n}return A.parse!==void 0?A.parse(I):new A(I.name,I.times,I.values,I.interpolation)}const UC={enabled:!1,files:{},add:function(I,A){this.enabled!==!1&&(this.files[I]=A)},get:function(I){if(this.enabled!==!1)return this.files[I]},remove:function(I){delete this.files[I]},clear:function(){this.files={}}};class ed{constructor(A,t,n){const r=this;let a=!1,B=0,Q=0,y;const M=[];this.onStart=void 0,this.onLoad=A,this.onProgress=t,this.onError=n,this.itemStart=function(K){Q++,a===!1&&r.onStart!==void 0&&r.onStart(K,B,Q),a=!0},this.itemEnd=function(K){B++,r.onProgress!==void 0&&r.onProgress(K,B,Q),B===Q&&(a=!1,r.onLoad!==void 0&&r.onLoad())},this.itemError=function(K){r.onError!==void 0&&r.onError(K)},this.resolveURL=function(K){return y?y(K):K},this.setURLModifier=function(K){return y=K,this},this.addHandler=function(K,W){return M.push(K,W),this},this.removeHandler=function(K){const W=M.indexOf(K);return W!==-1&&M.splice(W,2),this},this.getHandler=function(K){for(let W=0,V=M.length;W<V;W+=2){const X=M[W],iA=M[W+1];if(X.global&&(X.lastIndex=0),X.test(K))return iA}return null}}}const Vd=new ed;class Oa{constructor(A){this.manager=A!==void 0?A:Vd,this.crossOrigin="anonymous",this.withCredentials=!1,this.path="",this.resourcePath="",this.requestHeader={}}load(){}loadAsync(A,t){const n=this;return new Promise(function(r,a){n.load(A,r,t,a)})}parse(){}setCrossOrigin(A){return this.crossOrigin=A,this}setWithCredentials(A){return this.withCredentials=A,this}setPath(A){return this.path=A,this}setResourcePath(A){return this.resourcePath=A,this}setRequestHeader(A){return this.requestHeader=A,this}}Oa.DEFAULT_MATERIAL_NAME="__DEFAULT";const LC={};class cf extends Error{constructor(A,t){super(A),this.response=t}}class xC extends Oa{constructor(A){super(A)}load(A,t,n,r){A===void 0&&(A=""),this.path!==void 0&&(A=this.path+A),A=this.manager.resolveURL(A);const a=UC.get(A);if(a!==void 0)return this.manager.itemStart(A),setTimeout(()=>{t&&t(a),this.manager.itemEnd(A)},0),a;if(LC[A]!==void 0){LC[A].push({onLoad:t,onProgress:n,onError:r});return}LC[A]=[],LC[A].push({onLoad:t,onProgress:n,onError:r});const B=new Request(A,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),Q=this.mimeType,y=this.responseType;fetch(B).then(M=>{if(M.status===200||M.status===0){if(M.status===0&&console.warn("THREE.FileLoader: HTTP Status 0 received."),typeof ReadableStream>"u"||M.body===void 0||M.body.getReader===void 0)return M;const K=LC[A],W=M.body.getReader(),V=M.headers.get("X-File-Size")||M.headers.get("Content-Length"),X=V?parseInt(V):0,iA=X!==0;let BA=0;const nA=new ReadableStream({start(tA){RA();function RA(){W.read().then(({done:mA,value:kA})=>{if(mA)tA.close();else{BA+=kA.byteLength;const _e=new ProgressEvent("progress",{lengthComputable:iA,loaded:BA,total:X});for(let ae=0,fe=K.length;ae<fe;ae++){const Je=K[ae];Je.onProgress&&Je.onProgress(_e)}tA.enqueue(kA),RA()}})}}});return new Response(nA)}else throw new cf(`fetch for "${M.url}" responded with ${M.status}: ${M.statusText}`,M)}).then(M=>{switch(y){case"arraybuffer":return M.arrayBuffer();case"blob":return M.blob();case"document":return M.text().then(K=>new DOMParser().parseFromString(K,Q));case"json":return M.json();default:if(Q===void 0)return M.text();{const W=/charset="?([^;"\s]*)"?/i.exec(Q),V=W&&W[1]?W[1].toLowerCase():void 0,X=new TextDecoder(V);return M.arrayBuffer().then(iA=>X.decode(iA))}}}).then(M=>{UC.add(A,M);const K=LC[A];delete LC[A];for(let W=0,V=K.length;W<V;W++){const X=K[W];X.onLoad&&X.onLoad(M)}}).catch(M=>{const K=LC[A];if(K===void 0)throw this.manager.itemError(A),M;delete LC[A];for(let W=0,V=K.length;W<V;W++){const X=K[W];X.onError&&X.onError(M)}this.manager.itemError(A)}).finally(()=>{this.manager.itemEnd(A)}),this.manager.itemStart(A)}setResponseType(A){return this.responseType=A,this}setMimeType(A){return this.mimeType=A,this}}class hf extends Oa{constructor(A){super(A)}load(A,t,n,r){const a=this,B=new xC(this.manager);B.setPath(this.path),B.setRequestHeader(this.requestHeader),B.setWithCredentials(this.withCredentials),B.load(A,function(Q){try{t(a.parse(JSON.parse(Q)))}catch(y){r?r(y):console.error(y),a.manager.itemError(A)}},n,r)}parse(A){const t=[];for(let n=0;n<A.length;n++){const r=YQ.parse(A[n]);t.push(r)}return t}}class lf extends Oa{constructor(A){super(A)}load(A,t,n,r){const a=this,B=[],Q=new Yt,y=new xC(this.manager);y.setPath(this.path),y.setResponseType("arraybuffer"),y.setRequestHeader(this.requestHeader),y.setWithCredentials(a.withCredentials);let M=0;function K(W){y.load(A[W],function(V){const X=a.parse(V,!0);B[W]={width:X.width,height:X.height,format:X.format,mipmaps:X.mipmaps},M+=1,M===6&&(X.mipmapCount===1&&(Q.minFilter=DA),Q.image=B,Q.format=X.format,Q.needsUpdate=!0,t&&t(Q))},n,r)}if(Array.isArray(A))for(let W=0,V=A.length;W<V;++W)K(W);else y.load(A,function(W){const V=a.parse(W,!0);if(V.isCubemap){const X=V.mipmaps.length/V.mipmapCount;for(let iA=0;iA<X;iA++){B[iA]={mipmaps:[]};for(let BA=0;BA<V.mipmapCount;BA++)B[iA].mipmaps.push(V.mipmaps[iA*V.mipmapCount+BA]),B[iA].format=V.format,B[iA].width=V.width,B[iA].height=V.height}Q.image=B}else Q.image.width=V.width,Q.image.height=V.height,Q.mipmaps=V.mipmaps;V.mipmapCount===1&&(Q.minFilter=DA),Q.format=V.format,Q.needsUpdate=!0,t&&t(Q)},n,r);return Q}}class HQ extends Oa{constructor(A){super(A)}load(A,t,n,r){this.path!==void 0&&(A=this.path+A),A=this.manager.resolveURL(A);const a=this,B=UC.get(A);if(B!==void 0)return a.manager.itemStart(A),setTimeout(function(){t&&t(B),a.manager.itemEnd(A)},0),B;const Q=La("img");function y(){K(),UC.add(A,this),t&&t(this),a.manager.itemEnd(A)}function M(W){K(),r&&r(W),a.manager.itemError(A),a.manager.itemEnd(A)}function K(){Q.removeEventListener("load",y,!1),Q.removeEventListener("error",M,!1)}return Q.addEventListener("load",y,!1),Q.addEventListener("error",M,!1),A.slice(0,5)!=="data:"&&this.crossOrigin!==void 0&&(Q.crossOrigin=this.crossOrigin),a.manager.itemStart(A),Q.src=A,Q}}class df extends Oa{constructor(A){super(A)}load(A,t,n,r){const a=new zn;a.colorSpace=ii;const B=new HQ(this.manager);B.setCrossOrigin(this.crossOrigin),B.setPath(this.path);let Q=0;function y(M){B.load(A[M],function(K){a.images[M]=K,Q++,Q===6&&(a.needsUpdate=!0,t&&t(a))},void 0,r)}for(let M=0;M<A.length;++M)y(M);return a}}class uf extends Oa{constructor(A){super(A)}load(A,t,n,r){const a=this,B=new KI,Q=new xC(this.manager);return Q.setResponseType("arraybuffer"),Q.setRequestHeader(this.requestHeader),Q.setPath(this.path),Q.setWithCredentials(a.withCredentials),Q.load(A,function(y){let M;try{M=a.parse(y)}catch(K){if(r!==void 0)r(K);else{console.error(K);return}}M.image!==void 0?B.image=M.image:M.data!==void 0&&(B.image.width=M.width,B.image.height=M.height,B.image.data=M.data),B.wrapS=M.wrapS!==void 0?M.wrapS:ie,B.wrapT=M.wrapT!==void 0?M.wrapT:ie,B.magFilter=M.magFilter!==void 0?M.magFilter:DA,B.minFilter=M.minFilter!==void 0?M.minFilter:DA,B.anisotropy=M.anisotropy!==void 0?M.anisotropy:1,M.colorSpace!==void 0&&(B.colorSpace=M.colorSpace),M.flipY!==void 0&&(B.flipY=M.flipY),M.format!==void 0&&(B.format=M.format),M.type!==void 0&&(B.type=M.type),M.mipmaps!==void 0&&(B.mipmaps=M.mipmaps,B.minFilter=De),M.mipmapCount===1&&(B.minFilter=DA),M.generateMipmaps!==void 0&&(B.generateMipmaps=M.generateMipmaps),B.needsUpdate=!0,t&&t(B,M)},n,r),B}}class ff extends Oa{constructor(A){super(A)}load(A,t,n,r){const a=new Sr,B=new HQ(this.manager);return B.setCrossOrigin(this.crossOrigin),B.setPath(this.path),B.load(A,function(Q){a.image=Q,a.needsUpdate=!0,t!==void 0&&t(a)},n,r),a}}class jC extends qA{constructor(A,t=1){super(),this.isLight=!0,this.type="Light",this.color=new ve(A),this.intensity=t}dispose(){}copy(A,t){return super.copy(A,t),this.color.copy(A.color),this.intensity=A.intensity,this}toJSON(A){const t=super.toJSON(A);return t.object.color=this.color.getHex(),t.object.intensity=this.intensity,this.groundColor!==void 0&&(t.object.groundColor=this.groundColor.getHex()),this.distance!==void 0&&(t.object.distance=this.distance),this.angle!==void 0&&(t.object.angle=this.angle),this.decay!==void 0&&(t.object.decay=this.decay),this.penumbra!==void 0&&(t.object.penumbra=this.penumbra),this.shadow!==void 0&&(t.object.shadow=this.shadow.toJSON()),t}}class Zd extends jC{constructor(A,t,n){super(A,n),this.isHemisphereLight=!0,this.type="HemisphereLight",this.position.copy(qA.DEFAULT_UP),this.updateMatrix(),this.groundColor=new ve(t)}copy(A,t){return super.copy(A,t),this.groundColor.copy(A.groundColor),this}}const td=new tn,jd=new Ee,Xd=new Ee;class id{constructor(A){this.camera=A,this.bias=0,this.normalBias=0,this.radius=1,this.blurSamples=8,this.mapSize=new Ot(512,512),this.map=null,this.mapPass=null,this.matrix=new tn,this.autoUpdate=!0,this.needsUpdate=!1,this._frustum=new xa,this._frameExtents=new Ot(1,1),this._viewportCount=1,this._viewports=[new xo(0,0,1,1)]}getViewportCount(){return this._viewportCount}getFrustum(){return this._frustum}updateMatrices(A){const t=this.camera,n=this.matrix;jd.setFromMatrixPosition(A.matrixWorld),t.position.copy(jd),Xd.setFromMatrixPosition(A.target.matrixWorld),t.lookAt(Xd),t.updateMatrixWorld(),td.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),this._frustum.setFromProjectionMatrix(td),n.set(.5,0,0,.5,0,.5,0,.5,0,0,.5,.5,0,0,0,1),n.multiply(td)}getViewport(A){return this._viewports[A]}getFrameExtents(){return this._frameExtents}dispose(){this.map&&this.map.dispose(),this.mapPass&&this.mapPass.dispose()}copy(A){return this.camera=A.camera.clone(),this.bias=A.bias,this.radius=A.radius,this.mapSize.copy(A.mapSize),this}clone(){return new this.constructor().copy(this)}toJSON(){const A={};return this.bias!==0&&(A.bias=this.bias),this.normalBias!==0&&(A.normalBias=this.normalBias),this.radius!==1&&(A.radius=this.radius),(this.mapSize.x!==512||this.mapSize.y!==512)&&(A.mapSize=this.mapSize.toArray()),A.camera=this.camera.toJSON(!1).object,delete A.camera.matrix,A}}class pf extends id{constructor(){super(new ti(50,1,.5,500)),this.isSpotLightShadow=!0,this.focus=1}updateMatrices(A){const t=this.camera,n=zs*2*A.angle*this.focus,r=this.mapSize.width/this.mapSize.height,a=A.distance||t.far;(n!==t.fov||r!==t.aspect||a!==t.far)&&(t.fov=n,t.aspect=r,t.far=a,t.updateProjectionMatrix()),super.updateMatrices(A)}copy(A){return super.copy(A),this.focus=A.focus,this}}class zd extends jC{constructor(A,t,n=0,r=Math.PI/3,a=0,B=2){super(A,t),this.isSpotLight=!0,this.type="SpotLight",this.position.copy(qA.DEFAULT_UP),this.updateMatrix(),this.target=new qA,this.distance=n,this.angle=r,this.penumbra=a,this.decay=B,this.map=null,this.shadow=new pf}get power(){return this.intensity*Math.PI}set power(A){this.intensity=A/Math.PI}dispose(){this.shadow.dispose()}copy(A,t){return super.copy(A,t),this.distance=A.distance,this.angle=A.angle,this.penumbra=A.penumbra,this.decay=A.decay,this.target=A.target.clone(),this.shadow=A.shadow.clone(),this}}const $d=new tn,PQ=new Ee,nd=new Ee;class mf extends id{constructor(){super(new ti(90,1,.5,500)),this.isPointLightShadow=!0,this._frameExtents=new Ot(4,2),this._viewportCount=6,this._viewports=[new xo(2,1,1,1),new xo(0,1,1,1),new xo(3,1,1,1),new xo(1,1,1,1),new xo(3,0,1,1),new xo(1,0,1,1)],this._cubeDirections=[new Ee(1,0,0),new Ee(-1,0,0),new Ee(0,0,1),new Ee(0,0,-1),new Ee(0,1,0),new Ee(0,-1,0)],this._cubeUps=[new Ee(0,1,0),new Ee(0,1,0),new Ee(0,1,0),new Ee(0,1,0),new Ee(0,0,1),new Ee(0,0,-1)]}updateMatrices(A,t=0){const n=this.camera,r=this.matrix,a=A.distance||n.far;a!==n.far&&(n.far=a,n.updateProjectionMatrix()),PQ.setFromMatrixPosition(A.matrixWorld),n.position.copy(PQ),nd.copy(n.position),nd.add(this._cubeDirections[t]),n.up.copy(this._cubeUps[t]),n.lookAt(nd),n.updateMatrixWorld(),r.makeTranslation(-PQ.x,-PQ.y,-PQ.z),$d.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse),this._frustum.setFromProjectionMatrix($d)}}class Au extends jC{constructor(A,t,n=0,r=2){super(A,t),this.isPointLight=!0,this.type="PointLight",this.distance=n,this.decay=r,this.shadow=new mf}get power(){return this.intensity*4*Math.PI}set power(A){this.intensity=A/(4*Math.PI)}dispose(){this.shadow.dispose()}copy(A,t){return super.copy(A,t),this.distance=A.distance,this.decay=A.decay,this.shadow=A.shadow.clone(),this}}class Df extends id{constructor(){super(new cE(-5,5,5,-5,.5,500)),this.isDirectionalLightShadow=!0}}class eu extends jC{constructor(A,t){super(A,t),this.isDirectionalLight=!0,this.type="DirectionalLight",this.position.copy(qA.DEFAULT_UP),this.updateMatrix(),this.target=new qA,this.shadow=new Df}dispose(){this.shadow.dispose()}copy(A){return super.copy(A),this.target=A.target.clone(),this.shadow=A.shadow.clone(),this}}class tu extends jC{constructor(A,t){super(A,t),this.isAmbientLight=!0,this.type="AmbientLight"}}class iu extends jC{constructor(A,t,n=10,r=10){super(A,t),this.isRectAreaLight=!0,this.type="RectAreaLight",this.width=n,this.height=r}get power(){return this.intensity*this.width*this.height*Math.PI}set power(A){this.intensity=A/(this.width*this.height*Math.PI)}copy(A){return super.copy(A),this.width=A.width,this.height=A.height,this}toJSON(A){const t=super.toJSON(A);return t.object.width=this.width,t.object.height=this.height,t}}class nu{constructor(){this.isSphericalHarmonics3=!0,this.coefficients=[];for(let A=0;A<9;A++)this.coefficients.push(new Ee)}set(A){for(let t=0;t<9;t++)this.coefficients[t].copy(A[t]);return this}zero(){for(let A=0;A<9;A++)this.coefficients[A].set(0,0,0);return this}getAt(A,t){const n=A.x,r=A.y,a=A.z,B=this.coefficients;return t.copy(B[0]).multiplyScalar(.282095),t.addScaledVector(B[1],.488603*r),t.addScaledVector(B[2],.488603*a),t.addScaledVector(B[3],.488603*n),t.addScaledVector(B[4],1.092548*(n*r)),t.addScaledVector(B[5],1.092548*(r*a)),t.addScaledVector(B[6],.315392*(3*a*a-1)),t.addScaledVector(B[7],1.092548*(n*a)),t.addScaledVector(B[8],.546274*(n*n-r*r)),t}getIrradianceAt(A,t){const n=A.x,r=A.y,a=A.z,B=this.coefficients;return t.copy(B[0]).multiplyScalar(.886227),t.addScaledVector(B[1],2*.511664*r),t.addScaledVector(B[2],2*.511664*a),t.addScaledVector(B[3],2*.511664*n),t.addScaledVector(B[4],2*.429043*n*r),t.addScaledVector(B[5],2*.429043*r*a),t.addScaledVector(B[6],.743125*a*a-.247708),t.addScaledVector(B[7],2*.429043*n*a),t.addScaledVector(B[8],.429043*(n*n-r*r)),t}add(A){for(let t=0;t<9;t++)this.coefficients[t].add(A.coefficients[t]);return this}addScaledSH(A,t){for(let n=0;n<9;n++)this.coefficients[n].addScaledVector(A.coefficients[n],t);return this}scale(A){for(let t=0;t<9;t++)this.coefficients[t].multiplyScalar(A);return this}lerp(A,t){for(let n=0;n<9;n++)this.coefficients[n].lerp(A.coefficients[n],t);return this}equals(A){for(let t=0;t<9;t++)if(!this.coefficients[t].equals(A.coefficients[t]))return!1;return!0}copy(A){return this.set(A.coefficients)}clone(){return new this.constructor().copy(this)}fromArray(A,t=0){const n=this.coefficients;for(let r=0;r<9;r++)n[r].fromArray(A,t+r*3);return this}toArray(A=[],t=0){const n=this.coefficients;for(let r=0;r<9;r++)n[r].toArray(A,t+r*3);return A}static getBasisAt(A,t){const n=A.x,r=A.y,a=A.z;t[0]=.282095,t[1]=.488603*r,t[2]=.488603*a,t[3]=.488603*n,t[4]=1.092548*n*r,t[5]=1.092548*r*a,t[6]=.315392*(3*a*a-1),t[7]=1.092548*n*a,t[8]=.546274*(n*n-r*r)}}class ou extends jC{constructor(A=new nu,t=1){super(void 0,t),this.isLightProbe=!0,this.sh=A}copy(A){return super.copy(A),this.sh.copy(A.sh),this}fromJSON(A){return this.intensity=A.intensity,this.sh.fromArray(A.sh),this}toJSON(A){const t=super.toJSON(A);return t.object.sh=this.sh.toArray(),t}}class bh extends Oa{constructor(A){super(A),this.textures={}}load(A,t,n,r){const a=this,B=new xC(a.manager);B.setPath(a.path),B.setRequestHeader(a.requestHeader),B.setWithCredentials(a.withCredentials),B.load(A,function(Q){try{t(a.parse(JSON.parse(Q)))}catch(y){r?r(y):console.error(y),a.manager.itemError(A)}},n,r)}parse(A){const t=this.textures;function n(a){return t[a]===void 0&&console.warn("THREE.MaterialLoader: Undefined texture",a),t[a]}const r=bh.createMaterialFromType(A.type);if(A.uuid!==void 0&&(r.uuid=A.uuid),A.name!==void 0&&(r.name=A.name),A.color!==void 0&&r.color!==void 0&&r.color.setHex(A.color),A.roughness!==void 0&&(r.roughness=A.roughness),A.metalness!==void 0&&(r.metalness=A.metalness),A.sheen!==void 0&&(r.sheen=A.sheen),A.sheenColor!==void 0&&(r.sheenColor=new ve().setHex(A.sheenColor)),A.sheenRoughness!==void 0&&(r.sheenRoughness=A.sheenRoughness),A.emissive!==void 0&&r.emissive!==void 0&&r.emissive.setHex(A.emissive),A.specular!==void 0&&r.specular!==void 0&&r.specular.setHex(A.specular),A.specularIntensity!==void 0&&(r.specularIntensity=A.specularIntensity),A.specularColor!==void 0&&r.specularColor!==void 0&&r.specularColor.setHex(A.specularColor),A.shininess!==void 0&&(r.shininess=A.shininess),A.clearcoat!==void 0&&(r.clearcoat=A.clearcoat),A.clearcoatRoughness!==void 0&&(r.clearcoatRoughness=A.clearcoatRoughness),A.dispersion!==void 0&&(r.dispersion=A.dispersion),A.iridescence!==void 0&&(r.iridescence=A.iridescence),A.iridescenceIOR!==void 0&&(r.iridescenceIOR=A.iridescenceIOR),A.iridescenceThicknessRange!==void 0&&(r.iridescenceThicknessRange=A.iridescenceThicknessRange),A.transmission!==void 0&&(r.transmission=A.transmission),A.thickness!==void 0&&(r.thickness=A.thickness),A.attenuationDistance!==void 0&&(r.attenuationDistance=A.attenuationDistance),A.attenuationColor!==void 0&&r.attenuationColor!==void 0&&r.attenuationColor.setHex(A.attenuationColor),A.anisotropy!==void 0&&(r.anisotropy=A.anisotropy),A.anisotropyRotation!==void 0&&(r.anisotropyRotation=A.anisotropyRotation),A.fog!==void 0&&(r.fog=A.fog),A.flatShading!==void 0&&(r.flatShading=A.flatShading),A.blending!==void 0&&(r.blending=A.blending),A.combine!==void 0&&(r.combine=A.combine),A.side!==void 0&&(r.side=A.side),A.shadowSide!==void 0&&(r.shadowSide=A.shadowSide),A.opacity!==void 0&&(r.opacity=A.opacity),A.transparent!==void 0&&(r.transparent=A.transparent),A.alphaTest!==void 0&&(r.alphaTest=A.alphaTest),A.alphaHash!==void 0&&(r.alphaHash=A.alphaHash),A.depthFunc!==void 0&&(r.depthFunc=A.depthFunc),A.depthTest!==void 0&&(r.depthTest=A.depthTest),A.depthWrite!==void 0&&(r.depthWrite=A.depthWrite),A.colorWrite!==void 0&&(r.colorWrite=A.colorWrite),A.blendSrc!==void 0&&(r.blendSrc=A.blendSrc),A.blendDst!==void 0&&(r.blendDst=A.blendDst),A.blendEquation!==void 0&&(r.blendEquation=A.blendEquation),A.blendSrcAlpha!==void 0&&(r.blendSrcAlpha=A.blendSrcAlpha),A.blendDstAlpha!==void 0&&(r.blendDstAlpha=A.blendDstAlpha),A.blendEquationAlpha!==void 0&&(r.blendEquationAlpha=A.blendEquationAlpha),A.blendColor!==void 0&&r.blendColor!==void 0&&r.blendColor.setHex(A.blendColor),A.blendAlpha!==void 0&&(r.blendAlpha=A.blendAlpha),A.stencilWriteMask!==void 0&&(r.stencilWriteMask=A.stencilWriteMask),A.stencilFunc!==void 0&&(r.stencilFunc=A.stencilFunc),A.stencilRef!==void 0&&(r.stencilRef=A.stencilRef),A.stencilFuncMask!==void 0&&(r.stencilFuncMask=A.stencilFuncMask),A.stencilFail!==void 0&&(r.stencilFail=A.stencilFail),A.stencilZFail!==void 0&&(r.stencilZFail=A.stencilZFail),A.stencilZPass!==void 0&&(r.stencilZPass=A.stencilZPass),A.stencilWrite!==void 0&&(r.stencilWrite=A.stencilWrite),A.wireframe!==void 0&&(r.wireframe=A.wireframe),A.wireframeLinewidth!==void 0&&(r.wireframeLinewidth=A.wireframeLinewidth),A.wireframeLinecap!==void 0&&(r.wireframeLinecap=A.wireframeLinecap),A.wireframeLinejoin!==void 0&&(r.wireframeLinejoin=A.wireframeLinejoin),A.rotation!==void 0&&(r.rotation=A.rotation),A.linewidth!==void 0&&(r.linewidth=A.linewidth),A.dashSize!==void 0&&(r.dashSize=A.dashSize),A.gapSize!==void 0&&(r.gapSize=A.gapSize),A.scale!==void 0&&(r.scale=A.scale),A.polygonOffset!==void 0&&(r.polygonOffset=A.polygonOffset),A.polygonOffsetFactor!==void 0&&(r.polygonOffsetFactor=A.polygonOffsetFactor),A.polygonOffsetUnits!==void 0&&(r.polygonOffsetUnits=A.polygonOffsetUnits),A.dithering!==void 0&&(r.dithering=A.dithering),A.alphaToCoverage!==void 0&&(r.alphaToCoverage=A.alphaToCoverage),A.premultipliedAlpha!==void 0&&(r.premultipliedAlpha=A.premultipliedAlpha),A.forceSinglePass!==void 0&&(r.forceSinglePass=A.forceSinglePass),A.visible!==void 0&&(r.visible=A.visible),A.toneMapped!==void 0&&(r.toneMapped=A.toneMapped),A.userData!==void 0&&(r.userData=A.userData),A.vertexColors!==void 0&&(typeof A.vertexColors=="number"?r.vertexColors=A.vertexColors>0:r.vertexColors=A.vertexColors),A.uniforms!==void 0)for(const a in A.uniforms){const B=A.uniforms[a];switch(r.uniforms[a]={},B.type){case"t":r.uniforms[a].value=n(B.value);break;case"c":r.uniforms[a].value=new ve().setHex(B.value);break;case"v2":r.uniforms[a].value=new Ot().fromArray(B.value);break;case"v3":r.uniforms[a].value=new Ee().fromArray(B.value);break;case"v4":r.uniforms[a].value=new xo().fromArray(B.value);break;case"m3":r.uniforms[a].value=new Bo().fromArray(B.value);break;case"m4":r.uniforms[a].value=new tn().fromArray(B.value);break;default:r.uniforms[a].value=B.value}}if(A.defines!==void 0&&(r.defines=A.defines),A.vertexShader!==void 0&&(r.vertexShader=A.vertexShader),A.fragmentShader!==void 0&&(r.fragmentShader=A.fragmentShader),A.glslVersion!==void 0&&(r.glslVersion=A.glslVersion),A.extensions!==void 0)for(const a in A.extensions)r.extensions[a]=A.extensions[a];if(A.lights!==void 0&&(r.lights=A.lights),A.clipping!==void 0&&(r.clipping=A.clipping),A.size!==void 0&&(r.size=A.size),A.sizeAttenuation!==void 0&&(r.sizeAttenuation=A.sizeAttenuation),A.map!==void 0&&(r.map=n(A.map)),A.matcap!==void 0&&(r.matcap=n(A.matcap)),A.alphaMap!==void 0&&(r.alphaMap=n(A.alphaMap)),A.bumpMap!==void 0&&(r.bumpMap=n(A.bumpMap)),A.bumpScale!==void 0&&(r.bumpScale=A.bumpScale),A.normalMap!==void 0&&(r.normalMap=n(A.normalMap)),A.normalMapType!==void 0&&(r.normalMapType=A.normalMapType),A.normalScale!==void 0){let a=A.normalScale;Array.isArray(a)===!1&&(a=[a,a]),r.normalScale=new Ot().fromArray(a)}return A.displacementMap!==void 0&&(r.displacementMap=n(A.displacementMap)),A.displacementScale!==void 0&&(r.displacementScale=A.displacementScale),A.displacementBias!==void 0&&(r.displacementBias=A.displacementBias),A.roughnessMap!==void 0&&(r.roughnessMap=n(A.roughnessMap)),A.metalnessMap!==void 0&&(r.metalnessMap=n(A.metalnessMap)),A.emissiveMap!==void 0&&(r.emissiveMap=n(A.emissiveMap)),A.emissiveIntensity!==void 0&&(r.emissiveIntensity=A.emissiveIntensity),A.specularMap!==void 0&&(r.specularMap=n(A.specularMap)),A.specularIntensityMap!==void 0&&(r.specularIntensityMap=n(A.specularIntensityMap)),A.specularColorMap!==void 0&&(r.specularColorMap=n(A.specularColorMap)),A.envMap!==void 0&&(r.envMap=n(A.envMap)),A.envMapRotation!==void 0&&r.envMapRotation.fromArray(A.envMapRotation),A.envMapIntensity!==void 0&&(r.envMapIntensity=A.envMapIntensity),A.reflectivity!==void 0&&(r.reflectivity=A.reflectivity),A.refractionRatio!==void 0&&(r.refractionRatio=A.refractionRatio),A.lightMap!==void 0&&(r.lightMap=n(A.lightMap)),A.lightMapIntensity!==void 0&&(r.lightMapIntensity=A.lightMapIntensity),A.aoMap!==void 0&&(r.aoMap=n(A.aoMap)),A.aoMapIntensity!==void 0&&(r.aoMapIntensity=A.aoMapIntensity),A.gradientMap!==void 0&&(r.gradientMap=n(A.gradientMap)),A.clearcoatMap!==void 0&&(r.clearcoatMap=n(A.clearcoatMap)),A.clearcoatRoughnessMap!==void 0&&(r.clearcoatRoughnessMap=n(A.clearcoatRoughnessMap)),A.clearcoatNormalMap!==void 0&&(r.clearcoatNormalMap=n(A.clearcoatNormalMap)),A.clearcoatNormalScale!==void 0&&(r.clearcoatNormalScale=new Ot().fromArray(A.clearcoatNormalScale)),A.iridescenceMap!==void 0&&(r.iridescenceMap=n(A.iridescenceMap)),A.iridescenceThicknessMap!==void 0&&(r.iridescenceThicknessMap=n(A.iridescenceThicknessMap)),A.transmissionMap!==void 0&&(r.transmissionMap=n(A.transmissionMap)),A.thicknessMap!==void 0&&(r.thicknessMap=n(A.thicknessMap)),A.anisotropyMap!==void 0&&(r.anisotropyMap=n(A.anisotropyMap)),A.sheenColorMap!==void 0&&(r.sheenColorMap=n(A.sheenColorMap)),A.sheenRoughnessMap!==void 0&&(r.sheenRoughnessMap=n(A.sheenRoughnessMap)),r}setTextures(A){return this.textures=A,this}static createMaterialFromType(A){const t={ShadowMaterial:Ld,SpriteMaterial:DQ,RawShaderMaterial:xd,ShaderMaterial:di,PointsMaterial:cA,MeshPhysicalMaterial:bd,MeshStandardMaterial:jl,MeshPhongMaterial:kd,MeshToonMaterial:_d,MeshNormalMaterial:Td,MeshLambertMaterial:Kd,MeshDepthMaterial:_I,MeshDistanceMaterial:mE,MeshBasicMaterial:At,MeshMatcapMaterial:Jd,LineDashedMaterial:Yd,LineBasicMaterial:P,Material:FA};return new t[A]}}class od{static decodeText(A){if(typeof TextDecoder<"u")return new TextDecoder().decode(A);let t="";for(let n=0,r=A.length;n<r;n++)t+=String.fromCharCode(A[n]);try{return decodeURIComponent(escape(t))}catch{return t}}static extractUrlBase(A){const t=A.lastIndexOf("/");return t===-1?"./":A.slice(0,t+1)}static resolveURL(A,t){return typeof A!="string"||A===""?"":(/^https?:\/\//i.test(t)&&/^\//.test(A)&&(t=t.replace(/(^https?:\/\/[^\/]+).*/i,"$1")),/^(https?:)?\/\//i.test(A)||/^data:.*,.*$/i.test(A)||/^blob:.*$/i.test(A)?A:t+A)}}class ru extends li{constructor(){super(),this.isInstancedBufferGeometry=!0,this.type="InstancedBufferGeometry",this.instanceCount=1/0}copy(A){return super.copy(A),this.instanceCount=A.instanceCount,this}toJSON(){const A=super.toJSON();return A.instanceCount=this.instanceCount,A.isInstancedBufferGeometry=!0,A}}class su extends Oa{constructor(A){super(A)}load(A,t,n,r){const a=this,B=new xC(a.manager);B.setPath(a.path),B.setRequestHeader(a.requestHeader),B.setWithCredentials(a.withCredentials),B.load(A,function(Q){try{t(a.parse(JSON.parse(Q)))}catch(y){r?r(y):console.error(y),a.manager.itemError(A)}},n,r)}parse(A){const t={},n={};function r(X,iA){if(t[iA]!==void 0)return t[iA];const nA=X.interleavedBuffers[iA],tA=a(X,nA.buffer),RA=ea(nA.type,tA),mA=new gr(RA,nA.stride);return mA.uuid=nA.uuid,t[iA]=mA,mA}function a(X,iA){if(n[iA]!==void 0)return n[iA];const nA=X.arrayBuffers[iA],tA=new Uint32Array(nA).buffer;return n[iA]=tA,tA}const B=A.isInstancedBufferGeometry?new ru:new li,Q=A.data.index;if(Q!==void 0){const X=ea(Q.type,Q.array);B.setIndex(new oe(X,1))}const y=A.data.attributes;for(const X in y){const iA=y[X];let BA;if(iA.isInterleavedBufferAttribute){const nA=r(A.data,iA.data);BA=new $I(nA,iA.itemSize,iA.offset,iA.normalized)}else{const nA=ea(iA.type,iA.array),tA=iA.isInstancedBufferAttribute?VC:oe;BA=new tA(nA,iA.itemSize,iA.normalized)}iA.name!==void 0&&(BA.name=iA.name),iA.usage!==void 0&&BA.setUsage(iA.usage),B.setAttribute(X,BA)}const M=A.data.morphAttributes;if(M)for(const X in M){const iA=M[X],BA=[];for(let nA=0,tA=iA.length;nA<tA;nA++){const RA=iA[nA];let mA;if(RA.isInterleavedBufferAttribute){const kA=r(A.data,RA.data);mA=new $I(kA,RA.itemSize,RA.offset,RA.normalized)}else{const kA=ea(RA.type,RA.array);mA=new oe(kA,RA.itemSize,RA.normalized)}RA.name!==void 0&&(mA.name=RA.name),BA.push(mA)}B.morphAttributes[X]=BA}A.data.morphTargetsRelative&&(B.morphTargetsRelative=!0);const W=A.data.groups||A.data.drawcalls||A.data.offsets;if(W!==void 0)for(let X=0,iA=W.length;X!==iA;++X){const BA=W[X];B.addGroup(BA.start,BA.count,BA.materialIndex)}const V=A.data.boundingSphere;if(V!==void 0){const X=new Ee;V.center!==void 0&&X.fromArray(V.center),B.boundingSphere=new qr(X,V.radius)}return A.name&&(B.name=A.name),A.userData&&(B.userData=A.userData),B}}class yf extends Oa{constructor(A){super(A)}load(A,t,n,r){const a=this,B=this.path===""?od.extractUrlBase(A):this.path;this.resourcePath=this.resourcePath||B;const Q=new xC(this.manager);Q.setPath(this.path),Q.setRequestHeader(this.requestHeader),Q.setWithCredentials(this.withCredentials),Q.load(A,function(y){let M=null;try{M=JSON.parse(y)}catch(W){r!==void 0&&r(W),console.error("THREE:ObjectLoader: Can't parse "+A+".",W.message);return}const K=M.metadata;if(K===void 0||K.type===void 0||K.type.toLowerCase()==="geometry"){r!==void 0&&r(new Error("THREE.ObjectLoader: Can't load "+A)),console.error("THREE.ObjectLoader: Can't load "+A);return}a.parse(M,t)},n,r)}async loadAsync(A,t){const n=this,r=this.path===""?od.extractUrlBase(A):this.path;this.resourcePath=this.resourcePath||r;const a=new xC(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials);const B=await a.loadAsync(A,t),Q=JSON.parse(B),y=Q.metadata;if(y===void 0||y.type===void 0||y.type.toLowerCase()==="geometry")throw new Error("THREE.ObjectLoader: Can't load "+A);return await n.parseAsync(Q)}parse(A,t){const n=this.parseAnimations(A.animations),r=this.parseShapes(A.shapes),a=this.parseGeometries(A.geometries,r),B=this.parseImages(A.images,function(){t!==void 0&&t(M)}),Q=this.parseTextures(A.textures,B),y=this.parseMaterials(A.materials,Q),M=this.parseObject(A.object,a,y,Q,n),K=this.parseSkeletons(A.skeletons,M);if(this.bindSkeletons(M,K),t!==void 0){let W=!1;for(const V in B)if(B[V].data instanceof HTMLImageElement){W=!0;break}W===!1&&t(M)}return M}async parseAsync(A){const t=this.parseAnimations(A.animations),n=this.parseShapes(A.shapes),r=this.parseGeometries(A.geometries,n),a=await this.parseImagesAsync(A.images),B=this.parseTextures(A.textures,a),Q=this.parseMaterials(A.materials,B),y=this.parseObject(A.object,r,Q,B,t),M=this.parseSkeletons(A.skeletons,y);return this.bindSkeletons(y,M),y}parseShapes(A){const t={};if(A!==void 0)for(let n=0,r=A.length;n<r;n++){const a=new YB().fromJSON(A[n]);t[a.uuid]=a}return t}parseSkeletons(A,t){const n={},r={};if(t.traverse(function(a){a.isBone&&(r[a.uuid]=a)}),A!==void 0)for(let a=0,B=A.length;a<B;a++){const Q=new RE().fromJSON(A[a],r);n[Q.uuid]=Q}return n}parseGeometries(A,t){const n={};if(A!==void 0){const r=new su;for(let a=0,B=A.length;a<B;a++){let Q;const y=A[a];switch(y.type){case"BufferGeometry":case"InstancedBufferGeometry":Q=r.parse(y);break;default:y.type in Ud?Q=Ud[y.type].fromJSON(y,t):console.warn(`THREE.ObjectLoader: Unsupported geometry type "${y.type}"`)}Q.uuid=y.uuid,y.name!==void 0&&(Q.name=y.name),y.userData!==void 0&&(Q.userData=y.userData),n[y.uuid]=Q}}return n}parseMaterials(A,t){const n={},r={};if(A!==void 0){const a=new bh;a.setTextures(t);for(let B=0,Q=A.length;B<Q;B++){const y=A[B];n[y.uuid]===void 0&&(n[y.uuid]=a.parse(y)),r[y.uuid]=n[y.uuid]}}return r}parseAnimations(A){const t={};if(A!==void 0)for(let n=0;n<A.length;n++){const r=A[n],a=YQ.parse(r);t[a.uuid]=a}return t}parseImages(A,t){const n=this,r={};let a;function B(y){return n.manager.itemStart(y),a.load(y,function(){n.manager.itemEnd(y)},void 0,function(){n.manager.itemError(y),n.manager.itemEnd(y)})}function Q(y){if(typeof y=="string"){const M=y,K=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(M)?M:n.resourcePath+M;return B(K)}else return y.data?{data:ea(y.type,y.data),width:y.width,height:y.height}:null}if(A!==void 0&&A.length>0){const y=new ed(t);a=new HQ(y),a.setCrossOrigin(this.crossOrigin);for(let M=0,K=A.length;M<K;M++){const W=A[M],V=W.url;if(Array.isArray(V)){const X=[];for(let iA=0,BA=V.length;iA<BA;iA++){const nA=V[iA],tA=Q(nA);tA!==null&&(tA instanceof HTMLImageElement?X.push(tA):X.push(new KI(tA.data,tA.width,tA.height)))}r[W.uuid]=new Ea(X)}else{const X=Q(W.url);r[W.uuid]=new Ea(X)}}}return r}async parseImagesAsync(A){const t=this,n={};let r;async function a(B){if(typeof B=="string"){const Q=B,y=/^(\/\/)|([a-z]+:(\/\/)?)/i.test(Q)?Q:t.resourcePath+Q;return await r.loadAsync(y)}else return B.data?{data:ea(B.type,B.data),width:B.width,height:B.height}:null}if(A!==void 0&&A.length>0){r=new HQ(this.manager),r.setCrossOrigin(this.crossOrigin);for(let B=0,Q=A.length;B<Q;B++){const y=A[B],M=y.url;if(Array.isArray(M)){const K=[];for(let W=0,V=M.length;W<V;W++){const X=M[W],iA=await a(X);iA!==null&&(iA instanceof HTMLImageElement?K.push(iA):K.push(new KI(iA.data,iA.width,iA.height)))}n[y.uuid]=new Ea(K)}else{const K=await a(y.url);n[y.uuid]=new Ea(K)}}}return n}parseTextures(A,t){function n(a,B){return typeof a=="number"?a:(console.warn("THREE.ObjectLoader.parseTexture: Constant should be in numeric form.",a),B[a])}const r={};if(A!==void 0)for(let a=0,B=A.length;a<B;a++){const Q=A[a];Q.image===void 0&&console.warn('THREE.ObjectLoader: No "image" specified for',Q.uuid),t[Q.image]===void 0&&console.warn("THREE.ObjectLoader: Undefined image",Q.image);const y=t[Q.image],M=y.data;let K;Array.isArray(M)?(K=new zn,M.length===6&&(K.needsUpdate=!0)):(M&&M.data?K=new KI:K=new Sr,M&&(K.needsUpdate=!0)),K.source=y,K.uuid=Q.uuid,Q.name!==void 0&&(K.name=Q.name),Q.mapping!==void 0&&(K.mapping=n(Q.mapping,wf)),Q.channel!==void 0&&(K.channel=Q.channel),Q.offset!==void 0&&K.offset.fromArray(Q.offset),Q.repeat!==void 0&&K.repeat.fromArray(Q.repeat),Q.center!==void 0&&K.center.fromArray(Q.center),Q.rotation!==void 0&&(K.rotation=Q.rotation),Q.wrap!==void 0&&(K.wrapS=n(Q.wrap[0],gu),K.wrapT=n(Q.wrap[1],gu)),Q.format!==void 0&&(K.format=Q.format),Q.internalFormat!==void 0&&(K.internalFormat=Q.internalFormat),Q.type!==void 0&&(K.type=Q.type),Q.colorSpace!==void 0&&(K.colorSpace=Q.colorSpace),Q.minFilter!==void 0&&(K.minFilter=n(Q.minFilter,au)),Q.magFilter!==void 0&&(K.magFilter=n(Q.magFilter,au)),Q.anisotropy!==void 0&&(K.anisotropy=Q.anisotropy),Q.flipY!==void 0&&(K.flipY=Q.flipY),Q.generateMipmaps!==void 0&&(K.generateMipmaps=Q.generateMipmaps),Q.premultiplyAlpha!==void 0&&(K.premultiplyAlpha=Q.premultiplyAlpha),Q.unpackAlignment!==void 0&&(K.unpackAlignment=Q.unpackAlignment),Q.compareFunction!==void 0&&(K.compareFunction=Q.compareFunction),Q.userData!==void 0&&(K.userData=Q.userData),r[Q.uuid]=K}return r}parseObject(A,t,n,r,a){let B;function Q(V){return t[V]===void 0&&console.warn("THREE.ObjectLoader: Undefined geometry",V),t[V]}function y(V){if(V!==void 0){if(Array.isArray(V)){const X=[];for(let iA=0,BA=V.length;iA<BA;iA++){const nA=V[iA];n[nA]===void 0&&console.warn("THREE.ObjectLoader: Undefined material",nA),X.push(n[nA])}return X}return n[V]===void 0&&console.warn("THREE.ObjectLoader: Undefined material",V),n[V]}}function M(V){return r[V]===void 0&&console.warn("THREE.ObjectLoader: Undefined texture",V),r[V]}let K,W;switch(A.type){case"Scene":B=new Eh,A.background!==void 0&&(Number.isInteger(A.background)?B.background=new ve(A.background):B.background=M(A.background)),A.environment!==void 0&&(B.environment=M(A.environment)),A.fog!==void 0&&(A.fog.type==="Fog"?B.fog=new yE(A.fog.color,A.fog.near,A.fog.far):A.fog.type==="FogExp2"&&(B.fog=new DE(A.fog.color,A.fog.density)),A.fog.name!==""&&(B.fog.name=A.fog.name)),A.backgroundBlurriness!==void 0&&(B.backgroundBlurriness=A.backgroundBlurriness),A.backgroundIntensity!==void 0&&(B.backgroundIntensity=A.backgroundIntensity),A.backgroundRotation!==void 0&&B.backgroundRotation.fromArray(A.backgroundRotation),A.environmentIntensity!==void 0&&(B.environmentIntensity=A.environmentIntensity),A.environmentRotation!==void 0&&B.environmentRotation.fromArray(A.environmentRotation);break;case"PerspectiveCamera":B=new ti(A.fov,A.aspect,A.near,A.far),A.focus!==void 0&&(B.focus=A.focus),A.zoom!==void 0&&(B.zoom=A.zoom),A.filmGauge!==void 0&&(B.filmGauge=A.filmGauge),A.filmOffset!==void 0&&(B.filmOffset=A.filmOffset),A.view!==void 0&&(B.view=Object.assign({},A.view));break;case"OrthographicCamera":B=new cE(A.left,A.right,A.top,A.bottom,A.near,A.far),A.zoom!==void 0&&(B.zoom=A.zoom),A.view!==void 0&&(B.view=Object.assign({},A.view));break;case"AmbientLight":B=new tu(A.color,A.intensity);break;case"DirectionalLight":B=new eu(A.color,A.intensity);break;case"PointLight":B=new Au(A.color,A.intensity,A.distance,A.decay);break;case"RectAreaLight":B=new iu(A.color,A.intensity,A.width,A.height);break;case"SpotLight":B=new zd(A.color,A.intensity,A.distance,A.angle,A.penumbra,A.decay);break;case"HemisphereLight":B=new Zd(A.color,A.groundColor,A.intensity);break;case"LightProbe":B=new ou().fromJSON(A);break;case"SkinnedMesh":K=Q(A.geometry),W=y(A.material),B=new fh(K,W),A.bindMode!==void 0&&(B.bindMode=A.bindMode),A.bindMatrix!==void 0&&B.bindMatrix.fromArray(A.bindMatrix),A.skeleton!==void 0&&(B.skeleton=A.skeleton);break;case"Mesh":K=Q(A.geometry),W=y(A.material),B=new mo(K,W);break;case"InstancedMesh":K=Q(A.geometry),W=y(A.material);const V=A.count,X=A.instanceMatrix,iA=A.instanceColor;B=new Ws(K,W,V),B.instanceMatrix=new VC(new Float32Array(X.array),16),iA!==void 0&&(B.instanceColor=new VC(new Float32Array(iA.array),iA.itemSize));break;case"BatchedMesh":K=Q(A.geometry),W=y(A.material),B=new Dh(A.maxGeometryCount,A.maxVertexCount,A.maxIndexCount,W),B.geometry=K,B.perObjectFrustumCulled=A.perObjectFrustumCulled,B.sortObjects=A.sortObjects,B._drawRanges=A.drawRanges,B._reservedRanges=A.reservedRanges,B._visibility=A.visibility,B._active=A.active,B._bounds=A.bounds.map(BA=>{const nA=new To;nA.min.fromArray(BA.boxMin),nA.max.fromArray(BA.boxMax);const tA=new qr;return tA.radius=BA.sphereRadius,tA.center.fromArray(BA.sphereCenter),{boxInitialized:BA.boxInitialized,box:nA,sphereInitialized:BA.sphereInitialized,sphere:tA}}),B._maxGeometryCount=A.maxGeometryCount,B._maxVertexCount=A.maxVertexCount,B._maxIndexCount=A.maxIndexCount,B._geometryInitialized=A.geometryInitialized,B._geometryCount=A.geometryCount,B._matricesTexture=M(A.matricesTexture.uuid);break;case"LOD":B=new wQ;break;case"Line":B=new S(Q(A.geometry),y(A.material));break;case"LineLoop":B=new IA(Q(A.geometry),y(A.material));break;case"LineSegments":B=new rA(Q(A.geometry),y(A.material));break;case"PointCloud":case"Points":B=new Re(Q(A.geometry),y(A.material));break;case"Sprite":B=new hh(y(A.material));break;case"Group":B=new Ha;break;case"Bone":B=new SQ;break;default:B=new qA}if(B.uuid=A.uuid,A.name!==void 0&&(B.name=A.name),A.matrix!==void 0?(B.matrix.fromArray(A.matrix),A.matrixAutoUpdate!==void 0&&(B.matrixAutoUpdate=A.matrixAutoUpdate),B.matrixAutoUpdate&&B.matrix.decompose(B.position,B.quaternion,B.scale)):(A.position!==void 0&&B.position.fromArray(A.position),A.rotation!==void 0&&B.rotation.fromArray(A.rotation),A.quaternion!==void 0&&B.quaternion.fromArray(A.quaternion),A.scale!==void 0&&B.scale.fromArray(A.scale)),A.up!==void 0&&B.up.fromArray(A.up),A.castShadow!==void 0&&(B.castShadow=A.castShadow),A.receiveShadow!==void 0&&(B.receiveShadow=A.receiveShadow),A.shadow&&(A.shadow.bias!==void 0&&(B.shadow.bias=A.shadow.bias),A.shadow.normalBias!==void 0&&(B.shadow.normalBias=A.shadow.normalBias),A.shadow.radius!==void 0&&(B.shadow.radius=A.shadow.radius),A.shadow.mapSize!==void 0&&B.shadow.mapSize.fromArray(A.shadow.mapSize),A.shadow.camera!==void 0&&(B.shadow.camera=this.parseObject(A.shadow.camera))),A.visible!==void 0&&(B.visible=A.visible),A.frustumCulled!==void 0&&(B.frustumCulled=A.frustumCulled),A.renderOrder!==void 0&&(B.renderOrder=A.renderOrder),A.userData!==void 0&&(B.userData=A.userData),A.layers!==void 0&&(B.layers.mask=A.layers),A.children!==void 0){const V=A.children;for(let X=0;X<V.length;X++)B.add(this.parseObject(V[X],t,n,r,a))}if(A.animations!==void 0){const V=A.animations;for(let X=0;X<V.length;X++){const iA=V[X];B.animations.push(a[iA])}}if(A.type==="LOD"){A.autoUpdate!==void 0&&(B.autoUpdate=A.autoUpdate);const V=A.levels;for(let X=0;X<V.length;X++){const iA=V[X],BA=B.getObjectByProperty("uuid",iA.object);BA!==void 0&&B.addLevel(BA,iA.distance,iA.hysteresis)}}return B}bindSkeletons(A,t){Object.keys(t).length!==0&&A.traverse(function(n){if(n.isSkinnedMesh===!0&&n.skeleton!==void 0){const r=t[n.skeleton];r===void 0?console.warn("THREE.ObjectLoader: No skeleton found with UUID:",n.skeleton):n.bind(r,n.bindMatrix)}})}}const wf={UVMapping:go,CubeReflectionMapping:Ao,CubeRefractionMapping:Kn,EquirectangularReflectionMapping:_o,EquirectangularRefractionMapping:Kt,CubeUVReflectionMapping:xA},gu={RepeatWrapping:vA,ClampToEdgeWrapping:ie,MirroredRepeatWrapping:ZA},au={NearestFilter:jA,NearestMipmapNearestFilter:Be,NearestMipmapLinearFilter:H,LinearFilter:DA,LinearMipmapNearestFilter:YA,LinearMipmapLinearFilter:De};class Mf extends Oa{constructor(A){super(A),this.isImageBitmapLoader=!0,typeof createImageBitmap>"u"&&console.warn("THREE.ImageBitmapLoader: createImageBitmap() not supported."),typeof fetch>"u"&&console.warn("THREE.ImageBitmapLoader: fetch() not supported."),this.options={premultiplyAlpha:"none"}}setOptions(A){return this.options=A,this}load(A,t,n,r){A===void 0&&(A=""),this.path!==void 0&&(A=this.path+A),A=this.manager.resolveURL(A);const a=this,B=UC.get(A);if(B!==void 0){if(a.manager.itemStart(A),B.then){B.then(M=>{t&&t(M),a.manager.itemEnd(A)}).catch(M=>{r&&r(M)});return}return setTimeout(function(){t&&t(B),a.manager.itemEnd(A)},0),B}const Q={};Q.credentials=this.crossOrigin==="anonymous"?"same-origin":"include",Q.headers=this.requestHeader;const y=fetch(A,Q).then(function(M){return M.blob()}).then(function(M){return createImageBitmap(M,Object.assign(a.options,{colorSpaceConversion:"none"}))}).then(function(M){return UC.add(A,M),t&&t(M),a.manager.itemEnd(A),M}).catch(function(M){r&&r(M),UC.remove(A),a.manager.itemError(A),a.manager.itemEnd(A)});UC.add(A,y),a.manager.itemStart(A)}}let kh;class rd{static getContext(){return kh===void 0&&(kh=new(window.AudioContext||window.webkitAudioContext)),kh}static setContext(A){kh=A}}class Sf extends Oa{constructor(A){super(A)}load(A,t,n,r){const a=this,B=new xC(this.manager);B.setResponseType("arraybuffer"),B.setPath(this.path),B.setRequestHeader(this.requestHeader),B.setWithCredentials(this.withCredentials),B.load(A,function(y){try{const M=y.slice(0);rd.getContext().decodeAudioData(M,function(W){t(W)}).catch(Q)}catch(M){Q(M)}},n,r);function Q(y){r?r(y):console.error(y),a.manager.itemError(A)}}}const Iu=new tn,Cu=new tn,WB=new tn;class Rf{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new ti,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new ti,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(A){const t=this._cache;if(t.focus!==A.focus||t.fov!==A.fov||t.aspect!==A.aspect*this.aspect||t.near!==A.near||t.far!==A.far||t.zoom!==A.zoom||t.eyeSep!==this.eyeSep){t.focus=A.focus,t.fov=A.fov,t.aspect=A.aspect*this.aspect,t.near=A.near,t.far=A.far,t.zoom=A.zoom,t.eyeSep=this.eyeSep,WB.copy(A.projectionMatrix);const r=t.eyeSep/2,a=r*t.near/t.focus,B=t.near*Math.tan(sg*t.fov*.5)/t.zoom;let Q,y;Cu.elements[12]=-r,Iu.elements[12]=r,Q=-B*t.aspect+a,y=B*t.aspect+a,WB.elements[0]=2*t.near/(y-Q),WB.elements[8]=(y+Q)/(y-Q),this.cameraL.projectionMatrix.copy(WB),Q=-B*t.aspect-a,y=B*t.aspect-a,WB.elements[0]=2*t.near/(y-Q),WB.elements[8]=(y+Q)/(y-Q),this.cameraR.projectionMatrix.copy(WB)}this.cameraL.matrixWorld.copy(A.matrixWorld).multiply(Cu),this.cameraR.matrixWorld.copy(A.matrixWorld).multiply(Iu)}}class Bu{constructor(A=!0){this.autoStart=A,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=Eu(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let A=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){const t=Eu();A=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=A}return A}}function Eu(){return(typeof performance>"u"?Date:performance).now()}const VB=new Ee,Qu=new Us,Gf=new Ee,ZB=new Ee;class Ff extends qA{constructor(){super(),this.type="AudioListener",this.context=rd.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new Bu}getInput(){return this.gain}removeFilter(){return this.filter!==null&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(A){return this.filter!==null?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=A,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(A){return this.gain.gain.setTargetAtTime(A,this.context.currentTime,.01),this}updateMatrixWorld(A){super.updateMatrixWorld(A);const t=this.context.listener,n=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(VB,Qu,Gf),ZB.set(0,0,-1).applyQuaternion(Qu),t.positionX){const r=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(VB.x,r),t.positionY.linearRampToValueAtTime(VB.y,r),t.positionZ.linearRampToValueAtTime(VB.z,r),t.forwardX.linearRampToValueAtTime(ZB.x,r),t.forwardY.linearRampToValueAtTime(ZB.y,r),t.forwardZ.linearRampToValueAtTime(ZB.z,r),t.upX.linearRampToValueAtTime(n.x,r),t.upY.linearRampToValueAtTime(n.y,r),t.upZ.linearRampToValueAtTime(n.z,r)}else t.setPosition(VB.x,VB.y,VB.z),t.setOrientation(ZB.x,ZB.y,ZB.z,n.x,n.y,n.z)}}class cu extends qA{constructor(A){super(),this.type="Audio",this.listener=A,this.context=A.context,this.gain=this.context.createGain(),this.gain.connect(A.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(A){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=A,this.connect(),this}setMediaElementSource(A){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(A),this.connect(),this}setMediaStreamSource(A){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(A),this.connect(),this}setBuffer(A){return this.buffer=A,this.sourceType="buffer",this.autoplay&&this.play(),this}play(A=0){if(this.isPlaying===!0){console.warn("THREE.Audio: Audio is already playing.");return}if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}this._startedAt=this.context.currentTime+A;const t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.isPlaying===!0&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,this.loop===!0&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this}stop(){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this._progress=0,this.source!==null&&(this.source.stop(),this.source.onended=null),this.isPlaying=!1,this}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let A=1,t=this.filters.length;A<t;A++)this.filters[A-1].connect(this.filters[A]);this.filters[this.filters.length-1].connect(this.getOutput())}else this.source.connect(this.getOutput());return this._connected=!0,this}disconnect(){if(this._connected!==!1){if(this.filters.length>0){this.source.disconnect(this.filters[0]);for(let A=1,t=this.filters.length;A<t;A++)this.filters[A-1].disconnect(this.filters[A]);this.filters[this.filters.length-1].disconnect(this.getOutput())}else this.source.disconnect(this.getOutput());return this._connected=!1,this}}getFilters(){return this.filters}setFilters(A){return A||(A=[]),this._connected===!0?(this.disconnect(),this.filters=A.slice(),this.connect()):this.filters=A.slice(),this}setDetune(A){return this.detune=A,this.isPlaying===!0&&this.source.detune!==void 0&&this.source.detune.setTargetAtTime(this.detune,this.context.currentTime,.01),this}getDetune(){return this.detune}getFilter(){return this.getFilters()[0]}setFilter(A){return this.setFilters(A?[A]:[])}setPlaybackRate(A){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.playbackRate=A,this.isPlaying===!0&&this.source.playbackRate.setTargetAtTime(this.playbackRate,this.context.currentTime,.01),this}getPlaybackRate(){return this.playbackRate}onEnded(){this.isPlaying=!1}getLoop(){return this.hasPlaybackControl===!1?(console.warn("THREE.Audio: this Audio has no playback control."),!1):this.loop}setLoop(A){if(this.hasPlaybackControl===!1){console.warn("THREE.Audio: this Audio has no playback control.");return}return this.loop=A,this.isPlaying===!0&&(this.source.loop=this.loop),this}setLoopStart(A){return this.loopStart=A,this}setLoopEnd(A){return this.loopEnd=A,this}getVolume(){return this.gain.gain.value}setVolume(A){return this.gain.gain.setTargetAtTime(A,this.context.currentTime,.01),this}}const jB=new Ee,hu=new Us,vf=new Ee,XB=new Ee;class Nf extends cu{constructor(A){super(A),this.panner=this.context.createPanner(),this.panner.panningModel="HRTF",this.panner.connect(this.gain)}connect(){super.connect(),this.panner.connect(this.gain)}disconnect(){super.disconnect(),this.panner.disconnect(this.gain)}getOutput(){return this.panner}getRefDistance(){return this.panner.refDistance}setRefDistance(A){return this.panner.refDistance=A,this}getRolloffFactor(){return this.panner.rolloffFactor}setRolloffFactor(A){return this.panner.rolloffFactor=A,this}getDistanceModel(){return this.panner.distanceModel}setDistanceModel(A){return this.panner.distanceModel=A,this}getMaxDistance(){return this.panner.maxDistance}setMaxDistance(A){return this.panner.maxDistance=A,this}setDirectionalCone(A,t,n){return this.panner.coneInnerAngle=A,this.panner.coneOuterAngle=t,this.panner.coneOuterGain=n,this}updateMatrixWorld(A){if(super.updateMatrixWorld(A),this.hasPlaybackControl===!0&&this.isPlaying===!1)return;this.matrixWorld.decompose(jB,hu,vf),XB.set(0,0,1).applyQuaternion(hu);const t=this.panner;if(t.positionX){const n=this.context.currentTime+this.listener.timeDelta;t.positionX.linearRampToValueAtTime(jB.x,n),t.positionY.linearRampToValueAtTime(jB.y,n),t.positionZ.linearRampToValueAtTime(jB.z,n),t.orientationX.linearRampToValueAtTime(XB.x,n),t.orientationY.linearRampToValueAtTime(XB.y,n),t.orientationZ.linearRampToValueAtTime(XB.z,n)}else t.setPosition(jB.x,jB.y,jB.z),t.setOrientation(XB.x,XB.y,XB.z)}}class Uf{constructor(A,t=2048){this.analyser=A.context.createAnalyser(),this.analyser.fftSize=t,this.data=new Uint8Array(this.analyser.frequencyBinCount),A.getOutput().connect(this.analyser)}getFrequencyData(){return this.analyser.getByteFrequencyData(this.data),this.data}getAverageFrequency(){let A=0;const t=this.getFrequencyData();for(let n=0;n<t.length;n++)A+=t[n];return A/t.length}}class lu{constructor(A,t,n){this.binding=A,this.valueSize=n;let r,a,B;switch(t){case"quaternion":r=this._slerp,a=this._slerpAdditive,B=this._setAdditiveIdentityQuaternion,this.buffer=new Float64Array(n*6),this._workIndex=5;break;case"string":case"bool":r=this._select,a=this._select,B=this._setAdditiveIdentityOther,this.buffer=new Array(n*5);break;default:r=this._lerp,a=this._lerpAdditive,B=this._setAdditiveIdentityNumeric,this.buffer=new Float64Array(n*5)}this._mixBufferRegion=r,this._mixBufferRegionAdditive=a,this._setIdentity=B,this._origIndex=3,this._addIndex=4,this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,this.useCount=0,this.referenceCount=0}accumulate(A,t){const n=this.buffer,r=this.valueSize,a=A*r+r;let B=this.cumulativeWeight;if(B===0){for(let Q=0;Q!==r;++Q)n[a+Q]=n[Q];B=t}else{B+=t;const Q=t/B;this._mixBufferRegion(n,a,0,Q,r)}this.cumulativeWeight=B}accumulateAdditive(A){const t=this.buffer,n=this.valueSize,r=n*this._addIndex;this.cumulativeWeightAdditive===0&&this._setIdentity(),this._mixBufferRegionAdditive(t,r,0,A,n),this.cumulativeWeightAdditive+=A}apply(A){const t=this.valueSize,n=this.buffer,r=A*t+t,a=this.cumulativeWeight,B=this.cumulativeWeightAdditive,Q=this.binding;if(this.cumulativeWeight=0,this.cumulativeWeightAdditive=0,a<1){const y=t*this._origIndex;this._mixBufferRegion(n,r,y,1-a,t)}B>0&&this._mixBufferRegionAdditive(n,r,this._addIndex*t,1,t);for(let y=t,M=t+t;y!==M;++y)if(n[y]!==n[y+t]){Q.setValue(n,r);break}}saveOriginalState(){const A=this.binding,t=this.buffer,n=this.valueSize,r=n*this._origIndex;A.getValue(t,r);for(let a=n,B=r;a!==B;++a)t[a]=t[r+a%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){const A=this.valueSize*3;this.binding.setValue(this.buffer,A)}_setAdditiveIdentityNumeric(){const A=this._addIndex*this.valueSize,t=A+this.valueSize;for(let n=A;n<t;n++)this.buffer[n]=0}_setAdditiveIdentityQuaternion(){this._setAdditiveIdentityNumeric(),this.buffer[this._addIndex*this.valueSize+3]=1}_setAdditiveIdentityOther(){const A=this._origIndex*this.valueSize,t=this._addIndex*this.valueSize;for(let n=0;n<this.valueSize;n++)this.buffer[t+n]=this.buffer[A+n]}_select(A,t,n,r,a){if(r>=.5)for(let B=0;B!==a;++B)A[t+B]=A[n+B]}_slerp(A,t,n,r){Us.slerpFlat(A,t,A,t,A,n,r)}_slerpAdditive(A,t,n,r,a){const B=this._workIndex*a;Us.multiplyQuaternionsFlat(A,B,A,t,A,n),Us.slerpFlat(A,t,A,t,A,B,r)}_lerp(A,t,n,r,a){const B=1-r;for(let Q=0;Q!==a;++Q){const y=t+Q;A[y]=A[y]*B+A[n+Q]*r}}_lerpAdditive(A,t,n,r,a){for(let B=0;B!==a;++B){const Q=t+B;A[Q]=A[Q]+A[n+B]*r}}}const sd="\\[\\]\\.:\\/",Lf=new RegExp("["+sd+"]","g"),gd="[^"+sd+"]",xf="[^"+sd.replace("\\.","")+"]",bf=/((?:WC+[\/:])*)/.source.replace("WC",gd),kf=/(WCOD+)?/.source.replace("WCOD",xf),_f=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",gd),Tf=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",gd),Kf=new RegExp("^"+bf+kf+_f+Tf+"$"),Jf=["material","materials","bones","map"];class Yf{constructor(A,t,n){const r=n||Jr.parseTrackName(t);this._targetGroup=A,this._bindings=A.subscribe_(t,r)}getValue(A,t){this.bind();const n=this._targetGroup.nCachedObjects_,r=this._bindings[n];r!==void 0&&r.getValue(A,t)}setValue(A,t){const n=this._bindings;for(let r=this._targetGroup.nCachedObjects_,a=n.length;r!==a;++r)n[r].setValue(A,t)}bind(){const A=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=A.length;t!==n;++t)A[t].bind()}unbind(){const A=this._bindings;for(let t=this._targetGroup.nCachedObjects_,n=A.length;t!==n;++t)A[t].unbind()}}class Jr{constructor(A,t,n){this.path=t,this.parsedPath=n||Jr.parseTrackName(t),this.node=Jr.findNode(A,this.parsedPath.nodeName),this.rootNode=A,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(A,t,n){return A&&A.isAnimationObjectGroup?new Jr.Composite(A,t,n):new Jr(A,t,n)}static sanitizeNodeName(A){return A.replace(/\s/g,"_").replace(Lf,"")}static parseTrackName(A){const t=Kf.exec(A);if(t===null)throw new Error("PropertyBinding: Cannot parse trackName: "+A);const n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=n.nodeName&&n.nodeName.lastIndexOf(".");if(r!==void 0&&r!==-1){const a=n.nodeName.substring(r+1);Jf.indexOf(a)!==-1&&(n.nodeName=n.nodeName.substring(0,r),n.objectName=a)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+A);return n}static findNode(A,t){if(t===void 0||t===""||t==="."||t===-1||t===A.name||t===A.uuid)return A;if(A.skeleton){const n=A.skeleton.getBoneByName(t);if(n!==void 0)return n}if(A.children){const n=function(a){for(let B=0;B<a.length;B++){const Q=a[B];if(Q.name===t||Q.uuid===t)return Q;const y=n(Q.children);if(y)return y}return null},r=n(A.children);if(r)return r}return null}_getValue_unavailable(){}_setValue_unavailable(){}_getValue_direct(A,t){A[t]=this.targetObject[this.propertyName]}_getValue_array(A,t){const n=this.resolvedProperty;for(let r=0,a=n.length;r!==a;++r)A[t++]=n[r]}_getValue_arrayElement(A,t){A[t]=this.resolvedProperty[this.propertyIndex]}_getValue_toArray(A,t){this.resolvedProperty.toArray(A,t)}_setValue_direct(A,t){this.targetObject[this.propertyName]=A[t]}_setValue_direct_setNeedsUpdate(A,t){this.targetObject[this.propertyName]=A[t],this.targetObject.needsUpdate=!0}_setValue_direct_setMatrixWorldNeedsUpdate(A,t){this.targetObject[this.propertyName]=A[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_array(A,t){const n=this.resolvedProperty;for(let r=0,a=n.length;r!==a;++r)n[r]=A[t++]}_setValue_array_setNeedsUpdate(A,t){const n=this.resolvedProperty;for(let r=0,a=n.length;r!==a;++r)n[r]=A[t++];this.targetObject.needsUpdate=!0}_setValue_array_setMatrixWorldNeedsUpdate(A,t){const n=this.resolvedProperty;for(let r=0,a=n.length;r!==a;++r)n[r]=A[t++];this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_arrayElement(A,t){this.resolvedProperty[this.propertyIndex]=A[t]}_setValue_arrayElement_setNeedsUpdate(A,t){this.resolvedProperty[this.propertyIndex]=A[t],this.targetObject.needsUpdate=!0}_setValue_arrayElement_setMatrixWorldNeedsUpdate(A,t){this.resolvedProperty[this.propertyIndex]=A[t],this.targetObject.matrixWorldNeedsUpdate=!0}_setValue_fromArray(A,t){this.resolvedProperty.fromArray(A,t)}_setValue_fromArray_setNeedsUpdate(A,t){this.resolvedProperty.fromArray(A,t),this.targetObject.needsUpdate=!0}_setValue_fromArray_setMatrixWorldNeedsUpdate(A,t){this.resolvedProperty.fromArray(A,t),this.targetObject.matrixWorldNeedsUpdate=!0}_getValue_unbound(A,t){this.bind(),this.getValue(A,t)}_setValue_unbound(A,t){this.bind(),this.setValue(A,t)}bind(){let A=this.node;const t=this.parsedPath,n=t.objectName,r=t.propertyName;let a=t.propertyIndex;if(A||(A=Jr.findNode(this.rootNode,t.nodeName),this.node=A),this.getValue=this._getValue_unavailable,this.setValue=this._setValue_unavailable,!A){console.warn("THREE.PropertyBinding: No target node found for track: "+this.path+".");return}if(n){let M=t.objectIndex;switch(n){case"materials":if(!A.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!A.material.materials){console.error("THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.",this);return}A=A.material.materials;break;case"bones":if(!A.skeleton){console.error("THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.",this);return}A=A.skeleton.bones;for(let K=0;K<A.length;K++)if(A[K].name===M){M=K;break}break;case"map":if("map"in A){A=A.map;break}if(!A.material){console.error("THREE.PropertyBinding: Can not bind to material as node does not have a material.",this);return}if(!A.material.map){console.error("THREE.PropertyBinding: Can not bind to material.map as node.material does not have a map.",this);return}A=A.material.map;break;default:if(A[n]===void 0){console.error("THREE.PropertyBinding: Can not bind to objectName of node undefined.",this);return}A=A[n]}if(M!==void 0){if(A[M]===void 0){console.error("THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.",this,A);return}A=A[M]}}const B=A[r];if(B===void 0){const M=t.nodeName;console.error("THREE.PropertyBinding: Trying to update property for track: "+M+"."+r+" but it wasn't found.",A);return}let Q=this.Versioning.None;this.targetObject=A,A.needsUpdate!==void 0?Q=this.Versioning.NeedsUpdate:A.matrixWorldNeedsUpdate!==void 0&&(Q=this.Versioning.MatrixWorldNeedsUpdate);let y=this.BindingType.Direct;if(a!==void 0){if(r==="morphTargetInfluences"){if(!A.geometry){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.",this);return}if(!A.geometry.morphAttributes){console.error("THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.",this);return}A.morphTargetDictionary[a]!==void 0&&(a=A.morphTargetDictionary[a])}y=this.BindingType.ArrayElement,this.resolvedProperty=B,this.propertyIndex=a}else B.fromArray!==void 0&&B.toArray!==void 0?(y=this.BindingType.HasFromToArray,this.resolvedProperty=B):Array.isArray(B)?(y=this.BindingType.EntireArray,this.resolvedProperty=B):this.propertyName=r;this.getValue=this.GetterByBindingType[y],this.setValue=this.SetterByBindingTypeAndVersioning[y][Q]}unbind(){this.node=null,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}}Jr.Composite=Yf,Jr.prototype.BindingType={Direct:0,EntireArray:1,ArrayElement:2,HasFromToArray:3},Jr.prototype.Versioning={None:0,NeedsUpdate:1,MatrixWorldNeedsUpdate:2},Jr.prototype.GetterByBindingType=[Jr.prototype._getValue_direct,Jr.prototype._getValue_array,Jr.prototype._getValue_arrayElement,Jr.prototype._getValue_toArray],Jr.prototype.SetterByBindingTypeAndVersioning=[[Jr.prototype._setValue_direct,Jr.prototype._setValue_direct_setNeedsUpdate,Jr.prototype._setValue_direct_setMatrixWorldNeedsUpdate],[Jr.prototype._setValue_array,Jr.prototype._setValue_array_setNeedsUpdate,Jr.prototype._setValue_array_setMatrixWorldNeedsUpdate],[Jr.prototype._setValue_arrayElement,Jr.prototype._setValue_arrayElement_setNeedsUpdate,Jr.prototype._setValue_arrayElement_setMatrixWorldNeedsUpdate],[Jr.prototype._setValue_fromArray,Jr.prototype._setValue_fromArray_setNeedsUpdate,Jr.prototype._setValue_fromArray_setMatrixWorldNeedsUpdate]];class Hf{constructor(){this.isAnimationObjectGroup=!0,this.uuid=Yo(),this._objects=Array.prototype.slice.call(arguments),this.nCachedObjects_=0;const A={};this._indicesByUUID=A;for(let n=0,r=arguments.length;n!==r;++n)A[arguments[n].uuid]=n;this._paths=[],this._parsedPaths=[],this._bindings=[],this._bindingsIndicesByPath={};const t=this;this.stats={objects:{get total(){return t._objects.length},get inUse(){return this.total-t.nCachedObjects_}},get bindingsPerObject(){return t._bindings.length}}}add(){const A=this._objects,t=this._indicesByUUID,n=this._paths,r=this._parsedPaths,a=this._bindings,B=a.length;let Q,y=A.length,M=this.nCachedObjects_;for(let K=0,W=arguments.length;K!==W;++K){const V=arguments[K],X=V.uuid;let iA=t[X];if(iA===void 0){iA=y++,t[X]=iA,A.push(V);for(let BA=0,nA=B;BA!==nA;++BA)a[BA].push(new Jr(V,n[BA],r[BA]))}else if(iA<M){Q=A[iA];const BA=--M,nA=A[BA];t[nA.uuid]=iA,A[iA]=nA,t[X]=BA,A[BA]=V;for(let tA=0,RA=B;tA!==RA;++tA){const mA=a[tA],kA=mA[BA];let _e=mA[iA];mA[iA]=kA,_e===void 0&&(_e=new Jr(V,n[tA],r[tA])),mA[BA]=_e}}else A[iA]!==Q&&console.error("THREE.AnimationObjectGroup: Different objects with the same UUID detected. Clean the caches or recreate your infrastructure when reloading scenes.")}this.nCachedObjects_=M}remove(){const A=this._objects,t=this._indicesByUUID,n=this._bindings,r=n.length;let a=this.nCachedObjects_;for(let B=0,Q=arguments.length;B!==Q;++B){const y=arguments[B],M=y.uuid,K=t[M];if(K!==void 0&&K>=a){const W=a++,V=A[W];t[V.uuid]=K,A[K]=V,t[M]=W,A[W]=y;for(let X=0,iA=r;X!==iA;++X){const BA=n[X],nA=BA[W],tA=BA[K];BA[K]=nA,BA[W]=tA}}}this.nCachedObjects_=a}uncache(){const A=this._objects,t=this._indicesByUUID,n=this._bindings,r=n.length;let a=this.nCachedObjects_,B=A.length;for(let Q=0,y=arguments.length;Q!==y;++Q){const M=arguments[Q],K=M.uuid,W=t[K];if(W!==void 0)if(delete t[K],W<a){const V=--a,X=A[V],iA=--B,BA=A[iA];t[X.uuid]=W,A[W]=X,t[BA.uuid]=V,A[V]=BA,A.pop();for(let nA=0,tA=r;nA!==tA;++nA){const RA=n[nA],mA=RA[V],kA=RA[iA];RA[W]=mA,RA[V]=kA,RA.pop()}}else{const V=--B,X=A[V];V>0&&(t[X.uuid]=W),A[W]=X,A.pop();for(let iA=0,BA=r;iA!==BA;++iA){const nA=n[iA];nA[W]=nA[V],nA.pop()}}}this.nCachedObjects_=a}subscribe_(A,t){const n=this._bindingsIndicesByPath;let r=n[A];const a=this._bindings;if(r!==void 0)return a[r];const B=this._paths,Q=this._parsedPaths,y=this._objects,M=y.length,K=this.nCachedObjects_,W=new Array(M);r=a.length,n[A]=r,B.push(A),Q.push(t),a.push(W);for(let V=K,X=y.length;V!==X;++V){const iA=y[V];W[V]=new Jr(iA,A,t)}return W}unsubscribe_(A){const t=this._bindingsIndicesByPath,n=t[A];if(n!==void 0){const r=this._paths,a=this._parsedPaths,B=this._bindings,Q=B.length-1,y=B[Q],M=A[Q];t[M]=n,B[n]=y,B.pop(),a[n]=a[Q],a.pop(),r[n]=r[Q],r.pop()}}}class du{constructor(A,t,n=null,r=t.blendMode){this._mixer=A,this._clip=t,this._localRoot=n,this.blendMode=r;const a=t.tracks,B=a.length,Q=new Array(B),y={endingStart:lg,endingEnd:lg};for(let M=0;M!==B;++M){const K=a[M].createInterpolant(null);Q[M]=K,K.settings=y}this._interpolantSettings=y,this._interpolants=Q,this._propertyBindings=new Array(B),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=Zg,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&this.timeScale!==0&&this._startTime===null&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(A){return this._startTime=A,this}setLoop(A,t){return this.loop=A,this.repetitions=t,this}setEffectiveWeight(A){return this.weight=A,this._effectiveWeight=this.enabled?A:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(A){return this._scheduleFading(A,0,1)}fadeOut(A){return this._scheduleFading(A,1,0)}crossFadeFrom(A,t,n){if(A.fadeOut(t),this.fadeIn(t),n){const r=this._clip.duration,a=A._clip.duration,B=a/r,Q=r/a;A.warp(1,B,t),this.warp(Q,1,t)}return this}crossFadeTo(A,t,n){return A.crossFadeFrom(this,t,n)}stopFading(){const A=this._weightInterpolant;return A!==null&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(A)),this}setEffectiveTimeScale(A){return this.timeScale=A,this._effectiveTimeScale=this.paused?0:A,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(A){return this.timeScale=this._clip.duration/A,this.stopWarping()}syncWith(A){return this.time=A.time,this.timeScale=A.timeScale,this.stopWarping()}halt(A){return this.warp(this._effectiveTimeScale,0,A)}warp(A,t,n){const r=this._mixer,a=r.time,B=this.timeScale;let Q=this._timeScaleInterpolant;Q===null&&(Q=r._lendControlInterpolant(),this._timeScaleInterpolant=Q);const y=Q.parameterPositions,M=Q.sampleValues;return y[0]=a,y[1]=a+n,M[0]=A/B,M[1]=t/B,this}stopWarping(){const A=this._timeScaleInterpolant;return A!==null&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(A)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(A,t,n,r){if(!this.enabled){this._updateWeight(A);return}const a=this._startTime;if(a!==null){const y=(A-a)*n;y<0||n===0?t=0:(this._startTime=null,t=n*y)}t*=this._updateTimeScale(A);const B=this._updateTime(t),Q=this._updateWeight(A);if(Q>0){const y=this._interpolants,M=this._propertyBindings;switch(this.blendMode){case Ia:for(let K=0,W=y.length;K!==W;++K)y[K].evaluate(B),M[K].accumulateAdditive(Q);break;case Rs:default:for(let K=0,W=y.length;K!==W;++K)y[K].evaluate(B),M[K].accumulate(r,Q)}}}_updateWeight(A){let t=0;if(this.enabled){t=this.weight;const n=this._weightInterpolant;if(n!==null){const r=n.evaluate(A)[0];t*=r,A>n.parameterPositions[1]&&(this.stopFading(),r===0&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(A){let t=0;if(!this.paused){t=this.timeScale;const n=this._timeScaleInterpolant;if(n!==null){const r=n.evaluate(A)[0];t*=r,A>n.parameterPositions[1]&&(this.stopWarping(),t===0?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(A){const t=this._clip.duration,n=this.loop;let r=this.time+A,a=this._loopCount;const B=n===jg;if(A===0)return a===-1?r:B&&(a&1)===1?t-r:r;if(n===qa){a===-1&&(this._loopCount=0,this._setEndings(!0,!0,!1));A:{if(r>=t)r=t;else if(r<0)r=0;else{this.time=r;break A}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:A<0?-1:1})}}else{if(a===-1&&(A>=0?(a=0,this._setEndings(!0,this.repetitions===0,B)):this._setEndings(this.repetitions===0,!0,B)),r>=t||r<0){const Q=Math.floor(r/t);r-=t*Q,a+=Math.abs(Q);const y=this.repetitions-a;if(y<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,r=A>0?t:0,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:A>0?1:-1});else{if(y===1){const M=A<0;this._setEndings(M,!M,B)}else this._setEndings(!1,!1,B);this._loopCount=a,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:Q})}}else this.time=r;if(B&&(a&1)===1)return t-r}return r}_setEndings(A,t,n){const r=this._interpolantSettings;n?(r.endingStart=rg,r.endingEnd=rg):(A?r.endingStart=this.zeroSlopeAtStart?rg:lg:r.endingStart=Lg,t?r.endingEnd=this.zeroSlopeAtEnd?rg:lg:r.endingEnd=Lg)}_scheduleFading(A,t,n){const r=this._mixer,a=r.time;let B=this._weightInterpolant;B===null&&(B=r._lendControlInterpolant(),this._weightInterpolant=B);const Q=B.parameterPositions,y=B.sampleValues;return Q[0]=a,y[0]=t,Q[1]=a+A,y[1]=n,this}}const Pf=new Float32Array(1);class Of extends Xs{constructor(A){super(),this._root=A,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(A,t){const n=A._localRoot||this._root,r=A._clip.tracks,a=r.length,B=A._propertyBindings,Q=A._interpolants,y=n.uuid,M=this._bindingsByRootAndName;let K=M[y];K===void 0&&(K={},M[y]=K);for(let W=0;W!==a;++W){const V=r[W],X=V.name;let iA=K[X];if(iA!==void 0)++iA.referenceCount,B[W]=iA;else{if(iA=B[W],iA!==void 0){iA._cacheIndex===null&&(++iA.referenceCount,this._addInactiveBinding(iA,y,X));continue}const BA=t&&t._propertyBindings[W].binding.parsedPath;iA=new lu(Jr.create(n,X,BA),V.ValueTypeName,V.getValueSize()),++iA.referenceCount,this._addInactiveBinding(iA,y,X),B[W]=iA}Q[W].resultBuffer=iA.buffer}}_activateAction(A){if(!this._isActiveAction(A)){if(A._cacheIndex===null){const n=(A._localRoot||this._root).uuid,r=A._clip.uuid,a=this._actionsByClip[r];this._bindAction(A,a&&a.knownActions[0]),this._addInactiveAction(A,r,n)}const t=A._propertyBindings;for(let n=0,r=t.length;n!==r;++n){const a=t[n];a.useCount++===0&&(this._lendBinding(a),a.saveOriginalState())}this._lendAction(A)}}_deactivateAction(A){if(this._isActiveAction(A)){const t=A._propertyBindings;for(let n=0,r=t.length;n!==r;++n){const a=t[n];--a.useCount===0&&(a.restoreOriginalState(),this._takeBackBinding(a))}this._takeBackAction(A)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;const A=this;this.stats={actions:{get total(){return A._actions.length},get inUse(){return A._nActiveActions}},bindings:{get total(){return A._bindings.length},get inUse(){return A._nActiveBindings}},controlInterpolants:{get total(){return A._controlInterpolants.length},get inUse(){return A._nActiveControlInterpolants}}}}_isActiveAction(A){const t=A._cacheIndex;return t!==null&&t<this._nActiveActions}_addInactiveAction(A,t,n){const r=this._actions,a=this._actionsByClip;let B=a[t];if(B===void 0)B={knownActions:[A],actionByRoot:{}},A._byClipCacheIndex=0,a[t]=B;else{const Q=B.knownActions;A._byClipCacheIndex=Q.length,Q.push(A)}A._cacheIndex=r.length,r.push(A),B.actionByRoot[n]=A}_removeInactiveAction(A){const t=this._actions,n=t[t.length-1],r=A._cacheIndex;n._cacheIndex=r,t[r]=n,t.pop(),A._cacheIndex=null;const a=A._clip.uuid,B=this._actionsByClip,Q=B[a],y=Q.knownActions,M=y[y.length-1],K=A._byClipCacheIndex;M._byClipCacheIndex=K,y[K]=M,y.pop(),A._byClipCacheIndex=null;const W=Q.actionByRoot,V=(A._localRoot||this._root).uuid;delete W[V],y.length===0&&delete B[a],this._removeInactiveBindingsForAction(A)}_removeInactiveBindingsForAction(A){const t=A._propertyBindings;for(let n=0,r=t.length;n!==r;++n){const a=t[n];--a.referenceCount===0&&this._removeInactiveBinding(a)}}_lendAction(A){const t=this._actions,n=A._cacheIndex,r=this._nActiveActions++,a=t[r];A._cacheIndex=r,t[r]=A,a._cacheIndex=n,t[n]=a}_takeBackAction(A){const t=this._actions,n=A._cacheIndex,r=--this._nActiveActions,a=t[r];A._cacheIndex=r,t[r]=A,a._cacheIndex=n,t[n]=a}_addInactiveBinding(A,t,n){const r=this._bindingsByRootAndName,a=this._bindings;let B=r[t];B===void 0&&(B={},r[t]=B),B[n]=A,A._cacheIndex=a.length,a.push(A)}_removeInactiveBinding(A){const t=this._bindings,n=A.binding,r=n.rootNode.uuid,a=n.path,B=this._bindingsByRootAndName,Q=B[r],y=t[t.length-1],M=A._cacheIndex;y._cacheIndex=M,t[M]=y,t.pop(),delete Q[a],Object.keys(Q).length===0&&delete B[r]}_lendBinding(A){const t=this._bindings,n=A._cacheIndex,r=this._nActiveBindings++,a=t[r];A._cacheIndex=r,t[r]=A,a._cacheIndex=n,t[n]=a}_takeBackBinding(A){const t=this._bindings,n=A._cacheIndex,r=--this._nActiveBindings,a=t[r];A._cacheIndex=r,t[r]=A,a._cacheIndex=n,t[n]=a}_lendControlInterpolant(){const A=this._controlInterpolants,t=this._nActiveControlInterpolants++;let n=A[t];return n===void 0&&(n=new $l(new Float32Array(2),new Float32Array(2),1,Pf),n.__cacheIndex=t,A[t]=n),n}_takeBackControlInterpolant(A){const t=this._controlInterpolants,n=A.__cacheIndex,r=--this._nActiveControlInterpolants,a=t[r];A.__cacheIndex=r,t[r]=A,a.__cacheIndex=n,t[n]=a}clipAction(A,t,n){const r=t||this._root,a=r.uuid;let B=typeof A=="string"?YQ.findByName(r,A):A;const Q=B!==null?B.uuid:A,y=this._actionsByClip[Q];let M=null;if(n===void 0&&(B!==null?n=B.blendMode:n=Rs),y!==void 0){const W=y.actionByRoot[a];if(W!==void 0&&W.blendMode===n)return W;M=y.knownActions[0],B===null&&(B=M._clip)}if(B===null)return null;const K=new du(this,B,t,n);return this._bindAction(K,M),this._addInactiveAction(K,Q,a),K}existingAction(A,t){const n=t||this._root,r=n.uuid,a=typeof A=="string"?YQ.findByName(n,A):A,B=a?a.uuid:A,Q=this._actionsByClip[B];return Q!==void 0&&Q.actionByRoot[r]||null}stopAllAction(){const A=this._actions,t=this._nActiveActions;for(let n=t-1;n>=0;--n)A[n].stop();return this}update(A){A*=this.timeScale;const t=this._actions,n=this._nActiveActions,r=this.time+=A,a=Math.sign(A),B=this._accuIndex^=1;for(let M=0;M!==n;++M)t[M]._update(r,A,a,B);const Q=this._bindings,y=this._nActiveBindings;for(let M=0;M!==y;++M)Q[M].apply(B);return this}setTime(A){this.time=0;for(let t=0;t<this._actions.length;t++)this._actions[t].time=0;return this.update(A)}getRoot(){return this._root}uncacheClip(A){const t=this._actions,n=A.uuid,r=this._actionsByClip,a=r[n];if(a!==void 0){const B=a.knownActions;for(let Q=0,y=B.length;Q!==y;++Q){const M=B[Q];this._deactivateAction(M);const K=M._cacheIndex,W=t[t.length-1];M._cacheIndex=null,M._byClipCacheIndex=null,W._cacheIndex=K,t[K]=W,t.pop(),this._removeInactiveBindingsForAction(M)}delete r[n]}}uncacheRoot(A){const t=A.uuid,n=this._actionsByClip;for(const B in n){const Q=n[B].actionByRoot,y=Q[t];y!==void 0&&(this._deactivateAction(y),this._removeInactiveAction(y))}const r=this._bindingsByRootAndName,a=r[t];if(a!==void 0)for(const B in a){const Q=a[B];Q.restoreOriginalState(),this._removeInactiveBinding(Q)}}uncacheAction(A,t){const n=this.existingAction(A,t);n!==null&&(this._deactivateAction(n),this._removeInactiveAction(n))}}class ad{constructor(A){this.value=A}clone(){return new ad(this.value.clone===void 0?this.value:this.value.clone())}}let qf=0;class Wf extends Xs{constructor(){super(),this.isUniformsGroup=!0,Object.defineProperty(this,"id",{value:qf++}),this.name="",this.usage=vi,this.uniforms=[]}add(A){return this.uniforms.push(A),this}remove(A){const t=this.uniforms.indexOf(A);return t!==-1&&this.uniforms.splice(t,1),this}setName(A){return this.name=A,this}setUsage(A){return this.usage=A,this}dispose(){return this.dispatchEvent({type:"dispose"}),this}copy(A){this.name=A.name,this.usage=A.usage;const t=A.uniforms;this.uniforms.length=0;for(let n=0,r=t.length;n<r;n++){const a=Array.isArray(t[n])?t[n]:[t[n]];for(let B=0;B<a.length;B++)this.uniforms.push(a[B].clone())}return this}clone(){return new this.constructor().copy(this)}}class Vf extends gr{constructor(A,t,n=1){super(A,t),this.isInstancedInterleavedBuffer=!0,this.meshPerAttribute=n}copy(A){return super.copy(A),this.meshPerAttribute=A.meshPerAttribute,this}clone(A){const t=super.clone(A);return t.meshPerAttribute=this.meshPerAttribute,t}toJSON(A){const t=super.toJSON(A);return t.isInstancedInterleavedBuffer=!0,t.meshPerAttribute=this.meshPerAttribute,t}}class Zf{constructor(A,t,n,r,a){this.isGLBufferAttribute=!0,this.name="",this.buffer=A,this.type=t,this.itemSize=n,this.elementSize=r,this.count=a,this.version=0}set needsUpdate(A){A===!0&&this.version++}setBuffer(A){return this.buffer=A,this}setType(A,t){return this.type=A,this.elementSize=t,this}setItemSize(A){return this.itemSize=A,this}setCount(A){return this.count=A,this}}const uu=new tn;class jf{constructor(A,t,n=0,r=1/0){this.ray=new Tr(A,t),this.near=n,this.far=r,this.camera=null,this.layers=new eg,this.params={Mesh:{},Line:{threshold:1},LOD:{},Points:{threshold:1},Sprite:{}}}set(A,t){this.ray.set(A,t)}setFromCamera(A,t){t.isPerspectiveCamera?(this.ray.origin.setFromMatrixPosition(t.matrixWorld),this.ray.direction.set(A.x,A.y,.5).unproject(t).sub(this.ray.origin).normalize(),this.camera=t):t.isOrthographicCamera?(this.ray.origin.set(A.x,A.y,(t.near+t.far)/(t.near-t.far)).unproject(t),this.ray.direction.set(0,0,-1).transformDirection(t.matrixWorld),this.camera=t):console.error("THREE.Raycaster: Unsupported camera type: "+t.type)}setFromXRController(A){return uu.identity().extractRotation(A.matrixWorld),this.ray.origin.setFromMatrixPosition(A.matrixWorld),this.ray.direction.set(0,0,-1).applyMatrix4(uu),this}intersectObject(A,t=!0,n=[]){return Id(A,this,n,t),n.sort(fu),n}intersectObjects(A,t=!0,n=[]){for(let r=0,a=A.length;r<a;r++)Id(A[r],this,n,t);return n.sort(fu),n}}function fu(I,A){return I.distance-A.distance}function Id(I,A,t,n){if(I.layers.test(A.layers)&&I.raycast(A,t),n===!0){const r=I.children;for(let a=0,B=r.length;a<B;a++)Id(r[a],A,t,!0)}}class Xf{constructor(A=1,t=0,n=0){return this.radius=A,this.phi=t,this.theta=n,this}set(A,t,n){return this.radius=A,this.phi=t,this.theta=n,this}copy(A){return this.radius=A.radius,this.phi=A.phi,this.theta=A.theta,this}makeSafe(){return this.phi=Math.max(1e-6,Math.min(Math.PI-1e-6,this.phi)),this}setFromVector3(A){return this.setFromCartesianCoords(A.x,A.y,A.z)}setFromCartesianCoords(A,t,n){return this.radius=Math.sqrt(A*A+t*t+n*n),this.radius===0?(this.theta=0,this.phi=0):(this.theta=Math.atan2(A,n),this.phi=Math.acos(Co(t/this.radius,-1,1))),this}clone(){return new this.constructor().copy(this)}}class zf{constructor(A=1,t=0,n=0){return this.radius=A,this.theta=t,this.y=n,this}set(A,t,n){return this.radius=A,this.theta=t,this.y=n,this}copy(A){return this.radius=A.radius,this.theta=A.theta,this.y=A.y,this}setFromVector3(A){return this.setFromCartesianCoords(A.x,A.y,A.z)}setFromCartesianCoords(A,t,n){return this.radius=Math.sqrt(A*A+n*n),this.theta=Math.atan2(A,n),this.y=t,this}clone(){return new this.constructor().copy(this)}}const pu=new Ot;class $f{constructor(A=new Ot(1/0,1/0),t=new Ot(-1/0,-1/0)){this.isBox2=!0,this.min=A,this.max=t}set(A,t){return this.min.copy(A),this.max.copy(t),this}setFromPoints(A){this.makeEmpty();for(let t=0,n=A.length;t<n;t++)this.expandByPoint(A[t]);return this}setFromCenterAndSize(A,t){const n=pu.copy(t).multiplyScalar(.5);return this.min.copy(A).sub(n),this.max.copy(A).add(n),this}clone(){return new this.constructor().copy(this)}copy(A){return this.min.copy(A.min),this.max.copy(A.max),this}makeEmpty(){return this.min.x=this.min.y=1/0,this.max.x=this.max.y=-1/0,this}isEmpty(){return this.max.x<this.min.x||this.max.y<this.min.y}getCenter(A){return this.isEmpty()?A.set(0,0):A.addVectors(this.min,this.max).multiplyScalar(.5)}getSize(A){return this.isEmpty()?A.set(0,0):A.subVectors(this.max,this.min)}expandByPoint(A){return this.min.min(A),this.max.max(A),this}expandByVector(A){return this.min.sub(A),this.max.add(A),this}expandByScalar(A){return this.min.addScalar(-A),this.max.addScalar(A),this}containsPoint(A){return!(A.x<this.min.x||A.x>this.max.x||A.y<this.min.y||A.y>this.max.y)}containsBox(A){return this.min.x<=A.min.x&&A.max.x<=this.max.x&&this.min.y<=A.min.y&&A.max.y<=this.max.y}getParameter(A,t){return t.set((A.x-this.min.x)/(this.max.x-this.min.x),(A.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(A){return!(A.max.x<this.min.x||A.min.x>this.max.x||A.max.y<this.min.y||A.min.y>this.max.y)}clampPoint(A,t){return t.copy(A).clamp(this.min,this.max)}distanceToPoint(A){return this.clampPoint(A,pu).distanceTo(A)}intersect(A){return this.min.max(A.min),this.max.min(A.max),this.isEmpty()&&this.makeEmpty(),this}union(A){return this.min.min(A.min),this.max.max(A.max),this}translate(A){return this.min.add(A),this.max.add(A),this}equals(A){return A.min.equals(this.min)&&A.max.equals(this.max)}}const mu=new Ee,_h=new Ee;class Ap{constructor(A=new Ee,t=new Ee){this.start=A,this.end=t}set(A,t){return this.start.copy(A),this.end.copy(t),this}copy(A){return this.start.copy(A.start),this.end.copy(A.end),this}getCenter(A){return A.addVectors(this.start,this.end).multiplyScalar(.5)}delta(A){return A.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(A,t){return this.delta(t).multiplyScalar(A).add(this.start)}closestPointToPointParameter(A,t){mu.subVectors(A,this.start),_h.subVectors(this.end,this.start);const n=_h.dot(_h);let a=_h.dot(mu)/n;return t&&(a=Co(a,0,1)),a}closestPointToPoint(A,t,n){const r=this.closestPointToPointParameter(A,t);return this.delta(n).multiplyScalar(r).add(this.start)}applyMatrix4(A){return this.start.applyMatrix4(A),this.end.applyMatrix4(A),this}equals(A){return A.start.equals(this.start)&&A.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}const Du=new Ee;class ep extends qA{constructor(A,t){super(),this.light=A,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const n=new li,r=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let B=0,Q=1,y=32;B<y;B++,Q++){const M=B/y*Math.PI*2,K=Q/y*Math.PI*2;r.push(Math.cos(M),Math.sin(M),1,Math.cos(K),Math.sin(K),1)}n.setAttribute("position",new vt(r,3));const a=new P({fog:!1,toneMapped:!1});this.cone=new rA(n,a),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),this.parent?(this.parent.updateWorldMatrix(!0),this.matrix.copy(this.parent.matrixWorld).invert().multiply(this.light.matrixWorld)):this.matrix.copy(this.light.matrixWorld),this.matrixWorld.copy(this.light.matrixWorld);const A=this.light.distance?this.light.distance:1e3,t=A*Math.tan(this.light.angle);this.cone.scale.set(t,t,A),Du.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(Du),this.color!==void 0?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}}const XC=new Ee,Th=new tn,Cd=new tn;class tp extends rA{constructor(A){const t=yu(A),n=new li,r=[],a=[],B=new ve(0,0,1),Q=new ve(0,1,0);for(let M=0;M<t.length;M++){const K=t[M];K.parent&&K.parent.isBone&&(r.push(0,0,0),r.push(0,0,0),a.push(B.r,B.g,B.b),a.push(Q.r,Q.g,Q.b))}n.setAttribute("position",new vt(r,3)),n.setAttribute("color",new vt(a,3));const y=new P({vertexColors:!0,depthTest:!1,depthWrite:!1,toneMapped:!1,transparent:!0});super(n,y),this.isSkeletonHelper=!0,this.type="SkeletonHelper",this.root=A,this.bones=t,this.matrix=A.matrixWorld,this.matrixAutoUpdate=!1}updateMatrixWorld(A){const t=this.bones,n=this.geometry,r=n.getAttribute("position");Cd.copy(this.root.matrixWorld).invert();for(let a=0,B=0;a<t.length;a++){const Q=t[a];Q.parent&&Q.parent.isBone&&(Th.multiplyMatrices(Cd,Q.matrixWorld),XC.setFromMatrixPosition(Th),r.setXYZ(B,XC.x,XC.y,XC.z),Th.multiplyMatrices(Cd,Q.parent.matrixWorld),XC.setFromMatrixPosition(Th),r.setXYZ(B+1,XC.x,XC.y,XC.z),B+=2)}n.getAttribute("position").needsUpdate=!0,super.updateMatrixWorld(A)}dispose(){this.geometry.dispose(),this.material.dispose()}}function yu(I){const A=[];I.isBone===!0&&A.push(I);for(let t=0;t<I.children.length;t++)A.push.apply(A,yu(I.children[t]));return A}class ip extends mo{constructor(A,t,n){const r=new _Q(t,4,2),a=new At({wireframe:!0,fog:!1,toneMapped:!1});super(r,a),this.light=A,this.color=n,this.type="PointLightHelper",this.matrix=this.light.matrixWorld,this.matrixAutoUpdate=!1,this.update()}dispose(){this.geometry.dispose(),this.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.color!==void 0?this.material.color.set(this.color):this.material.color.copy(this.light.color)}}const np=new Ee,wu=new ve,Mu=new ve;class op extends qA{constructor(A,t,n){super(),this.light=A,this.matrix=A.matrixWorld,this.matrixAutoUpdate=!1,this.color=n,this.type="HemisphereLightHelper";const r=new kQ(t);r.rotateY(Math.PI*.5),this.material=new At({wireframe:!0,fog:!1,toneMapped:!1}),this.color===void 0&&(this.material.vertexColors=!0);const a=r.getAttribute("position"),B=new Float32Array(a.count*3);r.setAttribute("color",new oe(B,3)),this.add(new mo(r,this.material)),this.update()}dispose(){this.children[0].geometry.dispose(),this.children[0].material.dispose()}update(){const A=this.children[0];if(this.color!==void 0)this.material.color.set(this.color);else{const t=A.geometry.getAttribute("color");wu.copy(this.light.color),Mu.copy(this.light.groundColor);for(let n=0,r=t.count;n<r;n++){const a=n<r/2?wu:Mu;t.setXYZ(n,a.r,a.g,a.b)}t.needsUpdate=!0}this.light.updateWorldMatrix(!0,!1),A.lookAt(np.setFromMatrixPosition(this.light.matrixWorld).negate())}}class rp extends rA{constructor(A=10,t=10,n=4473924,r=8947848){n=new ve(n),r=new ve(r);const a=t/2,B=A/t,Q=A/2,y=[],M=[];for(let V=0,X=0,iA=-Q;V<=t;V++,iA+=B){y.push(-Q,0,iA,Q,0,iA),y.push(iA,0,-Q,iA,0,Q);const BA=V===a?n:r;BA.toArray(M,X),X+=3,BA.toArray(M,X),X+=3,BA.toArray(M,X),X+=3,BA.toArray(M,X),X+=3}const K=new li;K.setAttribute("position",new vt(y,3)),K.setAttribute("color",new vt(M,3));const W=new P({vertexColors:!0,toneMapped:!1});super(K,W),this.type="GridHelper"}dispose(){this.geometry.dispose(),this.material.dispose()}}class sp extends rA{constructor(A=10,t=16,n=8,r=64,a=4473924,B=8947848){a=new ve(a),B=new ve(B);const Q=[],y=[];if(t>1)for(let W=0;W<t;W++){const V=W/t*(Math.PI*2),X=Math.sin(V)*A,iA=Math.cos(V)*A;Q.push(0,0,0),Q.push(X,0,iA);const BA=W&1?a:B;y.push(BA.r,BA.g,BA.b),y.push(BA.r,BA.g,BA.b)}for(let W=0;W<n;W++){const V=W&1?a:B,X=A-A/n*W;for(let iA=0;iA<r;iA++){let BA=iA/r*(Math.PI*2),nA=Math.sin(BA)*X,tA=Math.cos(BA)*X;Q.push(nA,0,tA),y.push(V.r,V.g,V.b),BA=(iA+1)/r*(Math.PI*2),nA=Math.sin(BA)*X,tA=Math.cos(BA)*X,Q.push(nA,0,tA),y.push(V.r,V.g,V.b)}}const M=new li;M.setAttribute("position",new vt(Q,3)),M.setAttribute("color",new vt(y,3));const K=new P({vertexColors:!0,toneMapped:!1});super(M,K),this.type="PolarGridHelper"}dispose(){this.geometry.dispose(),this.material.dispose()}}const Su=new Ee,Kh=new Ee,Ru=new Ee;class gp extends qA{constructor(A,t,n){super(),this.light=A,this.matrix=A.matrixWorld,this.matrixAutoUpdate=!1,this.color=n,this.type="DirectionalLightHelper",t===void 0&&(t=1);let r=new li;r.setAttribute("position",new vt([-t,t,0,t,t,0,t,-t,0,-t,-t,0,-t,t,0],3));const a=new P({fog:!1,toneMapped:!1});this.lightPlane=new S(r,a),this.add(this.lightPlane),r=new li,r.setAttribute("position",new vt([0,0,0,0,0,1],3)),this.targetLine=new S(r,a),this.add(this.targetLine),this.update()}dispose(){this.lightPlane.geometry.dispose(),this.lightPlane.material.dispose(),this.targetLine.geometry.dispose(),this.targetLine.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),Su.setFromMatrixPosition(this.light.matrixWorld),Kh.setFromMatrixPosition(this.light.target.matrixWorld),Ru.subVectors(Kh,Su),this.lightPlane.lookAt(Kh),this.color!==void 0?(this.lightPlane.material.color.set(this.color),this.targetLine.material.color.set(this.color)):(this.lightPlane.material.color.copy(this.light.color),this.targetLine.material.color.copy(this.light.color)),this.targetLine.lookAt(Kh),this.targetLine.scale.z=Ru.length()}}const Jh=new Ee,Eg=new Mn;class ap extends rA{constructor(A){const t=new li,n=new P({color:16777215,vertexColors:!0,toneMapped:!1}),r=[],a=[],B={};Q("n1","n2"),Q("n2","n4"),Q("n4","n3"),Q("n3","n1"),Q("f1","f2"),Q("f2","f4"),Q("f4","f3"),Q("f3","f1"),Q("n1","f1"),Q("n2","f2"),Q("n3","f3"),Q("n4","f4"),Q("p","n1"),Q("p","n2"),Q("p","n3"),Q("p","n4"),Q("u1","u2"),Q("u2","u3"),Q("u3","u1"),Q("c","t"),Q("p","c"),Q("cn1","cn2"),Q("cn3","cn4"),Q("cf1","cf2"),Q("cf3","cf4");function Q(iA,BA){y(iA),y(BA)}function y(iA){r.push(0,0,0),a.push(0,0,0),B[iA]===void 0&&(B[iA]=[]),B[iA].push(r.length/3-1)}t.setAttribute("position",new vt(r,3)),t.setAttribute("color",new vt(a,3)),super(t,n),this.type="CameraHelper",this.camera=A,this.camera.updateProjectionMatrix&&this.camera.updateProjectionMatrix(),this.matrix=A.matrixWorld,this.matrixAutoUpdate=!1,this.pointMap=B,this.update();const M=new ve(16755200),K=new ve(16711680),W=new ve(43775),V=new ve(16777215),X=new ve(3355443);this.setColors(M,K,W,V,X)}setColors(A,t,n,r,a){const Q=this.geometry.getAttribute("color");Q.setXYZ(0,A.r,A.g,A.b),Q.setXYZ(1,A.r,A.g,A.b),Q.setXYZ(2,A.r,A.g,A.b),Q.setXYZ(3,A.r,A.g,A.b),Q.setXYZ(4,A.r,A.g,A.b),Q.setXYZ(5,A.r,A.g,A.b),Q.setXYZ(6,A.r,A.g,A.b),Q.setXYZ(7,A.r,A.g,A.b),Q.setXYZ(8,A.r,A.g,A.b),Q.setXYZ(9,A.r,A.g,A.b),Q.setXYZ(10,A.r,A.g,A.b),Q.setXYZ(11,A.r,A.g,A.b),Q.setXYZ(12,A.r,A.g,A.b),Q.setXYZ(13,A.r,A.g,A.b),Q.setXYZ(14,A.r,A.g,A.b),Q.setXYZ(15,A.r,A.g,A.b),Q.setXYZ(16,A.r,A.g,A.b),Q.setXYZ(17,A.r,A.g,A.b),Q.setXYZ(18,A.r,A.g,A.b),Q.setXYZ(19,A.r,A.g,A.b),Q.setXYZ(20,A.r,A.g,A.b),Q.setXYZ(21,A.r,A.g,A.b),Q.setXYZ(22,A.r,A.g,A.b),Q.setXYZ(23,A.r,A.g,A.b),Q.setXYZ(24,t.r,t.g,t.b),Q.setXYZ(25,t.r,t.g,t.b),Q.setXYZ(26,t.r,t.g,t.b),Q.setXYZ(27,t.r,t.g,t.b),Q.setXYZ(28,t.r,t.g,t.b),Q.setXYZ(29,t.r,t.g,t.b),Q.setXYZ(30,t.r,t.g,t.b),Q.setXYZ(31,t.r,t.g,t.b),Q.setXYZ(32,n.r,n.g,n.b),Q.setXYZ(33,n.r,n.g,n.b),Q.setXYZ(34,n.r,n.g,n.b),Q.setXYZ(35,n.r,n.g,n.b),Q.setXYZ(36,n.r,n.g,n.b),Q.setXYZ(37,n.r,n.g,n.b),Q.setXYZ(38,r.r,r.g,r.b),Q.setXYZ(39,r.r,r.g,r.b),Q.setXYZ(40,a.r,a.g,a.b),Q.setXYZ(41,a.r,a.g,a.b),Q.setXYZ(42,a.r,a.g,a.b),Q.setXYZ(43,a.r,a.g,a.b),Q.setXYZ(44,a.r,a.g,a.b),Q.setXYZ(45,a.r,a.g,a.b),Q.setXYZ(46,a.r,a.g,a.b),Q.setXYZ(47,a.r,a.g,a.b),Q.setXYZ(48,a.r,a.g,a.b),Q.setXYZ(49,a.r,a.g,a.b),Q.needsUpdate=!0}update(){const A=this.geometry,t=this.pointMap,n=1,r=1;Eg.projectionMatrixInverse.copy(this.camera.projectionMatrixInverse),Sg("c",t,A,Eg,0,0,-1),Sg("t",t,A,Eg,0,0,1),Sg("n1",t,A,Eg,-n,-r,-1),Sg("n2",t,A,Eg,n,-r,-1),Sg("n3",t,A,Eg,-n,r,-1),Sg("n4",t,A,Eg,n,r,-1),Sg("f1",t,A,Eg,-n,-r,1),Sg("f2",t,A,Eg,n,-r,1),Sg("f3",t,A,Eg,-n,r,1),Sg("f4",t,A,Eg,n,r,1),Sg("u1",t,A,Eg,n*.7,r*1.1,-1),Sg("u2",t,A,Eg,-n*.7,r*1.1,-1),Sg("u3",t,A,Eg,0,r*2,-1),Sg("cf1",t,A,Eg,-n,0,1),Sg("cf2",t,A,Eg,n,0,1),Sg("cf3",t,A,Eg,0,-r,1),Sg("cf4",t,A,Eg,0,r,1),Sg("cn1",t,A,Eg,-n,0,-1),Sg("cn2",t,A,Eg,n,0,-1),Sg("cn3",t,A,Eg,0,-r,-1),Sg("cn4",t,A,Eg,0,r,-1),A.getAttribute("position").needsUpdate=!0}dispose(){this.geometry.dispose(),this.material.dispose()}}function Sg(I,A,t,n,r,a,B){Jh.set(r,a,B).unproject(n);const Q=A[I];if(Q!==void 0){const y=t.getAttribute("position");for(let M=0,K=Q.length;M<K;M++)y.setXYZ(Q[M],Jh.x,Jh.y,Jh.z)}}const Yh=new To;class Ip extends rA{constructor(A,t=16776960){const n=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),r=new Float32Array(8*3),a=new li;a.setIndex(new oe(n,1)),a.setAttribute("position",new oe(r,3)),super(a,new P({color:t,toneMapped:!1})),this.object=A,this.type="BoxHelper",this.matrixAutoUpdate=!1,this.update()}update(A){if(A!==void 0&&console.warn("THREE.BoxHelper: .update() has no longer arguments."),this.object!==void 0&&Yh.setFromObject(this.object),Yh.isEmpty())return;const t=Yh.min,n=Yh.max,r=this.geometry.attributes.position,a=r.array;a[0]=n.x,a[1]=n.y,a[2]=n.z,a[3]=t.x,a[4]=n.y,a[5]=n.z,a[6]=t.x,a[7]=t.y,a[8]=n.z,a[9]=n.x,a[10]=t.y,a[11]=n.z,a[12]=n.x,a[13]=n.y,a[14]=t.z,a[15]=t.x,a[16]=n.y,a[17]=t.z,a[18]=t.x,a[19]=t.y,a[20]=t.z,a[21]=n.x,a[22]=t.y,a[23]=t.z,r.needsUpdate=!0,this.geometry.computeBoundingSphere()}setFromObject(A){return this.object=A,this.update(),this}copy(A,t){return super.copy(A,t),this.object=A.object,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class Cp extends rA{constructor(A,t=16776960){const n=new Uint16Array([0,1,1,2,2,3,3,0,4,5,5,6,6,7,7,4,0,4,1,5,2,6,3,7]),r=[1,1,1,-1,1,1,-1,-1,1,1,-1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1],a=new li;a.setIndex(new oe(n,1)),a.setAttribute("position",new vt(r,3)),super(a,new P({color:t,toneMapped:!1})),this.box=A,this.type="Box3Helper",this.geometry.computeBoundingSphere()}updateMatrixWorld(A){const t=this.box;t.isEmpty()||(t.getCenter(this.position),t.getSize(this.scale),this.scale.multiplyScalar(.5),super.updateMatrixWorld(A))}dispose(){this.geometry.dispose(),this.material.dispose()}}class Bp extends S{constructor(A,t=1,n=16776960){const r=n,a=[1,-1,0,-1,1,0,-1,-1,0,1,1,0,-1,1,0,-1,-1,0,1,-1,0,1,1,0],B=new li;B.setAttribute("position",new vt(a,3)),B.computeBoundingSphere(),super(B,new P({color:r,toneMapped:!1})),this.type="PlaneHelper",this.plane=A,this.size=t;const Q=[1,1,0,-1,1,0,-1,-1,0,1,1,0,-1,-1,0,1,-1,0],y=new li;y.setAttribute("position",new vt(Q,3)),y.computeBoundingSphere(),this.add(new mo(y,new At({color:r,opacity:.2,transparent:!0,depthWrite:!1,toneMapped:!1})))}updateMatrixWorld(A){this.position.set(0,0,0),this.scale.set(.5*this.size,.5*this.size,1),this.lookAt(this.plane.normal),this.translateZ(-this.plane.constant),super.updateMatrixWorld(A)}dispose(){this.geometry.dispose(),this.material.dispose(),this.children[0].geometry.dispose(),this.children[0].material.dispose()}}const Gu=new Ee;let Hh,Bd;class Ep extends qA{constructor(A=new Ee(0,0,1),t=new Ee(0,0,0),n=1,r=16776960,a=n*.2,B=a*.2){super(),this.type="ArrowHelper",Hh===void 0&&(Hh=new li,Hh.setAttribute("position",new vt([0,0,0,0,1,0],3)),Bd=new tC(0,.5,1,5,1),Bd.translate(0,-.5,0)),this.position.copy(t),this.line=new S(Hh,new P({color:r,toneMapped:!1})),this.line.matrixAutoUpdate=!1,this.add(this.line),this.cone=new mo(Bd,new At({color:r,toneMapped:!1})),this.cone.matrixAutoUpdate=!1,this.add(this.cone),this.setDirection(A),this.setLength(n,a,B)}setDirection(A){if(A.y>.99999)this.quaternion.set(0,0,0,1);else if(A.y<-.99999)this.quaternion.set(1,0,0,0);else{Gu.set(A.z,0,-A.x).normalize();const t=Math.acos(A.y);this.quaternion.setFromAxisAngle(Gu,t)}}setLength(A,t=A*.2,n=t*.2){this.line.scale.set(1,Math.max(1e-4,A-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=A,this.cone.updateMatrix()}setColor(A){this.line.material.color.set(A),this.cone.material.color.set(A)}copy(A){return super.copy(A,!1),this.line.copy(A.line),this.cone.copy(A.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class Qp extends rA{constructor(A=1){const t=[0,0,0,A,0,0,0,0,0,0,A,0,0,0,0,0,0,A],n=[1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],r=new li;r.setAttribute("position",new vt(t,3)),r.setAttribute("color",new vt(n,3));const a=new P({vertexColors:!0,toneMapped:!1});super(r,a),this.type="AxesHelper"}setColors(A,t,n){const r=new ve,a=this.geometry.attributes.color.array;return r.set(A),r.toArray(a,0),r.toArray(a,3),r.set(t),r.toArray(a,6),r.toArray(a,9),r.set(n),r.toArray(a,12),r.toArray(a,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class cp{constructor(){this.type="ShapePath",this.color=new ve,this.subPaths=[],this.currentPath=null}moveTo(A,t){return this.currentPath=new hs,this.subPaths.push(this.currentPath),this.currentPath.moveTo(A,t),this}lineTo(A,t){return this.currentPath.lineTo(A,t),this}quadraticCurveTo(A,t,n,r){return this.currentPath.quadraticCurveTo(A,t,n,r),this}bezierCurveTo(A,t,n,r,a,B){return this.currentPath.bezierCurveTo(A,t,n,r,a,B),this}splineThru(A){return this.currentPath.splineThru(A),this}toShapes(A){function t(tA){const RA=[];for(let mA=0,kA=tA.length;mA<kA;mA++){const _e=tA[mA],ae=new YB;ae.curves=_e.curves,RA.push(ae)}return RA}function n(tA,RA){const mA=RA.length;let kA=!1;for(let _e=mA-1,ae=0;ae<mA;_e=ae++){let fe=RA[_e],Je=RA[ae],zA=Je.x-fe.x,KA=Je.y-fe.y;if(Math.abs(KA)>Number.EPSILON){if(KA<0&&(fe=RA[ae],zA=-zA,Je=RA[_e],KA=-KA),tA.y<fe.y||tA.y>Je.y)continue;if(tA.y===fe.y){if(tA.x===fe.x)return!0}else{const tt=KA*(tA.x-fe.x)-zA*(tA.y-fe.y);if(tt===0)return!0;if(tt<0)continue;kA=!kA}}else{if(tA.y!==fe.y)continue;if(Je.x<=tA.x&&tA.x<=fe.x||fe.x<=tA.x&&tA.x<=Je.x)return!0}}return kA}const r=iC.isClockWise,a=this.subPaths;if(a.length===0)return[];let B,Q,y;const M=[];if(a.length===1)return Q=a[0],y=new YB,y.curves=Q.curves,M.push(y),M;let K=!r(a[0].getPoints());K=A?!K:K;const W=[],V=[];let X=[],iA=0,BA;V[iA]=void 0,X[iA]=[];for(let tA=0,RA=a.length;tA<RA;tA++)Q=a[tA],BA=Q.getPoints(),B=r(BA),B=A?!B:B,B?(!K&&V[iA]&&iA++,V[iA]={s:new YB,p:BA},V[iA].s.curves=Q.curves,K&&iA++,X[iA]=[]):X[iA].push({h:Q,p:BA[0]});if(!V[0])return t(a);if(V.length>1){let tA=!1,RA=0;for(let mA=0,kA=V.length;mA<kA;mA++)W[mA]=[];for(let mA=0,kA=V.length;mA<kA;mA++){const _e=X[mA];for(let ae=0;ae<_e.length;ae++){const fe=_e[ae];let Je=!0;for(let zA=0;zA<V.length;zA++)n(fe.p,V[zA].p)&&(mA!==zA&&RA++,Je?(Je=!1,W[zA].push(fe)):tA=!0);Je&&W[mA].push(fe)}}RA>0&&tA===!1&&(X=W)}let nA;for(let tA=0,RA=V.length;tA<RA;tA++){y=V[tA].s,M.push(y),nA=X[tA];for(let mA=0,kA=nA.length;mA<kA;mA++)y.holes.push(nA[mA].h)}return M}}class hp extends zo{constructor(A=1,t=1,n=1,r={}){console.warn('THREE.WebGLMultipleRenderTargets has been deprecated and will be removed in r172. Use THREE.WebGLRenderTarget and set the "count" parameter to enable MRT.'),super(A,t,{...r,count:n}),this.isWebGLMultipleRenderTargets=!0}get texture(){return this.textures}}return typeof __THREE_DEVTOOLS__<"u"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:_i}})),typeof window<"u"&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=_i),wA.ACESFilmicToneMapping=pi,wA.AddEquation=l,wA.AddOperation=ge,wA.AdditiveAnimationBlendMode=Ia,wA.AdditiveBlending=h,wA.AgXToneMapping=un,wA.AlphaFormat=ps,wA.AlwaysCompare=dg,wA.AlwaysDepth=He,wA.AlwaysStencilFunc=Io,wA.AmbientLight=tu,wA.AnimationAction=du,wA.AnimationClip=YQ,wA.AnimationLoader=hf,wA.AnimationMixer=Of,wA.AnimationObjectGroup=Hf,wA.AnimationUtils=Bf,wA.ArcCurve=Qr,wA.ArrayCamera=Ch,wA.ArrowHelper=Ep,wA.AttachedBindMode=En,wA.Audio=cu,wA.AudioAnalyser=Uf,wA.AudioContext=rd,wA.AudioListener=Ff,wA.AudioLoader=Sf,wA.AxesHelper=Qp,wA.BackSide=_,wA.BasicDepthPacking=Ma,wA.BasicShadowMap=_A,wA.BatchedMesh=Dh,wA.Bone=SQ,wA.BooleanKeyframeTrack=OB,wA.Box2=$f,wA.Box3=To,wA.Box3Helper=Cp,wA.BoxGeometry=ot,wA.BoxHelper=Ip,wA.BufferAttribute=oe,wA.BufferGeometry=li,wA.BufferGeometryLoader=su,wA.ByteType=Si,wA.Cache=UC,wA.Camera=Mn,wA.CameraHelper=ap,wA.CanvasTexture=Wi,wA.CapsuleGeometry=Bg,wA.CatmullRomCurve3=Ks,wA.CineonToneMapping=bt,wA.CircleGeometry=eC,wA.ClampToEdgeWrapping=ie,wA.Clock=Bu,wA.Color=ve,wA.ColorKeyframeTrack=Ad,wA.ColorManagement=oo,wA.CompressedArrayTexture=xt,wA.CompressedCubeTexture=Li,wA.CompressedTexture=Yt,wA.CompressedTextureLoader=lf,wA.ConeGeometry=Pa,wA.ConstantAlphaFactor=NA,wA.ConstantColorFactor=uA,wA.CubeCamera=$i,wA.CubeReflectionMapping=Ao,wA.CubeRefractionMapping=Kn,wA.CubeTexture=zn,wA.CubeTextureLoader=df,wA.CubeUVReflectionMapping=xA,wA.CubicBezierCurve=oI,wA.CubicBezierCurve3=uI,wA.CubicInterpolant=Od,wA.CullFaceBack=ng,wA.CullFaceFront=dn,wA.CullFaceFrontBack=Mo,wA.CullFaceNone=Ir,wA.Curve=hn,wA.CurvePath=Wr,wA.CustomBlending=u,wA.CustomToneMapping=hi,wA.CylinderGeometry=tC,wA.Cylindrical=zf,wA.Data3DTexture=mg,wA.DataArrayTexture=Ds,wA.DataTexture=KI,wA.DataTextureLoader=uf,wA.DataUtils=Bt,wA.DecrementStencilOp=ee,wA.DecrementWrapStencilOp=Fe,wA.DefaultLoadingManager=Vd,wA.DepthFormat=lr,wA.DepthStencilFormat=Nr,wA.DepthTexture=lE,wA.DetachedBindMode=bn,wA.DirectionalLight=eu,wA.DirectionalLightHelper=gp,wA.DiscreteInterpolant=qd,wA.DisplayP3ColorSpace=Jg,wA.DodecahedronGeometry=TB,wA.DoubleSide=T,wA.DstAlphaFactor=SA,wA.DstColorFactor=TA,wA.DynamicCopyUsage=Ca,wA.DynamicDrawUsage=fo,wA.DynamicReadUsage=ug,wA.EdgesGeometry=UQ,wA.EllipseCurve=qo,wA.EqualCompare=bg,wA.EqualDepth=Ye,wA.EqualStencilFunc=Ft,wA.EquirectangularReflectionMapping=_o,wA.EquirectangularRefractionMapping=Kt,wA.Euler=Er,wA.EventDispatcher=Xs,wA.ExtrudeGeometry=Rh,wA.FileLoader=xC,wA.Float16BufferAttribute=_t,wA.Float32BufferAttribute=vt,wA.FloatType=hr,wA.Fog=yE,wA.FogExp2=DE,wA.FramebufferTexture=St,wA.FrontSide=z,wA.Frustum=xa,wA.GLBufferAttribute=Zf,wA.GLSL1=Fs,wA.GLSL3=js,wA.GreaterCompare=xr,wA.GreaterDepth=ct,wA.GreaterEqualCompare=Gs,wA.GreaterEqualDepth=Et,wA.GreaterEqualStencilFunc=Fo,wA.GreaterStencilFunc=zt,wA.GridHelper=rp,wA.Group=Ha,wA.HalfFloatType=Ss,wA.HemisphereLight=Zd,wA.HemisphereLightHelper=op,wA.IcosahedronGeometry=Gh,wA.ImageBitmapLoader=Mf,wA.ImageLoader=HQ,wA.ImageUtils=Va,wA.IncrementStencilOp=Ue,wA.IncrementWrapStencilOp=Ie,wA.InstancedBufferAttribute=VC,wA.InstancedBufferGeometry=ru,wA.InstancedInterleavedBuffer=Vf,wA.InstancedMesh=Ws,wA.Int16BufferAttribute=mt,wA.Int32BufferAttribute=Jt,wA.Int8BufferAttribute=it,wA.IntType=Zr,wA.InterleavedBuffer=gr,wA.InterleavedBufferAttribute=$I,wA.Interpolant=TQ,wA.InterpolateDiscrete=hg,wA.InterpolateLinear=Xg,wA.InterpolateSmooth=aa,wA.InvertStencilOp=xe,wA.KeepStencilOp=Te,wA.KeyframeTrack=PI,wA.LOD=wQ,wA.LatheGeometry=Mg,wA.Layers=eg,wA.LessCompare=rs,wA.LessDepth=Oe,wA.LessEqualCompare=Pr,wA.LessEqualDepth=ye,wA.LessEqualStencilFunc=Qi,wA.LessStencilFunc=Vt,wA.Light=jC,wA.LightProbe=ou,wA.Line=S,wA.Line3=Ap,wA.LineBasicMaterial=P,wA.LineCurve=Vi,wA.LineCurve3=Cn,wA.LineDashedMaterial=Yd,wA.LineLoop=IA,wA.LineSegments=rA,wA.LinearDisplayP3ColorSpace=xg,wA.LinearFilter=DA,wA.LinearInterpolant=$l,wA.LinearMipMapLinearFilter=si,wA.LinearMipMapNearestFilter=ue,wA.LinearMipmapLinearFilter=De,wA.LinearMipmapNearestFilter=YA,wA.LinearSRGBColorSpace=jr,wA.LinearToneMapping=Qt,wA.LinearTransfer=Wa,wA.Loader=Oa,wA.LoaderUtils=od,wA.LoadingManager=ed,wA.LoopOnce=qa,wA.LoopPingPong=jg,wA.LoopRepeat=Zg,wA.LuminanceAlphaFormat=Kg,wA.LuminanceFormat=Da,wA.MOUSE=Ln,wA.Material=FA,wA.MaterialLoader=bh,wA.MathUtils=Bs,wA.Matrix3=Bo,wA.Matrix4=tn,wA.MaxEquation=G,wA.Mesh=mo,wA.MeshBasicMaterial=At,wA.MeshDepthMaterial=_I,wA.MeshDistanceMaterial=mE,wA.MeshLambertMaterial=Kd,wA.MeshMatcapMaterial=Jd,wA.MeshNormalMaterial=Td,wA.MeshPhongMaterial=kd,wA.MeshPhysicalMaterial=bd,wA.MeshStandardMaterial=jl,wA.MeshToonMaterial=_d,wA.MinEquation=Y,wA.MirroredRepeatWrapping=ZA,wA.MixOperation=yA,wA.MultiplyBlending=m,wA.MultiplyOperation=gA,wA.NearestFilter=jA,wA.NearestMipMapLinearFilter=k,wA.NearestMipMapNearestFilter=aA,wA.NearestMipmapLinearFilter=H,wA.NearestMipmapNearestFilter=Be,wA.NeutralToneMapping=sn,wA.NeverCompare=Lr,wA.NeverDepth=pe,wA.NeverStencilFunc=Lt,wA.NoBlending=v,wA.NoColorSpace=In,wA.NoToneMapping=le,wA.NormalAnimationBlendMode=Rs,wA.NormalBlending=D,wA.NotEqualCompare=Or,wA.NotEqualDepth=q,wA.NotEqualStencilFunc=vn,wA.NumberKeyframeTrack=KQ,wA.Object3D=qA,wA.ObjectLoader=yf,wA.ObjectSpaceNormalMap=Sa,wA.OctahedronGeometry=kQ,wA.OneFactor=U,wA.OneMinusConstantAlphaFactor=HA,wA.OneMinusConstantColorFactor=lA,wA.OneMinusDstAlphaFactor=UA,wA.OneMinusDstColorFactor=pA,wA.OneMinusSrcAlphaFactor=QA,wA.OneMinusSrcColorFactor=Z,wA.OrthographicCamera=cE,wA.P3Primaries=$A,wA.PCFShadowMap=O,wA.PCFSoftShadowMap=d,wA.PMREMGenerator=tQ,wA.Path=hs,wA.PerspectiveCamera=ti,wA.Plane=zr,wA.PlaneGeometry=EI,wA.PlaneHelper=Bp,wA.PointLight=Au,wA.PointLightHelper=ip,wA.Points=Re,wA.PointsMaterial=cA,wA.PolarGridHelper=sp,wA.PolyhedronGeometry=HI,wA.PositionalAudio=Nf,wA.PropertyBinding=Jr,wA.PropertyMixer=lu,wA.QuadraticBezierCurve=Bn,wA.QuadraticBezierCurve3=Do,wA.Quaternion=Us,wA.QuaternionKeyframeTrack=bE,wA.QuaternionLinearInterpolant=Wd,wA.RED_GREEN_RGTC2_Format=sa,wA.RED_RGTC1_Format=Fg,wA.REVISION=_i,wA.RGBADepthPacking=gI,wA.RGBAFormat=os,wA.RGBAIntegerFormat=XA,wA.RGBA_ASTC_10x10_Format=Ur,wA.RGBA_ASTC_10x5_Format=Go,wA.RGBA_ASTC_10x6_Format=Ys,wA.RGBA_ASTC_10x8_Format=og,wA.RGBA_ASTC_12x10_Format=Ng,wA.RGBA_ASTC_12x12_Format=Ug,wA.RGBA_ASTC_4x4_Format=Pn,wA.RGBA_ASTC_5x4_Format=pr,wA.RGBA_ASTC_5x5_Format=Ro,wA.RGBA_ASTC_6x5_Format=ao,wA.RGBA_ASTC_6x6_Format=Uo,wA.RGBA_ASTC_8x5_Format=Yr,wA.RGBA_ASTC_8x6_Format=$r,wA.RGBA_ASTC_8x8_Format=On,wA.RGBA_BPTC_Format=Gg,wA.RGBA_ETC2_EAC_Format=mn,wA.RGBA_PVRTC_2BPPV1_Format=xi,wA.RGBA_PVRTC_4BPPV1_Format=Pi,wA.RGBA_S3TC_DXT1_Format=We,wA.RGBA_S3TC_DXT3_Format=ut,wA.RGBA_S3TC_DXT5_Format=gt,wA.RGBFormat=Wg,wA.RGB_BPTC_SIGNED_Format=Hr,wA.RGB_BPTC_UNSIGNED_Format=Vg,wA.RGB_ETC1_Format=Ut,wA.RGB_ETC2_Format=Qn,wA.RGB_PVRTC_2BPPV1_Format=ai,wA.RGB_PVRTC_4BPPV1_Format=Gt,wA.RGB_S3TC_DXT1_Format=me,wA.RGFormat=wa,wA.RGIntegerFormat=Ka,wA.RawShaderMaterial=xd,wA.Ray=Tr,wA.Raycaster=jf,wA.Rec709Primaries=LA,wA.RectAreaLight=iu,wA.RedFormat=ya,wA.RedIntegerFormat=oa,wA.ReinhardToneMapping=Ct,wA.RenderTarget=BI,wA.RepeatWrapping=vA,wA.ReplaceStencilOp=Ke,wA.ReverseSubtractEquation=N,wA.RingGeometry=Fh,wA.SIGNED_RED_GREEN_RGTC2_Format=ga,wA.SIGNED_RED_RGTC1_Format=ra,wA.SRGBColorSpace=ii,wA.SRGBTransfer=eA,wA.Scene=Eh,wA.ShaderChunk=No,wA.ShaderLib=la,wA.ShaderMaterial=di,wA.ShadowMaterial=Ld,wA.Shape=YB,wA.ShapeGeometry=vh,wA.ShapePath=cp,wA.ShapeUtils=iC,wA.ShortType=nn,wA.Skeleton=RE,wA.SkeletonHelper=tp,wA.SkinnedMesh=fh,wA.Source=Ea,wA.Sphere=qr,wA.SphereGeometry=_Q,wA.Spherical=Xf,wA.SphericalHarmonics3=nu,wA.SplineCurve=_n,wA.SpotLight=zd,wA.SpotLightHelper=ep,wA.Sprite=hh,wA.SpriteMaterial=DQ,wA.SrcAlphaFactor=CA,wA.SrcAlphaSaturateFactor=hA,wA.SrcColorFactor=j,wA.StaticCopyUsage=fg,wA.StaticDrawUsage=vi,wA.StaticReadUsage=Ja,wA.StereoCamera=Rf,wA.StreamCopyUsage=Ra,wA.StreamDrawUsage=Yg,wA.StreamReadUsage=zg,wA.StringKeyframeTrack=qB,wA.SubtractEquation=R,wA.SubtractiveBlending=p,wA.TOUCH=xn,wA.TangentSpaceNormalMap=Cr,wA.TetrahedronGeometry=Nh,wA.Texture=Sr,wA.TextureLoader=ff,wA.TorusGeometry=Uh,wA.TorusKnotGeometry=Lh,wA.Triangle=Le,wA.TriangleFanDrawMode=oC,wA.TriangleStripDrawMode=pI,wA.TrianglesDrawMode=sI,wA.TubeGeometry=xh,wA.UVMapping=go,wA.Uint16BufferAttribute=mi,wA.Uint32BufferAttribute=Bi,wA.Uint8BufferAttribute=$t,wA.Uint8ClampedBufferAttribute=ht,wA.Uniform=ad,wA.UniformsGroup=Wf,wA.UniformsLib=ki,wA.UniformsUtils=ci,wA.UnsignedByteType=Mi,wA.UnsignedInt248Type=ns,wA.UnsignedInt5999Type=Tg,wA.UnsignedIntType=kn,wA.UnsignedShort4444Type=is,wA.UnsignedShort5551Type=cg,wA.UnsignedShortType=zi,wA.VSMShadowMap=s,wA.Vector2=Ot,wA.Vector3=Ee,wA.Vector4=xo,wA.VectorKeyframeTrack=JQ,wA.VideoTexture=wt,wA.WebGL3DRenderTarget=kr,wA.WebGLArrayRenderTarget=pg,wA.WebGLCoordinateSystem=ls,wA.WebGLCubeRenderTarget=Ni,wA.WebGLMultipleRenderTargets=hp,wA.WebGLRenderTarget=zo,wA.WebGLRenderer=Yl,wA.WebGLUtils=uQ,wA.WebGPUCoordinateSystem=br,wA.WireframeGeometry=vd,wA.WrapAroundEnding=Lg,wA.ZeroCurvatureEnding=lg,wA.ZeroFactor=x,wA.ZeroSlopeEnding=rg,wA.ZeroStencilOp=re,wA.createCanvasElement=ms,wA}(function(_i,Ln){(function(xn,Ir){_i.exports=Ir(yp(),wp())})(pp,(xn,Ir)=>(()=>{var ng={144(_A,O,d){var s;s=()=>(()=>{var z={172:D=>{D.exports=function(h,p){this.v=h,this.k=p},D.exports.__esModule=!0,D.exports.default=D.exports},236:()=>{},373:D=>{D.exports=function(h){var p=Object(h),m=[];for(var u in p)m.unshift(u);return function l(){for(;m.length;)if((u=m.pop())in p)return l.value=u,l.done=!1,l;return l.done=!0,l}},D.exports.__esModule=!0,D.exports.default=D.exports},546:D=>{function h(p,m,u,l){var R=Object.defineProperty;try{R({},"",{})}catch{R=0}D.exports=h=function(N,Y,G,x){function U(j,Z){h(N,j,function(CA){return this._invoke(j,Z,CA)})}Y?R?R(N,Y,{value:G,enumerable:!x,configurable:!x,writable:!x}):N[Y]=G:(U("next",0),U("throw",1),U("return",2))},D.exports.__esModule=!0,D.exports.default=D.exports,h(p,m,u,l)}D.exports=h,D.exports.__esModule=!0,D.exports.default=D.exports},579:(D,h,p)=>{var m=p(738).default;D.exports=function(u){if(u!=null){var l=u[typeof Symbol=="function"&&Symbol.iterator||"@@iterator"],R=0;if(l)return l.call(u);if(typeof u.next=="function")return u;if(!isNaN(u.length))return{next:function(){return u&&R>=u.length&&(u=void 0),{value:u&&u[R++],done:!u}}}}throw new TypeError(m(u)+" is not iterable")},D.exports.__esModule=!0,D.exports.default=D.exports},633:(D,h,p)=>{var m=p(172),u=p(993),l=p(869),R=p(887),N=p(791),Y=p(373),G=p(579);function x(){var U=u(),j=U.m(x),Z=(Object.getPrototypeOf?Object.getPrototypeOf(j):j.__proto__).constructor;function CA(UA){var TA=typeof UA=="function"&&UA.constructor;return!!TA&&(TA===Z||(TA.displayName||TA.name)==="GeneratorFunction")}var QA={throw:1,return:2,break:3,continue:3};function SA(UA){var TA,pA;return function(hA){TA||(TA={stop:function(){return pA(hA.a,2)},catch:function(){return hA.v},abrupt:function(uA,lA){return pA(hA.a,QA[uA],lA)},delegateYield:function(uA,lA,NA){return TA.resultName=lA,pA(hA.d,G(uA),NA)},finish:function(uA){return pA(hA.f,uA)}},pA=function(uA,lA,NA){hA.p=TA.prev,hA.n=TA.next;try{return uA(lA,NA)}finally{TA.next=hA.n}}),TA.resultName&&(TA[TA.resultName]=hA.v,TA.resultName=void 0),TA.sent=hA.v,TA.next=hA.n;try{return UA.call(this,TA)}finally{hA.p=TA.prev,hA.n=TA.next}}}return(D.exports=x=function(){return{wrap:function(UA,TA,pA,hA){return U.w(SA(UA),TA,pA,hA&&hA.reverse())},isGeneratorFunction:CA,mark:U.m,awrap:function(UA,TA){return new m(UA,TA)},AsyncIterator:N,async:function(UA,TA,pA,hA,uA){return(CA(TA)?R:l)(SA(UA),TA,pA,hA,uA)},keys:Y,values:G}},D.exports.__esModule=!0,D.exports.default=D.exports)()}D.exports=x,D.exports.__esModule=!0,D.exports.default=D.exports},738:D=>{function h(p){return D.exports=h=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(m){return typeof m}:function(m){return m&&typeof Symbol=="function"&&m.constructor===Symbol&&m!==Symbol.prototype?"symbol":typeof m},D.exports.__esModule=!0,D.exports.default=D.exports,h(p)}D.exports=h,D.exports.__esModule=!0,D.exports.default=D.exports},756:(D,h,p)=>{var m=p(633)();D.exports=m;try{regeneratorRuntime=m}catch{typeof globalThis=="object"?globalThis.regeneratorRuntime=m:Function("r","regeneratorRuntime = r")(m)}},791:(D,h,p)=>{var m=p(172),u=p(546);D.exports=function l(R,N){function Y(x,U,j,Z){try{var CA=R[x](U),QA=CA.value;return QA instanceof m?N.resolve(QA.v).then(function(SA){Y("next",SA,j,Z)},function(SA){Y("throw",SA,j,Z)}):N.resolve(QA).then(function(SA){CA.value=SA,j(CA)},function(SA){return Y("throw",SA,j,Z)})}catch(SA){Z(SA)}}var G;this.next||(u(l.prototype),u(l.prototype,typeof Symbol=="function"&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),u(this,"_invoke",function(x,U,j){function Z(){return new N(function(CA,QA){Y(x,j,CA,QA)})}return G=G?G.then(Z,Z):Z()},!0)},D.exports.__esModule=!0,D.exports.default=D.exports},869:(D,h,p)=>{var m=p(887);D.exports=function(u,l,R,N,Y){var G=m(u,l,R,N,Y);return G.next().then(function(x){return x.done?x.value:G.next()})},D.exports.__esModule=!0,D.exports.default=D.exports},884:()=>{},887:(D,h,p)=>{var m=p(993),u=p(791);D.exports=function(l,R,N,Y,G){return new u(m().w(l,R,N,Y),G||Promise)},D.exports.__esModule=!0,D.exports.default=D.exports},902:()=>{},993:(D,h,p)=>{var m=p(546);function u(){var l,R,N=typeof Symbol=="function"?Symbol:{},Y=N.iterator||"@@iterator",G=N.toStringTag||"@@toStringTag";function x(TA,pA,hA,uA){var lA=pA&&pA.prototype instanceof j?pA:j,NA=Object.create(lA.prototype);return m(NA,"_invoke",function(HA,pe,He){var Oe,ye,Ye,Et=0,ct=He||[],q=!1,gA={p:0,n:0,v:l,a:yA,f:yA.bind(l,4),d:function(ge,le){return Oe=ge,ye=0,Ye=l,gA.n=le,U}};function yA(ge,le){for(ye=ge,Ye=le,R=0;!q&&Et&&!Qt&&R<ct.length;R++){var Qt,Ct=ct[R],bt=gA.p,pi=Ct[2];ge>3?(Qt=pi===le)&&(Ye=Ct[(ye=Ct[4])?5:(ye=3,3)],Ct[4]=Ct[5]=l):Ct[0]<=bt&&((Qt=ge<2&&bt<Ct[1])?(ye=0,gA.v=le,gA.n=Ct[1]):bt<pi&&(Qt=ge<3||Ct[0]>le||le>pi)&&(Ct[4]=ge,Ct[5]=le,gA.n=pi,ye=0))}if(Qt||ge>1)return U;throw q=!0,le}return function(ge,le,Qt){if(Et>1)throw TypeError("Generator is already running");for(q&&le===1&&yA(le,Qt),ye=le,Ye=Qt;(R=ye<2?l:Ye)||!q;){Oe||(ye?ye<3?(ye>1&&(gA.n=-1),yA(ye,Ye)):gA.n=Ye:gA.v=Ye);try{if(Et=2,Oe){if(ye||(ge="next"),R=Oe[ge]){if(!(R=R.call(Oe,Ye)))throw TypeError("iterator result is not an object");if(!R.done)return R;Ye=R.value,ye<2&&(ye=0)}else ye===1&&(R=Oe.return)&&R.call(Oe),ye<2&&(Ye=TypeError("The iterator does not provide a '"+ge+"' method"),ye=1);Oe=l}else if((R=(q=gA.n<0)?Ye:HA.call(pe,gA))!==U)break}catch(Ct){Oe=l,ye=1,Ye=Ct}finally{Et=1}}return{value:R,done:q}}}(TA,hA,uA),!0),NA}var U={};function j(){}function Z(){}function CA(){}R=Object.getPrototypeOf;var QA=[][Y]?R(R([][Y]())):(m(R={},Y,function(){return this}),R),SA=CA.prototype=j.prototype=Object.create(QA);function UA(TA){return Object.setPrototypeOf?Object.setPrototypeOf(TA,CA):(TA.__proto__=CA,m(TA,G,"GeneratorFunction")),TA.prototype=Object.create(SA),TA}return Z.prototype=CA,m(SA,"constructor",CA),m(CA,"constructor",Z),Z.displayName="GeneratorFunction",m(CA,G,"GeneratorFunction"),m(SA),m(SA,G,"Generator"),m(SA,Y,function(){return this}),m(SA,"toString",function(){return"[object Generator]"}),(D.exports=u=function(){return{w:x,m:UA}},D.exports.__esModule=!0,D.exports.default=D.exports)()}D.exports=u,D.exports.__esModule=!0,D.exports.default=D.exports}},_={};function T(D){var h=_[D];if(h!==void 0)return h.exports;var p=_[D]={exports:{}};return z[D](p,p.exports,T),p.exports}T.n=D=>{var h=D&&D.__esModule?()=>D.default:()=>D;return T.d(h,{a:h}),h},T.d=(D,h)=>{for(var p in h)T.o(h,p)&&!T.o(D,p)&&Object.defineProperty(D,p,{enumerable:!0,get:h[p]})},T.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch{if(typeof window=="object")return window}}(),T.o=(D,h)=>Object.prototype.hasOwnProperty.call(D,h),T.r=D=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(D,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(D,"__esModule",{value:!0})};var v={};return(()=>{T.d(v,{default:()=>Wa});var D={};function h(eA,LA,$A,re,Te,Ke,Ue){try{var ee=eA[Ke](Ue),Ie=ee.value}catch(Fe){return void $A(Fe)}ee.done?LA(Ie):Promise.resolve(Ie).then(re,Te)}function p(eA){return function(){var LA=this,$A=arguments;return new Promise(function(re,Te){var Ke=eA.apply(LA,$A);function Ue(Ie){h(Ke,re,Te,Ue,ee,"next",Ie)}function ee(Ie){h(Ke,re,Te,Ue,ee,"throw",Ie)}Ue(void 0)})}}function m(eA,LA){if(!(eA instanceof LA))throw new TypeError("Cannot call a class as a function")}function u(eA){return u=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(LA){return typeof LA}:function(LA){return LA&&typeof Symbol=="function"&&LA.constructor===Symbol&&LA!==Symbol.prototype?"symbol":typeof LA},u(eA)}function l(eA){var LA=function($A){if(u($A)!="object"||!$A)return $A;var re=$A[Symbol.toPrimitive];if(re!==void 0){var Te=re.call($A,"string");if(u(Te)!="object")return Te;throw new TypeError("@@toPrimitive must return a primitive value.")}return String($A)}(eA);return u(LA)=="symbol"?LA:LA+""}function R(eA,LA){for(var $A=0;$A<LA.length;$A++){var re=LA[$A];re.enumerable=re.enumerable||!1,re.configurable=!0,"value"in re&&(re.writable=!0),Object.defineProperty(eA,l(re.key),re)}}function N(eA,LA,$A){return LA&&R(eA.prototype,LA),$A&&R(eA,$A),Object.defineProperty(eA,"prototype",{writable:!1}),eA}function Y(eA,LA,$A){return(LA=l(LA))in eA?Object.defineProperty(eA,LA,{value:$A,enumerable:!0,configurable:!0,writable:!0}):eA[LA]=$A,eA}T.r(D),T.d(D,{hasBrowserEnv:()=>Wg,hasStandardBrowserEnv:()=>Da,hasStandardBrowserWebWorkerEnv:()=>Kg,navigator:()=>os,origin:()=>lr});var G,x=T(756),U=T.n(x),j=(G=(G=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0)||"/index.js",function(eA){var LA,$A;(eA=(eA=eA||{})!==void 0?eA:{}).ready=new Promise(function(w,L){LA=w,$A=L});var re,Te,Ke,Ue,ee,Ie,Fe=Object.assign({},eA),xe="./this.program",Lt=function(w,L){throw L},Vt=(typeof window>"u"?"undefined":u(window))=="object",Ft=typeof importScripts=="function",Qi=(typeof process>"u"?"undefined":u(process))=="object"&&u(process.versions)=="object"&&typeof process.versions.node=="string",zt="";Qi?(zt=Ft?T(884).dirname(zt)+"/":"//",Ie=function(){ee||(Ue=T(236),ee=T(884))},re=function(w,L){var AA=Er(w);return AA?L?AA:AA.toString():(Ie(),w=ee.normalize(w),Ue.readFileSync(w,L?void 0:"utf8"))},Ke=function(w){var L=re(w,!0);return L.buffer||(L=new Uint8Array(L)),L},Te=function(w,L,AA){var EA=Er(w);EA&&L(EA),Ie(),w=ee.normalize(w),Ue.readFile(w,function(GA,qA){GA?AA(GA):L(qA.buffer)})},process.argv.length>1&&(xe=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),process.on("uncaughtException",function(w){if(!(w instanceof aI))throw w}),process.on("unhandledRejection",function(w){throw w}),Lt=function(w,L){throw process.exitCode=w,L},eA.inspect=function(){return"[Emscripten Module object]"}):(Vt||Ft)&&(Ft?zt=self.location.href:typeof document<"u"&&document.currentScript&&(zt=document.currentScript.src),G&&(zt=G),zt=zt.indexOf("blob:")!==0?zt.substr(0,zt.replace(/[?#].*/,"").lastIndexOf("/")+1):"",re=function(w){try{var L=new XMLHttpRequest;return L.open("GET",w,!1),L.send(null),L.responseText}catch(EA){var AA=Er(w);if(AA)return function(GA){for(var qA=[],de=0;de<GA.length;de++){var E=GA[de];E>255&&(E&=255),qA.push(String.fromCharCode(E))}return qA.join("")}(AA);throw EA}},Ft&&(Ke=function(w){try{var L=new XMLHttpRequest;return L.open("GET",w,!1),L.responseType="arraybuffer",L.send(null),new Uint8Array(L.response)}catch(EA){var AA=Er(w);if(AA)return AA;throw EA}}),Te=function(w,L,AA){var EA=new XMLHttpRequest;EA.open("GET",w,!0),EA.responseType="arraybuffer",EA.onload=function(){if(EA.status==200||EA.status==0&&EA.response)L(EA.response);else{var GA=Er(w);GA?L(GA.buffer):AA()}},EA.onerror=AA,EA.send(null)});var vn,Fo=eA.print||console.log.bind(console),Io=eA.printErr||console.warn.bind(console);Object.assign(eA,Fe),Fe=null,eA.arguments&&eA.arguments,eA.thisProgram&&(xe=eA.thisProgram),eA.quit&&(Lt=eA.quit),eA.wasmBinary&&(vn=eA.wasmBinary);var Lr;eA.noExitRuntime,(typeof WebAssembly>"u"?"undefined":u(WebAssembly))!="object"&&ss("no native wasm support detected");var rs=!1;function bg(w,L){w||ss(L)}var Pr,xr,Or,Gs,dg,vi,fo,Yg,Ja,ug=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function zg(w,L,AA){for(var EA=L+AA,GA=L;w[GA]&&!(GA>=EA);)++GA;if(GA-L>16&&w.buffer&&ug)return ug.decode(w.subarray(L,GA));for(var qA="";L<GA;){var de=w[L++];if(128&de){var E=63&w[L++];if((224&de)!=192){var J=63&w[L++];if((de=(240&de)==224?(15&de)<<12|E<<6|J:(7&de)<<18|E<<12|J<<6|63&w[L++])<65536)qA+=String.fromCharCode(de);else{var F=de-65536;qA+=String.fromCharCode(55296|F>>10,56320|1023&F)}}else qA+=String.fromCharCode((31&de)<<6|E)}else qA+=String.fromCharCode(de)}return qA}function fg(w,L){return w?zg(Or,w,L):""}function Ca(w,L,AA,EA){if(!(EA>0))return 0;for(var GA=AA,qA=AA+EA-1,de=0;de<w.length;++de){var E=w.charCodeAt(de);if(E>=55296&&E<=57343&&(E=65536+((1023&E)<<10)|1023&w.charCodeAt(++de)),E<=127){if(AA>=qA)break;L[AA++]=E}else if(E<=2047){if(AA+1>=qA)break;L[AA++]=192|E>>6,L[AA++]=128|63&E}else if(E<=65535){if(AA+2>=qA)break;L[AA++]=224|E>>12,L[AA++]=128|E>>6&63,L[AA++]=128|63&E}else{if(AA+3>=qA)break;L[AA++]=240|E>>18,L[AA++]=128|E>>12&63,L[AA++]=128|E>>6&63,L[AA++]=128|63&E}}return L[AA]=0,AA-GA}function Ra(w){for(var L=0,AA=0;AA<w.length;++AA){var EA=w.charCodeAt(AA);EA<=127?L++:EA<=2047?L+=2:EA>=55296&&EA<=57343?(L+=4,++AA):L+=3}return L}function Fs(w){Pr=w,eA.HEAP8=xr=new Int8Array(w),eA.HEAP16=Gs=new Int16Array(w),eA.HEAP32=vi=new Int32Array(w),eA.HEAPU8=Or=new Uint8Array(w),eA.HEAPU16=dg=new Uint16Array(w),eA.HEAPU32=fo=new Uint32Array(w),eA.HEAPF32=Yg=new Float32Array(w),eA.HEAPF64=Ja=new Float64Array(w)}eA.INITIAL_MEMORY;var js,ls=[],br=[],Xs=[];function vs(w){ls.unshift(w)}function mI(w){Xs.unshift(w)}var sg=0,zs=null;function Yo(w){sg++,eA.monitorRunDependencies&&eA.monitorRunDependencies(sg)}function Co(w){if(sg--,eA.monitorRunDependencies&&eA.monitorRunDependencies(sg),sg==0&&zs){var L=zs;zs=null,L()}}function ss(w){eA.onAbort&&eA.onAbort(w),Io(w="Aborted("+w+")"),rs=!0,w+=". Build with -sASSERTIONS for more info.";var L=new WebAssembly.RuntimeError(w);throw $A(L),L}var Ns,DI,qn,Ho,yI="data:application/octet-stream;base64,";function $g(w){return w.startsWith(yI)}function Ga(w){return w.startsWith("file://")}function gg(w){try{if(w==Ns&&vn)return new Uint8Array(vn);var L=Er(w);if(L)return L;if(Ke)return Ke(w);throw"both async and sync fetching of the wasm failed"}catch(AA){ss(AA)}}$g(Ns="data:application/octet-stream;base64,AGFzbQEAAAABhwZfYAF/AX9gAX8AYAJ/fwBgAn9/AX9gA39/fwF/YAV/f39/fwBgA39/fwBgBH9/f38AYAR/f39/AX9gBn9/f39/fwF/YAV/f39/fwF/YAZ/f39/f38AYAd/f39/f39/AGAIf39/f39/f38Bf2AAAGAHf39/f39/fwF/YAABf2ABfQF9YAV/fn5+fgBgA39+fwF+YAJ/fABgAn19AX1gBX9/f39+AX9gCH9/f39/f39/AGADf39/AX1gCn9/f39/f39/f38Bf2ABfwF8YAp/f39/f39/f39/AGAEf35+fwBgA39/fQBgB39/f39/fn4Bf2AGf39/f35+AX9gA39/fABgAX8BfWAFf319f38Bf2AGf39/f39/AXxgAXwBfWACfH8BfGAGf399fX9/AX9gBX9/fX1/AGACf38BfWACf38BfGAJf39/f39/f39/AX9gA39/fwF+YAx/f39/f39/f39/f38Bf2AFf39+f38AYAZ/fH9/f38Bf2ABfwF+YAZ/f39/fn8Bf2APf39/f39/f39/f39/f39/AGALf39/f39/f39/f38Bf2AEf39/fwF+YAJ/fQBgBX9/f398AX9gAAF8YA1/f39/f39/f39/f39/AGADf319AX1gBX99fX9/AX1gBH19fX0BfWACf34AYAd/f39/fH9/AX9gBH5+fn4Bf2AEf39/fQBgAn5/AX9gAX0Bf2ADfHx/AXxgAnx8AXxgB39/f39/f30BfWAHf39/f39/fwF9YAN/fn8AYAN/f30BfWAMf39/f39/f39/f3x/AX9gAn5+AXxgBX9/f319AGAGfHx8fHx8AXxgA3x8fAF8YAN9fX0BfWAEf39/fgF+YAZ/fX19fX8Bf2ACfn4BfWADfn5+AX9gA39/fgBgAn9/AX5gBH9/fH8BfGACf30BfWACfX8Bf2ACfH8Bf2AOf39/f39/f39/f3x/f38Bf2AFf399fX8Bf2ADf399AX9gBn9/f39/fQBgBn98fH9/fwBgBH9+f38Bf2AEf39+fgBgA39/fwF8AqECMAFhAWEADgFhAWIAAQFhAWMABgFhAWQACwFhAWUABQFhAWYABgFhAWcAAAFhAWgAFwFhAWkABAFhAWoAAgFhAWsABQFhAWwABgFhAW0AAAFhAW4ACAFhAW8ABAFhAXAANgFhAXEAAgFhAXIABgFh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RQRAA0AgAEECdEHAtwRqIABB/a8CEMgENgIAIABBAWoiAEEGRw0AC0HwtwRBAToAAEHYtwRBwLcEKAIANgIAC0HAtwQhASACQQhqQcC3BBD5AkUNAkHYtwQhASACQQhqQdi3BBD5AkUNAkEYEDciAUUNAQsgASACKQMINwIAIAEgAikDGDcCECABIAIpAxA3AggMAQtBACEBCyACQSBqJAAgASEAQZy5BEEBOgAAQZi5BCAANgIAIAALyQoCBX8PfiMAQeAAayIFJAAgBEL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhCiACQv///////z+DIg1CIIghDiAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgtCgICAgICAwP//AFQgC0KAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEKDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQogAyEBDAILIAEgC0KAgICAgIDA//8AhYRQBEAgAiADhFAEQEKAgICAgIDg//8AIQpCACEBDAMLIApCgICAgICAwP//AIQhCkIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQCABIAuEIQJCACEBIAJQBEBCgICAgICA4P//ACEKDAMLIApCgICAgICAwP//AIQhCgwCCyABIAuEUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyALQv///////z9YBEAgBUHQAGogASANIAEgDSANUCIGG3kgBkEGdK18pyIGQQ9rEIgBQRAgBmshBiAFKQNYIg1CIIghDiAFKQNQIQELIAJC////////P1YNACAFQUBrIAMgDCADIAwgDFAiCBt5IAhBBnStfKciCEEPaxCIASAGIAhrQRBqIQYgBSkDSCEMIAUpA0AhAwsgA0IPhiILQoCA/v8PgyICIAFCIIgiBH4iECALQiCIIhMgAUL/////D4MiAX58Ig9CIIYiESABIAJ+fCILIBFUrSACIA1C/////w+DIg1+IhUgBCATfnwiESAMQg+GIhIgA0IxiIRC/////w+DIgMgAX58IhQgDyAQVK1CIIYgD0IgiIR8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aiAFIAZsbCABakoNCCAADwtBgLIEQfmMARAwQf+DARAwQYAdEDBBpQEQM0HxIBAwQcCOARAwEDQMCAtBgLIEQa+QARAwQf+DARAwQYAdEDBBpgEQM0HxIBAwQcCOARAwEDQMBwtBgLIEQeKSARAwQf+DARAwQYAdEDBBpwEQM0HxIBAwQZaTARAwEDQMBgtBgLIEQdeWARAwQf+DARAwQYAdEDBBqAEQM0HxIBAwQZaTARAwEDQMBQtBgLIEQcmYARAwQf+DARAwQYAdEDBBqQEQM0HxIBAwQY6bARAwEDQMBAtBgLIEQfmcARAwQf+DARAwQYAdEDBBqgEQM0HxIBAwQY6bARAwEDQMAwtBgLIEQaWfARAwQf+DARAwQYAdEDBBqwEQM0HxIBAwQa6gARAwEDQMAgtBgLIEQfKhARAwQf+DARAwQYAdEDBBrAEQM0HxIBAwQa6gARAwEDQMAQtBgLIEQaWlARAwQf+DARAwQYAdEDBBsAEQM0HxIBAwQZuKARAwEDQLEAAACwkAIAAQUygCAAsJACAAIAE2AgALIgEBfyMAQRBrIgIkACAAIAEgARCEARD7BiACQRBqJAAgAAsLACAAQcS5BBDLAQsRACAAIAEgASgCACgCFBECAAsPACAAIAAoAgAoAhARAAALEQAgACABIAAoAgAoAiwRAwALDAAgACABLQAAOgAACwkAIAAgAToACwvMCQIEfgR/IwBB8ABrIgokACAEQv///////////wCDIQUCQAJAIAFQIgkgAkL///////////8AgyIGQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIAZQG0UEQCADQgBSIAVCgICAgICAwP//AH0iCEKAgICAgIDAgIB/ViAIQoCAgICAgMCAgH9RGw0BCyAJIAZCgICAgICAwP//AFQgBkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAFQoCAgICAgMD//wBUIAVCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIAZCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIJGyEEQgAgASAJGyEDDAILIAMgBUKAgICAgIDA//8AhYRQDQEgASAGhFAEQCADIAWEQgBSDQIgASAD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AKIiAaIgAERpUO7gQpP5PqJEJx4P6IfAVr+goiABREI6BeFTVaU/oiAARIFeDP3//9+/okQAAAAAAADwP6CgoLYLFQAgACABELUGIABBBGogAUEEahBJCxIAIAAQMigCACAAKAIAa0ECdQsSACAAKAIAIgAEQCAAEMIEGgsLEQAgACABKAIAEMIENgIAIAALQgEBfyAAKAIAIQIgARBhIQAgAkEIaiIBEEYgAEsEfyABIAAQOigCAEEARwVBAAtFBEAQdQALIAJBCGogABA6KAIACzYAIAIEfyACBEADQCAAIAEoAgA2AgAgAEEEaiEAIAFBBGohASACQQFrIgINAAsLQQAFIAALGgsQACACBEAgACABIAIQPhoLC/oBAgN+An8jAEEQayIFJAACfiABvSIDQv///////////wCDIgJCgICAgICAgAh9Qv/////////v/wBYBEAgAkI8hiEEIAJCBIhCgICAgICAgIA8fAwBCyACQoCAgICAgID4/wBaBEAgA0I8hiEEIANCBIhCgICAgICAwP//AIQMAQsgAlAEQEIADAELIAUgAkIAIAOnZ0EgaiACQiCIp2cgAkKAgICAEFQbIgZBMWoQiAEgBSkDACEEIAUpAwhCgICAgICAwACFQYz4ACAGa61CMIaECyECIAAgBDcDACAAIAIgA0KAgICAgICAgIB/g4Q3AwggBUEQaiQAC0IBAX8gASACbCEEIAQCfyADKAJMQQBIBEAgACAEIAMQ3QMMAQsgACAEIAMQ3QMLIgBGBEAgAkEAIAEbDwsgACABbgt3ACAAIAEqAgAgApQ4AgAgACABKgIEIAKUOAIEIAAgASoCCCAClDgCCCAAIAEqAgwgApQ4AgwgACABKgIQIAKUOAIQIAAgASoCFCAClDgCFCAAIAEqAhggApQ4AhggACABKgIcIAKUOAIcIAAgASoCICAClDgCIAs9AQF/IAAoAgQiAARAIAAQ4gIEQAJAIABBCGoiASgCAARAIAEQ9QNBf0cNAQsgACAAKAIAKAIQEQEACwsLCxEAIAAgACgCAEEIazYCACAACy4BAX8gABDsAiAAKAIABEAgABDTBiAAEDIaIAAoAgAhASAAELoBGiABEDELIAALDwAgABDnAUEEaiABEHcaC1kBAn8jAEEQayICJAAgABCtAQRAIAAoAgAhAyAAEP0BGiAD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AwwBCwsgACABNgIECygBAX9BBBAGEIQEIgBBkPYDNgIAIABBpPYDNgIAIABBlPcDQQ0QBQALDwAgACAAKAIAKAIkEQAACxEAIAAgASABKAIAKAIgEQIACxEAIAAgASABKAIAKAIsEQIACwwAIABBgoaAIDYAAAugAQEEfyMAQRBrIgckAAJAIABFDQAgBCgCDCEGIAIgAWsiCEEASgRAIAAgASAIEMMCIAhHDQELIAYgAyABayIBa0EAIAEgBkgbIgFBAEoEQCAAIAcgASAFEKIHIgUQQCABEMMCIQYgBRA4GiABIAZHDQELIAMgAmsiAUEASgRAIAAgAiABEMMCIAFHDQELIAQQnQcgACEJCyAHQRBqJAAgCQsuAQF/IwBBEGsiASQAIAFBCGogABBAIAAQNUECdGoQdygCACEAIAFBEGokACAACysBAX8jAEEQayIBJAAgAUEIaiAAEEAgABA1ahB3KAIAIQAgAUEQaiQAIAALFgAgACABIAIgAyAAKAIAKAIgEQgAGgspACAAQQh0QYCA/AdxIABBGHRyIABBCHZBgP4DcSAAQRh2cnIgACABGwsOACAAKAIIQf////8HcQtQAQF+AkAgA0HAAHEEQCACIANBQGqtiCEBQgAhAgwBCyADRQ0AIAJBwAAgA2uthiABIAOtIgSIhCEBIAIgBIghAgsgACABNwMAIAAgAjcDCAvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEBBfyEEIAAgAlQgASADUyABIANRGw0BIAAgAoUgASADhYRCAFIPC0F/IQQgACACViABIANVIAEgA1EbDQAgACAChSABIAOFhEIAUiEECyAEC1IBAn9BjPsDKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQG0UNAQtBjPsDIAA2AgAgAQ8LQYiZBEEwNgIAQX8LogEBAn8jAEGgAWsiBCQAQX8hBSAEIAFBAWtBACABGzYClAEgBCAAIARBngFqIAEbIgA2ApABIARBAEGQARA5IgRBfzYCTCAEQYICNgIkIARBfzYCUCAEIARBnwFqNgIsIAQgBEGQAWo2AlQCQCABQQBIBEBBiJkEQT02AgAMAQsgAEEAOgAAIAQgAiADQYACQYECEIkFIQULIARBoAFqJAAgBQvRBAEEfyMAQRBrIgQkAAJAAkBBkJECIAEsAAAQoQJFBEBBiJkEQRw2AgAMAQtBAiECIAFBKxChAkUEQCABLQAAQfIARyECCyACQYABciACIAFB+AAQoQIbIgJBgIAgciACIAFB5QAQoQIbIgIgAkHAAHIgAS0AACICQfIARhsiBUGABHIgBSACQfcARhsiBUGACHIgBSACQeEARhshAiAEQrYDNwMAQZx/IAAgAkGAgAJyIAQQISIAQYFgTwRAQYiZBEEAIABrNgIAQX8hAAsgAEEASA0BIwBBIGsiAyQAAn8CQAJAQZCRAiABLAAAEKECRQRAQYiZBEEcNgIADAELQZgJEDciAg0BC0EADAELIAJBAEGQARA5GiABQSsQoQJFBEAgAkEIQQQgAS0AAEHyAEYbNgIACwJAIAEtAABB4QBHBEAgAigCACEBDAELIABBA0EAEA4iAUGACHFFBEAgAyABQYAIcqw3AxAgAEEEIANBEGoQDhoLIAIgAigCAEGAAXIiATYCAAsgAkF/NgJQIAJBgAg2AjAgAiAANgI8IAIgAkGYAWo2AiwCQCABQQhxDQAgAyADQRhqrTcDACAAQZOoASADECANACACQQo2AlALIAJB+gE2AiggAkH7ATYCJCACQfwBNgIgIAJB/QE2AgxBoZkELQAARQRAIAJBfzYCTAsgAkGImgQoAgA2AjhBiJoEKAIAIgEEQCABIAI2AjQLQYiaBCACNgIAIAILIQEgA0EgaiQAIAEiAw0BIAAQDBoLQQAhAwsgBEEQaiQAIAMLJwEBfyMAQRBrIgIkACAAQQNBrLQCQYyzAkHfACABEAMgAkEQaiQACxIAIAAQMigCACAAKAIAa0EEdQumAwICfwF9IAECfyADENcGjiIGi0MAAABPXQRAIAaoDAELQYCAgIB4CyIENgIAIAICfyADQQEgBHSylRCkAiAAKgIclBDWBiIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyIENgIAIAQgACgCFEEBa0YEQCABIAEoAgBBAWo2AgAgAkEANgIAQQAhBAsCQCACAn8gASgCACICQQBIBEAgAUEANgIAQQAMAQsgAiAAKAIQIgVIDQEgASAFQQFrNgIAIAAoAhRBAWsLIgQ2AgALAkACQAJAIAEoAgAiAUEATgRAIAEgACgCEE4NASAEQQBIDQIgBCAAKAIUTg0DDwtBgLIEQfDQABAwQZbUABAwQdMgEDBBjAIQM0HbJRAwQcnaABAwEDQQAAALQYCyBEHd3wAQMEGW1AAQMEHTIBAwQY0CEDNB2yUQMEGw7wAQMBA0EAAAC0GAsgRBr/YAEDBBltQAEDBB0yAQMEGOAhAzQdslEDBB7/cAEDAQNBAAAAtBgLIEQdv9ABAwQZbUABAwQdMgEDBBjwIQM0HbJRAwQe3+ABAwEDQQAAALrQEAIAAgASoCACAClCAAKgIAkjgCACAAIAEqAgQgApQgACoCBJI4AgQgACABKgIIIAKUIAAqAgiSOAIIIAAgASoCDCAClCAAKgIMkjgCDCAAIAEqAhAgApQgACoCEJI4AhAgACABKgIUIAKUIAAqAhSSOAIUIAAgASoCGCAClCAAKgIYkjgCGCAAIAEqAhwgApQgACoCHJI4AhwgACABKgIgIAKUIAAqAiCSOAIgCw8AIAAgACgCAEEEajYCAAsLACAAQRBqIAEQawsSACAAQQRqIAAoAgAgAWwQrQULkwEBAn8gASAAEEYiAksEQCMAQSBrIgMkAAJAIAEgAmsiASAAEDIoAgAgACgCBGtBAnVNBEAgACABEK4DDAELIAAQMiECIANBCGogACAAEEYgAWoQpAMgABBGIAIQvAIiAiABEMcGIAAgAhDrAiACELsCCyADQSBqJAAPCyABIAJJBEAgACAAKAIAIAFBAnRqEJgECwsRACAAIABBAWtxRSAAQQJLcQsJACABIAIQqAELhwEBBH8jAEEQayIBJAAjAEEQayIDJAAgABDnASIAQQRqIQQjAEEQayICJAAgAkEANgIMIAQgAkEMahCeARogAkEQaiQAIANBEGokACAAQQhqEOcBGiABQQA2AgwgAEEMaiABQQxqEJ4BGiABQYCAgPwDNgIEIAAgASoCBDgCECABQRBqJAAgAAsQACAAKAIEIAAoAgBrQQF1CxIAIAAQMigCACAAKAIAa0EBdQsSACAAEDIoAgAgACgCAGtBBXULCgBB4c8BEJYCAAsWAQF/IAAQPSEBIAAQ0wYgACABEIwEC+oBAQV/IAEgABBGIgJLBEAjAEEgayIFJAACQCABIAJrIgIgABAyKAIAIAAoAgRrQQJ1TQRAIAAgAhCuAwwBCyAAEDIhBiAFQQhqAn8gABBGIAJqIQMjAEEQayIBJAAgASADNgIMIAMgABDqAiIETQRAIAAQyAEiAyAEQQF2SQRAIAEgA0EBdDYCCCABQQhqIAFBDGoQbygCACEECyABQRBqJAAgBAwBCxCRAgALIAAQRiAGELwCIgEgAhDHBiAAIAEQ6wIgARC7AgsgBUEgaiQADwsgASACSQRAIAAgACgCACABQQJ0ahCYBAsLJwAgAyADKAIAIAIgAWsiAGsiAjYCACAAQQBKBEAgAiABIAAQPhoLCyQBAn8jAEEQayICJAAgASAAEPEBIQMgAkEQaiQAIAEgACADGwsfAEEIEAYgABD+BiIAQdj3AzYCACAAQfj3A0EMEAUACxkAIAAQrQEEQCAAIAEQjwEPCyAAIAEQnAELLAACQCAAIAFGDQADQCAAIAFBAWsiAU8NASAAIAEQsgcgAEEBaiEADAALAAsLrQEBBH8jAEEQayIIJAACQCAARQ0AIAQoAgwhBiACIAFrIgdBAEoEQCAAIAEgB0ECdiIHEMMCIAdHDQELIAYgAyABa0ECdSIBa0EAIAEgBkgbIgFBAEoEQCAAIAggASAFELsHIgUQQCABEMMCIQYgBRA4GiABIAZHDQELIAMgAmsiAUEASgRAIAAgAiABQQJ2IgEQwwIgAUcNAQsgBBCdByAAIQkLIAhBEGokACAJCyQAIABBC08EfyAAQRBqQXBxIgAgAEEBayIAIABBC0YbBUEKCwsPACAAIAAoAgAoAhwRAAALJAECfyMAQRBrIgIkACABIAAQwwchAyACQRBqJAAgASAAIAMbC2QCAX8BfiMAQRBrIgIkACAAAn4gAUUEQEIADAELIAIgAa1CACABZyIBQdEAahCIASACKQMIQoCAgICAgMAAhUGegAEgAWutQjCGfCEDIAIpAwALNwMAIAAgAzcDCCACQRBqJAALgwECA38BfgJAIABCgICAgBBUBEAgACEFDAELA0AgAUEBayIBIAAgAEIKgCIFQgp+fadBMHI6AAAgAEL/////nwFWIQIgBSEAIAINAAsLIAWnIgIEQANAIAFBAWsiASACIAJBCm4iA0EKbGtBMHI6AAAgAkEJSyEEIAMhAiAEDQALCyABC4EDAQ1/QQAgACAAQZUBSxtBAXRBkIYDai8BAEHo9wJqIQdB5JoEKAIAKAIUIgAEfyAAKAIEIQUgACgCACIAKAIIIAAoAgBBotrv1wZqIgIQ/AEhAyAAKAIMIAIQ/AEhBCAAKAIQIAIQ/AEhAQJAIAMgBUECdk8NACABIARyQQNxIAQgBSADQQJ0ayIGTyABIAZPcnINACABQQJ2IQogBEECdiELQQAhBANAIAAgBCADQQF2IgZqIgxBAXQiDSALakECdGoiASgCACACEPwBIQkgBSABKAIEIAIQ/AEiAU0gCSAFIAFrT3INASAAIAEgCWpqLQAADQEgByAAIAFqEKACIgFFBEAgACAKIA1qQQJ0aiIEKAIAIAIQ/AEhAyAFIAQoAgQgAhD8ASICTSADIAUgAmtPcg0CQQAgACACaiAAIAIgA2pqLQAAGyEIDAILIANBAUYNASAGIAMgBmsgAUEASCIBGyEDIAQgDCABGyEEDAALAAsgCAVBAAsiACAHIAAbC0oBAn8CQCAALQAAIgJFIAIgAS0AACIDR3INAANAIAEtAAEhAyAALQABIgJFDQEgAUEBaiEBIABBAWohACACIANGDQALCyACIANrCxoAIAAgARDZAyIAQQAgAC0AACABQf8BcUYbC6ABAQR/IwBBEGsiBSQAIAUgAjYCDCMAQaABayIDJAAgA0EIaiIGQaCMA0GQARA+GiADIAA2AjQgAyAANgIcIANB/////wdBfiAAayIEIARB/////wdLGyIENgI4IAMgACAEaiIANgIkIAMgADYCGCAGIAEgAhCEBSAEBEAgAygCHCIAIAAgAygCGEZrQQA6AAALIANBoAFqJAAgBUEQaiQAC6IBAgF9An8gALwiAkEXdkH/AXEiA0GVAU0EQCADQf0ATQR9IABDAAAAAJQFAn0gACAAjCACQQBOGyIAQwAAAEuSQwAAAMuSIACTIgFDAAAAP14EQCAAIAGSQwAAgL+SDAELIAAgAZIiACABQwAAAL9fRQ0AGiAAQwAAgD+SCyIAIACMIAJBAE4bCyEACyAAi0MAAABPXQRAIACoDwtBgICAgHgLhwICAn8CfCAAvCIBQYCAgPwDRgRAQwAAAAAPCwJAIAFBgICA/AdrQf///4d4TQRAIAFBAXQiAkUEQCMAQRBrIgFDAACAvzgCDCABKgIMQwAAAACVDwsgAUGAgID8B0YNASACQYCAgHhJIAFBAE5xRQRAIAAQmAUPCyAAQwAAAEuUvEGAgIDcAGshAQtBuPICKwMAIAEgAUGAgMz5A2siAUGAgIB8cWu+uyABQQ92QfABcSICQbDwAmorAwCiRAAAAAAAAPC/oCIDIAOiIgSiQcDyAisDACADokHI8gIrAwCgoCAEoiABQRd1t0Gw8gIrAwCiIAJBuPACaisDAKAgA6CgtiEACyAACwgAIAAQ5wEaCycBAX8jAEEQayICJAAgAEEDQYC1AkGwsgJB6gAgARADIAJBEGokAAsNACAAKAIEIAEoAgRLCyEAIAAoAgQgABAyKAIASQRAIAAgARDtAg8LIAAgARDuBQsNACAAKAIAEDEgABAxCwgAIABB9ABqCwkAIAAgARCeAQsxAQF/IwBBEGsiAyQAIAMgATYCDCAAIANBDGoQngEiACACKQIANwIEIANBEGokACAACxIAIAAgAjoABCAAIAE2AgAgAAsWACAAIAEoAgA2AgAgACACLQAAOgAEC+IBAgN/AX0jAEEQayICJAAgAiABNgIMAkAgAiABQQFGBH9BAgUgASABQQFrcUUNASABEPMECyIBNgIMCwJAIAAQlAEiAyABSQRAIAAgARCQBgwBCyABIANPDQAgAxCLAiEEAn8gABA8KAIAsyAAEF4qAgCVjSIFQwAAgE9dIAVDAAAAAGBxBEAgBakMAQtBAAshASACIAQEf0EBQSAgAUEBa2drdCABIAFBAk8bBSABEPMECzYCCCACIAJBDGogAkEIahBvKAIAIgE2AgwgASADTw0AIAAgARCQBgsgAkEQaiQACwkAQZEIEJYCAAsgAQF/IAAoAgAhASAAQQA2AgAgAQRAIAAQUyABEKQGCwspAQF/IwBBEGsiAiQAIAIgATYCCCAAIAJBCGoQngEhACACQRBqJAAgAAsLACAAQgA3AgAgAAsMACAAIAEgACABShsLDQAgAEH/////ARC/AgtkAQJ/IwBBEGsiBSQAIAVBADYCDCAAQQxqIAMQ1AEgAQRAIAAoAhAgARCIBCEECyAAIAQ2AgAgACAEIAJBA3RqIgI2AgggACACNgIEIAAQPCAEIAFBA3RqNgIAIAVBEGokACAACwwAIAEgAikCADcCAAssACAAKAIAGiAAKAIAIAAQyAFBAnRqGiAAKAIAIAAQyAFBAnRqGiAAKAIAGgsZACABQf////8DSwRAEPMBAAsgAUECdBBbCw0AIAAgASACQQIQpQQLTQEBfyAAKAIEIQEDQCABIAAoAghHBEAgACgCEBogACAAKAIIQQRrNgIIDAELCyAAKAIABEAgACgCEBogACgCACEBIAAQxQYaIAEQMQsLZAECfyMAQRBrIgUkACAFQQA2AgwgAEEMaiADENQBIAEEQCAAKAIQIAEQuQIhBAsgACAENgIAIAAgBCACQQJ0aiICNgIIIAAgAjYCBCAAEDwgBCABQQJ0ajYCACAFQRBqJAAgAAsKACAAKAIAEIsECwoAQdj7ABCWAgALPwEBfyMAQRBrIgIkACAAEDIaIAIgATYCDCACQf////8HNgIIIAJBDGogAkEIahCVAigCACEAIAJBEGokACAACwkAIAAgARC5AgskACAAQQJPBH8gAEEEakF8cSIAIABBAWsiACAAQQJGGwVBAQsLnAEBBX8jAEEQayIFJAAgARDEBCECIwBBEGsiAyQAAkAgAkHv////A00EQAJAIAIQugMEQCAAIAIQnAEgACEEDAELIAAgACACEMECQQFqIgYQwAIiBBCVASAAIAYQtQEgACACEI8BCyAEIAEgAhDMASADQQA2AgwgBCACQQJ0aiADQQxqEKoBIANBEGokAAwBCxC0AQALIAVBEGokAAsTACAAIAEgAiAAKAIAKAIwEQQAC8YBAQZ/IwBBEGsiBCQAIAAQUygCACEFAn8gAigCACAAKAIAayIDQf////8HSQRAIANBAXQMAQtBfwsiA0EEIAMbIQMgASgCACEGIAAoAgAhByAFQc0CRgR/QQAFIAAoAgALIAMQ0AIiCARAIAVBzQJHBEAgABC5ARoLIARBzAI2AgQgACAEQQhqIAggBEEEahBmIgUQqQcgBRBlIAEgACgCACAGIAdrajYCACACIAAoAgAgA0F8cWo2AgAgBEEQaiQADwsQdQALJgAgACAAKAIYRSAAKAIQIAFyciIBNgIQIAAoAhQgAXEEQBB1AAsLEwAgACABQQAgACgCACgCNBEEAAsTACAAIAFBACAAKAIAKAIkEQQAC/ICAQJ/IwBBEGsiCiQAIAogADYCDAJAAkACQCADKAIAIAJHDQBBKyELIAAgCSgCYEcEQEEtIQsgCSgCZCAARw0BCyADIAJBAWo2AgAgAiALOgAADAELIAYQNUUgACAFR3JFBEBBACEAIAgoAgAiASAHa0GfAUoNAiAEKAIAIQAgCCABQQRqNgIAIAEgADYCAAwBC0F/IQAgCSAJQegAaiAKQQxqELoEIAlrIgZB3ABKDQEgBkECdSEFAkACQAJAIAFBCGsOAwACAAELIAEgBUoNAQwDCyABQRBHIAZB2ABIcg0AIAMoAgAiASACRiABIAJrQQJKcg0CIAFBAWstAABBMEcNAkEAIQAgBEEANgIAIAMgAUEBajYCACABIAVB4LgDai0AADoAAAwCCyADIAMoAgAiAEEBajYCACAAIAVB4LgDai0AADoAACAEIAQoAgBBAWo2AgBBACEADAELQQAhACAEQQA2AgALIApBEGokACAACwsAIABBhLoEEMsBC+4CAQN/IwBBEGsiCiQAIAogADoADwJAAkACQCADKAIAIAJHDQBBKyELIABB/wFxIgwgCS0AGEcEQEEtIQsgCS0AGSAMRw0BCyADIAJBAWo2AgAgAiALOgAADAELIAYQNUUgACAFR3JFBEBBACEAIAgoAgAiASAHa0GfAUoNAiAEKAIAIQAgCCABQQRqNgIAIAEgADYCAAwBC0F/IQAgCSAJQRpqIApBD2oQvQQgCWsiBUEXSg0BAkACQAJAIAFBCGsOAwACAAELIAEgBUoNAQwDCyABQRBHIAVBFkhyDQAgAygCACIBIAJGIAEgAmtBAkpyDQIgAUEBay0AAEEwRw0CQQAhACAEQQA2AgAgAyABQQFqNgIAIAEgBUHguANqLQAAOgAADAILIAMgAygCACIAQQFqNgIAIAAgBUHguANqLQAAOgAAIAQgBCgCAEEBajYCAEEAIQAMAQtBACEAIARBADYCAAsgCkEQaiQAIAALCwAgAEH8uQQQywELNAAgACgCABogACgCACAAELMBQQxsahogACgCACAAEGxBDGxqGiAAKAIAIAAQswFBDGxqGgtqAQJ/IABB0JsDNgIAIAAoAighAQNAIAEEQEEAIAAgAUEBayIBQQJ0IgIgACgCJGooAgAgACgCICACaigCABEGAAwBCwsgAEEcahBFIAAoAiAQMSAAKAIkEDEgACgCMBAxIAAoAjwQMSAAC40BAQF/AkAgACgCBCIBIAEoAgBBDGsoAgBqKAIYRQ0AIAAoAgQiASABKAIAQQxrKAIAahDQA0UNACAAKAIEIgEgASgCAEEMaygCAGooAgRBgMAAcUUNACAAKAIEIgEgASgCAEEMaygCAGooAhgQzwJBf0cNACAAKAIEIgAgACgCAEEMaygCAGpBARDFAgsLDwAgACAAKAIAKAIYEQAAC5wIAQt/IABFBEAgARA3DwsgAUFATwRAQYiZBEEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEGIABBCGsiBSgCBCIJQXhxIQQCQCAJQQNxRQRAQQAgBkGAAkkNAhogBkEEaiAETQRAIAUhAiAEIAZrQYCnBCgCAEEBdE0NAgtBAAwCCyAEIAVqIQcCQCAEIAZPBEAgBCAGayIDQRBJDQEgBSAJQQFxIAZyQQJyNgIEIAUgBmoiAiADQQNyNgIEIAcgBygCBEEBcjYCBCACIAMQ+gQMAQtBuKMEKAIAIAdGBEBBrKMEKAIAIARqIgQgBk0NAiAFIAlBAXEgBnJBAnI2AgQgBSAGaiIDIAQgBmsiAkEBcjYCBEGsowQgAjYCAEG4owQgAzYCAAwBC0G0owQoAgAgB0YEQEGoowQoAgAgBGoiAyAGSQ0CAkAgAyAGayICQRBPBEAgBSAJQQFxIAZyQQJyNgIEIAUgBmoiBCACQQFyNgIEIAMgBWoiAyACNgIAIAMgAygCBEF+cTYCBAwBCyAFIAlBAXEgA3JBAnI2AgQgAyAFaiICIAIoAgRBAXI2AgRBACECQQAhBAtBtKMEIAQ2AgBBqKMEIAI2AgAMAQsgBygCBCIDQQJxDQEgA0F4cSAEaiIKIAZJDQEgCiAGayEMAkAgA0H/AU0EQCAHKAIIIgQgA0EDdiICQQN0QcijBGpGGiAEIAcoAgwiA0YEQEGgowRBoKMEKAIAQX4gAndxNgIADAILIAQgAzYCDCADIAQ2AggMAQsgBygCGCELAkAgByAHKAIMIghHBEAgBygCCCICQbCjBCgCAEkaIAIgCDYCDCAIIAI2AggMAQsCQCAHQRRqIgQoAgAiAg0AIAdBEGoiBCgCACICDQBBACEIDAELA0AgBCEDIAIiCEEUaiIEKAIAIgINACAIQRBqIQQgCCgCECICDQALIANBADYCAAsgC0UNAAJAIAcoAhwiA0ECdEHQpQRqIgIoAgAgB0YEQCACIAg2AgAgCA0BQaSjBEGkowQoAgBBfiADd3E2AgAMAgsgC0EQQRQgCygCECAHRhtqIAg2AgAgCEUNAQsgCCALNgIYIAcoAhAiAgRAIAggAjYCECACIAg2AhgLIAcoAhQiAkUNACAIIAI2AhQgAiAINgIYCyAMQQ9NBEAgBSAJQQFxIApyQQJyNgIEIAUgCmoiAiACKAIEQQFyNgIEDAELIAUgCUEBcSAGckECcjYCBCAFIAZqIgMgDEEDcjYCBCAFIApqIgIgAigCBEEBcjYCBCADIAwQ+gQLIAUhAgsgAgsiAgRAIAJBCGoPCyABEDciBUUEQEEADwsgBSAAQXxBeCAAQQRrKAIAIgJBA3EbIAJBeHFqIgIgASABIAJLGxA+GiAAEDEgBQvwAQEDfyAARQRAQYj7AygCAARAQYj7AygCABDRAiEBC0Hw+QMoAgAEQEHw+QMoAgAQ0QIgAXIhAQtBiJoEKAIAIgAEQANAIAAoAkwaIAAoAhQgACgCHEcEQCAAENECIAFyIQELIAAoAjgiAA0ACwsgAQ8LIAAoAkxBAE4hAgJAAkAgACgCFCAAKAIcRg0AIABBAEEAIAAoAiQRBAAaIAAoAhQNAEF/IQEMAQsgACgCBCIBIAAoAggiA0cEQCAAIAEgA2usQQEgACgCKBETABoLQQAhASAAQQA2AhwgAEIANwMQIABCADcCBCACRQ0ACyABC5kBAQN8IAAgAKIiAyADIAOioiADRHzVz1o62eU9okTrnCuK5uVavqCiIAMgA0R9/rFX4x3HPqJE1WHBGaABKr+gokSm+BARERGBP6CgIQUgAyAAoiEEIAJFBEAgBCADIAWiRElVVVVVVcW/oKIgAKAPCyAAIAMgAUQAAAAAAADgP6IgBSAEoqGiIAGhIARESVVVVVVVxT+ioKELkgEBA3xEAAAAAAAA8D8gACAAoiICRAAAAAAAAOA/oiIDoSIERAAAAAAAAPA/IAShIAOhIAIgAiACIAJEkBXLGaAB+j6iRHdRwRZswVa/oKJETFVVVVVVpT+goiACIAKiIgMgA6IgAiACRNQ4iL7p+qi9okTEsbS9nu4hPqCiRK1SnIBPfpK+oKKgoiAAIAGioaCgC0cAIAAgAUkEQCAAIAEgAhA+Gg8LIAIEQCAAIAJqIQAgASACaiEBA0AgAEEBayIAIAFBAWsiAS0AADoAACACQQFrIgINAAsLC/4CAQZ/IAAoAgQhBiACQfGT69wDTwRAIAAoAgBCuICAgBA3AhQgACAAKAIAKAIAEQEAC0EIIAJBB3EiA2tBACADGyEDIAFBAk8EQCAAKAIAIgUgATYCGCAFQQ82AhQgACAAKAIAKAIAEQEACyACIANqIQMCQAJAIAYgAUECdGoiCCgCNCICRQ0AA0AgAyACIgQoAghLBEAgBCgCACICDQEMAgsLIAQhAQwBCyABQQJ0QZjHAkGQxwIgBBtqKAIAIgFB8JPr3AMgA2siAiABIAJJGyICIANqIgVBEGoiBxA3IgFFBEADQCACQeMATQRAIAAoAgBCuICAgCA3AhQgACAAKAIAKAIAEQEACyACQQF2IgEhAiABIANqIgVBEGoiBxA3IgFFDQALCyAGIAYoAkwgB2o2AkwgASAFNgIIIAFCADcDACAERQRAIAggATYCNAwBCyAEIAE2AgALIAEgASgCBCIAIANqNgIEIAEgASgCCCADazYCCCAAIAFqQRBqC+0BAgF/BH0jAEEwayIGJAACfyAABEAgAEEIaiABIAYQsAMgAEG4AWogBioCDCAGKgIAIAKUIAYqAgQgA5SSkiAGKgIsIAYqAiAgApQgBioCJCADlJKSIgeVIAYqAhwgBioCECAClCAGKgIUIAOUkpIgB5UgBCAFEHFBH3UMAQsgASoCHCEHIAEqAhQhCCABKgIQIQkgBCABKgIMIAEqAgAgApQgASoCBCADlJKSIAEqAiwgASoCICAClCABKgIkIAOUkpIiCpU4AgAgBSAHIAkgApQgCCADlJKSIAqVOAIAQQALIQEgBkEwaiQAIAELpwIBBX8gACgC1AMhAiAAIAAoAtADKAIIEQAARQRAIAAoAgAiAUEZNgIUIAAgASgCABEBAAsgACgC1AJBAEoEQANAIAAgA0ECdCIFaigC2AIhBAJAAkAgACgC4AEEQCAAKAKcAw0BIAAoAqQDDQILIAIgBCgCFEECdGooAjwiAUIANwAAIAFCADcAOCABQgA3ADAgAUIANwAoIAFCADcAICABQgA3ABggAUIANwAQIAFCADcACCACIAVqIgFBADYCKCABQQA2AhggACgC4AFFBEAgACgCtAMNAQwCCyAAKAKcA0UNAQsgAiAEKAIYQQJ0aigCfEEAQYACEDkaCyADQQFqIgMgACgC1AJIDQALCyACQXA2AhQgAkIANwIMIAIgACgCmAI2AjgLyQoBDH8gACgCGCIGKAIEIQQgBigCACEFIAAgAzYC5AEgACACNgLgASAAIAE2AtwBAkAgBEUEQCAAIAYoAgwRAABFDQEgBigCACEFIAYoAgQhBAsgBS0AACECIARBAWsiAwR/IAVBAWoFIAAgBigCDBEAAEUNASAGKAIEIQMgBigCAAsiBC0AACEHIAAgA0EBayIFBH8gBEEBagUgACAGKAIMEQAARQ0BIAYoAgQhBSAGKAIACyIELQAANgLUASAAIAVBAWsiBQR/IARBAWoFIAAgBigCDBEAAEUNASAGKAIEIQUgBigCAAsiBC0AAEEIdCIDNgIgIAAgBUEBayIFBH8gBEEBagUgACAGKAIMEQAARQ0BIAAoAiAhAyAGKAIEIQUgBigCAAsiBC0AACADajYCICAAIAVBAWsiBQR/IARBAWoFIAAgBigCDBEAAEUNASAGKAIEIQUgBigCAAsiBC0AAEEIdCIDNgIcIAAgBUEBayIFBH8gBEEBagUgACAGKAIMEQAARQ0BIAAoAhwhAyAGKAIEIQUgBigCAAsiBC0AACADajYCHCAAIAVBAWsiAwR/IARBAWoFIAAgBigCDBEAAEUNASAGKAIEIQMgBigCAAsiBS0AADYCJCAAKAIAIgEgACgCuAM2AhggASAAKAIcNgIcIAEgACgCIDYCICAAKAIkIQQgAUHmADYCFCABIAQ2AiQgAEEBIAEoAgQRAgAgACgC0AMoAhAEQCAAKAIAIgFBPTYCFCAAIAEoAgARAQALIAJBCHQgB3JBCGshAQJAAkAgACgCIEUNACAAKAIcRQ0AIAAoAiQiBEEASg0BCyAAKAIAIgJBITYCFCAAIAIoAgARAQAgACgCJCEECyAEQQNsIAFHBEAgACgCACIBQQw2AhQgACABKAIAEQEACyAAKALYAUUEQCAAIABBASAAKAIkQdgAbCAAKAIEKAIAEQQANgLYAQsgBUEBaiEIIANBAWshBCAAKAIkQQBKBEBBACEDA0AgBAR/IAQFIAAgBigCDBEAAEUNAyAGKAIAIQggBigCBAtBAWshCyAAKALYASEBIAgtAAAhAgJAIANFBEAgASEEDAELIANBAmshDCADQQFrIQkgASAKaiEHQQAhBSABIQQDQCACIAQoAgBGBEAgAUHYAGohBCABKAIAIQUgA0ECTwRAIAxBA08EQCAJQXxxIQFBACECA0AgBCgCiAIiDCAEKAKwASINIAQoAlgiDiAEKAIAIg8gBSAFIA9IGyIFIAUgDkgbIgUgBSANSBsiBSAFIAxIGyEFIARB4AJqIQQgAkEEaiICIAFHDQALC0EAIQIgCUEDcSIBBEADQCAEKAIAIgkgBSAFIAlIGyEFIARB2ABqIQQgAkEBaiICIAFHDQALCyAHIQQLIAVBAWohAgwCCyAEQdgAaiEEIAVBAWoiBSADRw0ACyAHIQQLIAQgAzYCBCAEIAI2AgAgBCALBH8gCEEBagUgACAGKAIMEQAARQ0DIAYoAgQhCyAGKAIACyIFLQAAIgFBD3E2AgwgBCABQQR2NgIIIAQgC0EBayIBBH8gBUEBagUgACAGKAIMEQAARQ0DIAYoAgQhASAGKAIACyICLQAANgIQIAAoAgAiByAEKAIANgIYIAcgBCgCCDYCHCAHIAQoAgw2AiAgBCgCECEEIAdB5wA2AhQgByAENgIkIABBASAHKAIEEQIAIApB2ABqIQogAkEBaiEIIAFBAWshBCADQQFqIgMgACgCJEgNAAsLIAAoAtADQQE2AhAgBiAENgIEIAYgCDYCAEEBDwtBAAvREgIOfQl/IAVFBEAjAEEgayIFJABDILy+TCEGAkAgA0EESA0AIAAqAixDAAAAAFsNACADQQZ0EDciF0UEQEEAQQNB8qkCQQAQNkMAAIC/IQYMAQsgA0EDdBA3IhgEQANAQQAhFiAVQQNGBEAgA0EBdCEZIAOyIRECQANAIAQqAiQhEiAEKgIgIQ9DAAAAACEKQQAhFQNAIAMgFUcEQCAPIAIgFUEMbGoiACoCACIIlCAAKgIEIgkgEpSSQwAAgD+SIgZDAAAAAFsNAyABIBVBA3QiAGoiGioCACELIAQqAgwhDiAEKgIAIRAgBCoCBCETIAAgGGoiACAaKgIEIAQqAhwgBCoCECAIlCAJIAQqAhSUkpIiDCAGlZMiDTgCBCAAIAsgDiAQIAiUIAkgE5SSkiILIAaVkyIOOAIAIBcgFUEGdGoiACAJIAaVIhA4AgQgACAIIAaVIhM4AgAgAEMAAIA/IAaVIhQ4AgggAEIANwIMIABBADYCFCAAIAsgCIwiCJQgBiAGlCIGlTgCGCAAIAsgCYwiCZQgBpU4AhwgAEIANwIgIABBADYCKCAAIBM4AiwgACAQOAIwIAAgFDgCNCAAIAwgCJQgBpU4AjggACAMIAmUIAaVOAI8IAogDiAOlCANIA2UkpIhCiAVQQFqIRUMAQsLAkAgCiARlSIGQ83MzD1dDQACQCAWRSAGQwAAgEBdRXJFBEAgBiAHlUOkcH0/Xg0CIBZBCkcNAQwCCyAWQQpGDQELIAUgGCAXIBkQuwVBAEgNAiAEIAUqAgAgBCoCAJI4AgAgBCAFKgIEIAQqAgSSOAIEIAQgBSoCCCAEKgIMkjgCDCAEIAUqAgwgBCoCEJI4AhAgBCAFKgIQIAQqAhSSOAIUIAQgBSoCFCAEKgIckjgCHCAEIAUqAhggBCoCIJI4AiAgBCAFKgIcIAQqAiSSOAIkIBZBAWohFiAGIQcMAQsLIBcQMSAYEDEMBAsgFxAxIBgQMUMgvL5MIQYMAwUDQCAWQQRHBEAgFkECdCIZIAQgFUEEdCIaamogACAaaiAZaioCACAAKgIslTgCACAWQQFqIRYMAQsLIBVBAWohFQwBCwALAAtBAEEDQfKpAkEAEDYgFxAxQwAAgL8hBgsgBUEgaiQAIAYPCyAGIQgjAEEgayIWJABDILy+TCEGAkAgA0EESA0AIAAqAixDAAAAAFsNAAJ/IAOyIg4gCJQiBotDAAAAT10EQCAGqAwBC0GAgICAeAshBSADQQZ0EDciFUUEQEEAQQNB8qkCQQAQNkMAAIC/IQYMAQsgA0EDdBA3IhhFBEBBAEEDQfKpAkEAEDYgFRAxQwAAgL8hBgwBCyADQQJ0IhcQNyIaRQRAQQBBA0HyqQJBABA2IBUQMSAYEDFDAACAvyEGDAELIBcQNyIZBEAgBUEFIAVBBUobQQFrIRtBACEXA0BBACEFIBdBA0YEQCAZIBtBAnRqIR1BACEXAkADQCAEKgIkIREgBCoCICESQQAhBQNAIAMgBUcEQCASIAIgBUEMbGoiACoCACIIlCAAKgIEIgkgEZSSQwAAgD+SIgZDAAAAAFsNAyABIAVBA3QiAGoiGyoCACENIAQqAgwhCyAEKgIAIQ8gBCoCBCEQIAAgGGoiACAbKgIEIAQqAhwgBCoCECAIlCAJIAQqAhSUkpIiCiAGlZMiDDgCBCAAIA0gCyAPIAiUIAkgEJSSkiINIAaVkyILOAIAIBkgBUECdCIAaiALIAuUIAwgDJSSIgw4AgAgACAaaiAMOAIAIBUgBUEGdGoiACAJIAaVIgw4AgQgACAIIAaVIgs4AgAgAEMAAIA/IAaVIg84AgggAEIANwIMIABBADYCFCAAIA0gCIwiCJQgBiAGlCIGlTgCGCAAIA0gCYwiCZQgBpU4AhwgAEIANwIgIABBADYCKCAAIAs4AiwgACAMOAIwIAAgDzgCNCAAIAogCJQgBpU4AjggACAKIAmUIAaVOAI8IAVBAWohBQwBCwsgGSADQQRB8gAQkwUgHSoCAEMAAIBAlEMAAIBBlyIIQwAAwECVIQlBACEFQwAAAAAhBgNAIAMgBUcEQCAIIBkgBUECdGoqAgAiCl0EfSAJIAaSBSAJQwAAgD9DAACAPyAKIAiVkyIKIAqUIAqUk5QgBpILIQYgBUEBaiEFDAELCwJAIAYgDpUiBkPNzMw9XQ0AAkAgF0UgBkMAAIBAXUVyRQRAIAYgB5VDpHB9P14NAiAXQQpHDQEMAgsgF0EKRg0BC0EAIRtBACEcA0AgAyAbRwRAIAggGiAbQQJ0aioCACIHYARAIBUgHEEFdGoiAEMAAIA/IAcgCJWTIgcgB5QiByAVIBtBBnRqIgUqAgCUOAIAIAAgByAFKgIElDgCBCAAIAcgBSoCCJQ4AgggACAHIAUqAgyUOAIMIAAgByAFKgIQlDgCECAAIAcgBSoCFJQ4AhQgACAHIAUqAhiUOAIYIAAgByAFKgIclDgCHCAAIAcgBSoCIJQ4AiAgACAHIAUqAiSUOAIkIAAgByAFKgIolDgCKCAAIAcgBSoCLJQ4AiwgACAHIAUqAjCUOAIwIAAgByAFKgI0lDgCNCAAIAcgBSoCOJQ4AjggACAHIAUqAjyUOAI8IBggHEECdGoiACAHIBggG0EDdGoiBSoCAJQ4AgAgACAHIAUqAgSUOAIEIBxBAmohHAsgG0EBaiEbDAELCyAcQQVMBEAgFRAxIBgQMSAaEDEgGRAxQwAAgL8hBgwHCyAWIBggFSAcELsFQQBIDQIgBCAWKgIAIAQqAgCSOAIAIAQgFioCBCAEKgIEkjgCBCAEIBYqAgggBCoCDJI4AgwgBCAWKgIMIAQqAhCSOAIQIAQgFioCECAEKgIUkjgCFCAEIBYqAhQgBCoCHJI4AhwgBCAWKgIYIAQqAiCSOAIgIAQgFioCHCAEKgIkkjgCJCAXQQFqIRcgBiEHDAELCyAVEDEgGBAxIBoQMSAZEDEMBAsgFRAxIBgQMSAaEDEgGRAxQyC8vkwhBgwDBQNAIAVBBEcEQCAFQQJ0IhwgBCAXQQR0Ih1qaiAAIB1qIBxqKgIAIAAqAiyVOAIAIAVBAWohBQwBCwsgF0EBaiEXDAELAAsAC0EAQQNB8qkCQQAQNiAVEDEgGBAxIBoQMUMAAIC/IQYLIBZBIGokACAGC+AGAwd/BH0DfCMAQeABayIHJAAgByAEQQR0EDciCzYC0AEgCwRAAkAgByAEQRhsEDciDDYC1AEgDEUNACAEQQAgBEEAShshDQNAIAggDUZFBEAgECADIAhBDGxqIgkqAgiSIRAgDyAJKgIEkiEPIA4gCSoCAJIhDiAIQQFqIQgMAQsLIBAgBLIiEZUhECAPIBGVIQ8gDiARlSEOQQAhCANAIAggDUZFBEAgCyAIQQR0aiIJIAIgCEEDdGoiCioCALs5AwAgCSAKKgIEuzkDCCAMIAhBGGxqIgkgAyAIQQxsaiIKKgIAIA6TuzkDACAJIAoqAgQgD5O7OQMIIAkgCioCCCAQk7s5AxAgCEEBaiEIDAELCyAHIAQ2AtgBQQAhAgNAQQAhCCACQQNGRQRAA0AgCEEDRkUEQCAHQfAAaiACQQV0aiAIQQN0aiABIAJBBHRqIAhBAnRqKgIAuzkDACAIQQFqIQgMAQsLIAJBAWohAgwBCwsgByABKgIMIAEqAgggEJQgASoCACAOlCAPIAEqAgSUkpKSuzkDiAEgByABKgIcIAEqAhggEJQgASoCECAOlCAPIAEqAhSUkpKSuzkDqAEgByABKgIsIAEqAiggEJQgASoCICAOlCAPIAEqAiSUkpKSuzkDyAECQCAGRQRAIAAgB0HQAWogB0HwAGogB0EQaiAHQQhqEN4CQQBODQEgB0KAgICAwPD1y8EANwMIDAELIAAgB0HQAWogB0HwAGogB0EQaiAHQQhqEM8FQQBODQAgB0KAgICAwPD1y8EANwMICyAHKALQARAxIAcoAtQBEDFBACECA0BBACEIIAJBA0ZFBEADQCAIQQNGRQRAIAUgAkEEdGogCEECdGogB0EQaiACQQV0aiAIQQN0aisDALY4AgAgCEEBaiEIDAELCyACQQFqIQIMAQsLIAUgBysDKCAHKwMQIA67IhKioSAHKwMYIA+7IhOioSAHKwMgIBC7IhSiobY4AgwgBSAHKwNIIAcrAzAgEqKhIAcrAzggE6KhIAdBQGsrAwAgFKKhtjgCHCAFIAcrA2ggBysDUCASoqEgBysDWCAToqEgBysDYCAUoqG2OAIsIAcrAwghEiAHQeABaiQAIBK2DwsLQQBBA0HSrwJBABA2QQEQAQALJwECfwNAIAAgARCeBSICBEAgAC0AACIDQQpGIANBI0ZyDQELCyACC1gBAn8DQCAAIAEQngUEQCAAEIQBIQIDQAJAIAJFDQACQCAAIAJBAWsiAmoiAy0AAEEKaw4EAAEBAAELIANBADoAAAwBCwsgAC0AACICRSACQSNGcg0BCwsLJwEBfyMAQRBrIgIkACAAQQRBwLMCQbCzAkHcACABEAMgAkEQaiQAC64EAgd/BXwjAEGgAWsiByQAQX8hBQJAIAEoAggiBkEDSA0AIAZB4ABsEDciCEUEQEEAQQNBhQtBABA2DAELIAZBBHQQNyIKBEBBACEGA0BBACEFIAZBA0YEQEEAIQYCQANAIAAgAyAHQTBqEJIERAAAAAAAAAAAIQxBACEFA0AgASgCCCICIAVKBEAgB0GQAWogB0EwaiABKAIEIAVBGGxqEPAFQQBIDQMgBUEEdCICIAEoAgBqIgkrAwAhDSAHKwOQASEPIAIgCmoiAiAJKwMIIAcrA5gBoSIOOQMIIAIgDSAPoSINOQMAIAwgDSANoiAOIA6ioKAhDCAFQQFqIQUMAQsLAkAgDCACt6MiDCAAKwNoYw0AAkAgBkUNACAMIAArA3hjRQ0AIAArA3AgDCAQo2MNAQtBACEFIAYgACgCYEYNAANAIAEoAggiAiAFSgRAIAVBGGwhAiAFQeAAbCEJIAVBAWohBSAIIAlqIAAgAyACIAEoAgRqEOoFQQBODQEMBAsLIAcgCiAIIAJBAXQQ5AVBAEgNAiADIAcQ4QUgBkEBaiEGIAwhEAwBCwsgBCAMOQMAIAgQMSAKEDFBACEFDAQLIAgQMSAKEDFBfyEFDAMFA0AgBUEERwRAIAVBA3QiCSADIAZBBXQiC2pqIAIgC2ogCWorAwA5AwAgBUEBaiEFDAELCyAGQQFqIQYMAQsACwALQQBBA0GFC0EAEDYgCBAxCyAHQaABaiQAIAULFQAgAEMAAIA/IAEgAUMAAAAAWxuVCyIAIAAgASoCACACKgIAkzgCACAAIAEqAgQgAioCBJM4AgQLEQAgABDpBSABEOkFIAIQnQYLJgEBfyAAQQRqEPUDIgFBf0YEQCAAIAAoAgAoAggRAQALIAFBf0YLJQEBfyMAQRBrIgEkACABQQhqIAAQkgYoAgAhACABQRBqJAAgAAuOBgIJfwJ8IAAoAgAhBSAAKAIEIQNBACEAIwBB0A9rIgYkAAJAIANB9ANKDQACQAJAAkAgAw4CAwABCyAFRAAAAAAAAPA/IAUrAwCjOQMADAELIANBACADQQBKGyEJA0AgACAJRgRAA0AgBCAJRgRAQQAhBANAIAkgBCIBRg0FA0ACQCABIANGBEAgAyEBDAELIAYgAUECdGooAgAgBEYNACABQQFqIQEMAQsLIAYgAUECdGogBiAEQQJ0aigCADYCACAFIARBA3RqIQAgBSABQQN0aiEBQQAhAgNAIAIgCUcEQCABKwMAIQogASAAKwMAOQMAIAAgCjkDACACQQFqIQIgACADQQN0IghqIQAgASAIaiEBDAELCyAEQQFqIQQMAAsAC0QAAAAAAAAAACEKQX8hAiAFIAQiACADbEEDdGoiCCEBA0AgACADRwRAIAErAwCZIgsgCiAKIAtjIgcbIQogACACIAcbIQIgAEEBaiEAIAEgA0EDdGohAQwBCwtBACEAIAJBf0YgCkS7vdfZ33zbPWVyDQQgBiACQQJ0aiIAKAIAIQEgACAGIARBAnRqIgAoAgA2AgAgACABNgIAIAUgAiADbEEDdGohAEEAIQIgCCEBA0AgAiADRwRAIAArAwAhCiAAIAErAwA5AwAgASAKOQMAIAJBAWohAiABQQhqIQEgAEEIaiEADAELCyAIKwMAIQpBASEBIAghAANAIAEgA0cEQCAAIAArAwggCqM5AwAgAUEBaiEBIABBCGohAAwBCwsgAEQAAAAAAADwPyAKozkDAEEAIQcDQCADIAdHBEAgBCAHRwRAIAUgAyAHbEEDdGoiACsDAJohCkEBIQEgCCECA0AgASADRwRAIAAgCiACKwMAoiAAKwMIoDkDACACQQhqIQIgAUEBaiEBIABBCGohAAwBCwsgACACKwMAIAqiOQMACyAHQQFqIQcMAQsLIARBAWohBAwACwAFIAYgAEECdGogADYCACAAQQFqIQAMAQsACwALIAUhAAsgBkHQD2okAEEAQX8gABsLHAAgABCEBCIAQbjaATYCACAAQQRqIAEQpwMgAAvtFAINfwF9IwBBEGsiDSQAIAEoAgBBAkYEQAJAAkACQAJAAkAgAigCAA4DAQMAAgsgASgCGCELIABBLGpBABA6IQAgAigCGCEIIAIoAgghCgJAIAIoAgQiB0EESwRAIApBBEsEQCAHQQJrIQYgB0EBa0ECdCEJIAdBA2tBAnQhDCAHQQRrQQJ0IQ4gACEBA0ACQCADIApGBEBBACEFIAshAiAHQQJ0IgQgACIGaiIBIQMgASAEaiIEIQgMAQtBAiEFIAEgCCADIAdsQQJ0aiICKgIIIAIqAgAiECAQQwAAwECUIBAgAioCBJJDAACAQJSSkpI4AgAgASACKgIMIAIqAgAiECACKgIEQwAAwECUIBAgAioCCJJDAACAQJSSkpI4AgQgAUEIaiEEA0AgBSAGRgRAIAQgAiAJaiIBKgIAIhAgAiAOaioCACACIAZBAnRqIgUqAgBDAADAQJQgECACIAxqIgIqAgCSQwAAgECUkpKSOAIAIAQgASoCACIQIAIqAgAgEEMAAMBAlCAQIAUqAgCSQwAAgECUkpKSOAIEIANBAWohAyAEQQhqIQEMAwUgBCACIAVBAnRqIgEqAgggAUEIayoCACABKgIAQwAAwECUIAFBBGsqAgAgAiAFQQFqIgVBAnRqKgIAkkMAAIBAlJKSkjgCACAEQQRqIQQMAQsACwALCwNAIAUgB0cEQCACIAgqAgAgBioCACIQIBBDAADAQJQgECADKgIAkkMAAIBAlJKSkkMAAIA7lDgCACAIQQRqIQggA0EEaiEDIAZBBGohBiACQQRqIQIgBUEBaiEFDAELCyALIAdBAnQiA2ohAiADIARqIQZBACEFIAAhAwNAIAUgB0YEQAJAIApBAmshDEECIQkDQAJAIAkgDEYEQCAAIApBBGsgB2xBAnRqIgEgB0ECdCIDaiIEIANqIgIgA2ohBiALIAcgDGxBAnRqIQNBACEFDAELIAAgCUECayAHbEECdGoiASAHQQJ0IgNqIgQgA2oiAiADaiIGIANqIQMgCyAHIAlsQQJ0aiEIQQAhBQNAIAUgB0YEQCAJQQFqIQkMAwUgCCADKgIAIAEqAgAgAioCAEMAAMBAlCAEKgIAIAYqAgCSQwAAgECUkpKSQwAAgDuUOAIAIANBBGohAyAGQQRqIQYgAkEEaiECIARBBGohBCABQQRqIQEgCEEEaiEIIAVBAWohBQwBCwALAAsLA0AgBSAHRwRAIAMgBioCACIQIAEqAgAgAioCAEMAAMBAlCAQIAQqAgCSQwAAgECUkpKSQwAAgDuUOAIAIAZBBGohBiACQQRqIQIgBEEEaiEEIAFBBGohASADQQRqIQMgBUEBaiEFDAELCyAAIApBA2sgB2xBAnRqIgEgB0ECdCIAaiIEIABqIQIgCyAKQQFrIAdsQQJ0aiEGQQAhBQNAIAUgB0YNASAGIAIqAgAiECABKgIAIBBDAADAQJQgECAEKgIAkkMAAIBAlJKSkkMAAIA7lDgCACACQQRqIQIgBEEEaiEEIAFBBGohASAGQQRqIQYgBUEBaiEFDAALAAsFIAIgBioCACADKgIAIhAgASoCAEMAAMBAlCAQIAQqAgCSQwAAgECUkpKSQwAAgDuUOAIAIAZBBGohBiAEQQRqIQQgAUEEaiEBIANBBGohAyACQQRqIQIgBUEBaiEFDAELCwwCC0GAsgRBmSoQMEHMFBAwQYAdEDBBqQEQM0HxIBAwQe4jEDAQNBAAAAtBgLIEQeIIEDBBzBQQMEGAHRAwQagBEDNB8SAQMEHuIxAwEDQQAAALDAMLQRAQBiANQYb4ABCWARDlAkH42QFBDxAFAAtBEBAGIA1Bq/0AEJYBEOUCQfjZAUEPEAUACyABKAIYIQsgACgCICEAIAIoAhghCCACKAIIIQoCQCACKAIEIgdBBEsEQCAKQQRLBEAgB0EEayEJIAdBA2shDCAHQQJrIQYgB0EBayEOIAAhAQNAAkAgAyAKRgRAQQAhBSALIQIgB0EBdCIEIAAiBmoiASEDIAEgBGoiBCEIDAELQQIhBSABIAggAyAHbGoiAi0AACIEQQdsIAItAAJqIAItAAEgBGpBAnRqOwEAIAEgAi0AAyACLQAAIgQgAi0AAUEGbGpqIAItAAIgBGpBAnRqOwECIAFBBGohBANAIAUgBkYEQCAEIAIgCWotAAAgAiAOaiIBLQAAIgUgAiAGaiIPLQAAQQZsamogBSACIAxqIgItAABqQQJ0ajsBACAEIAItAAAgAS0AACIBQQdsaiAPLQAAIAFqQQJ0ajsBAiADQQFqIQMgBEEEaiEBDAMFIAQgAiAFaiIBLQAAQQZsIAFBAmstAABqIAIgBUEBaiIFai0AACABQQFrLQAAakECdGogAS0AAmo7AQAgBEECaiEEDAELAAsACwsDQCAFIAdHBEAgAiAILwEAIAYvAQAiCUEHbCADLwEAIAlqQQJ0amqyQwAAgDuUOAIAIAhBAmohCCADQQJqIQMgBkECaiEGIAJBBGohAiAFQQFqIQUMAQsLIAsgB0ECdGohAiAEIAdBAXRqIQZBACEFIAAhAwNAIAUgB0YEQAJAIApBAmshDEECIQkDQAJAIAkgDEYEQCAAIApBBGsgB2xBAXRqIgEgB0EBdCIDaiIEIANqIgIgA2ohBiALIAcgDGxBAnRqIQNBACEFDAELIAAgCUECayAHbEEBdGoiASAHQQF0IgNqIgQgA2oiAiADaiIGIANqIQMgCyAHIAlsQQJ0aiEIQQAhBQNAIAUgB0YEQCAJQQFqIQkMAwUgCCADLwEAIAEvAQAgAi8BAEEGbGogBi8BACAELwEAakECdGpqskMAAIA7lDgCACADQQJqIQMgBkECaiEGIAJBAmohAiAEQQJqIQQgAUECaiEBIAhBBGohCCAFQQFqIQUMAQsACwALCwNAIAUgB0cEQCADIAEvAQAgAi8BAEEGbGogBi8BACIIIAQvAQBqQQJ0aiAIarJDAACAO5Q4AgAgBkECaiEGIAJBAmohAiAEQQJqIQQgAUECaiEBIANBBGohAyAFQQFqIQUMAQsLIAAgCkEDayAHbEEBdGoiASAHQQF0IgBqIgQgAGohAiALIApBAWsgB2xBAnRqIQZBACEFA0AgBSAHRg0BIAYgAS8BACACLwEAIgBBBmxqIAAgBC8BAGpBAnRqIABqskMAAIA7lDgCACACQQJqIQIgBEECaiEEIAFBAmohASAGQQRqIQYgBUEBaiEFDAALAAsFIAIgBi8BACADLwEAIgggAS8BAEEGbGogBC8BACAIakECdGpqskMAAIA7lDgCACAGQQJqIQYgBEECaiEEIAFBAmohASADQQJqIQMgAkEEaiECIAVBAWohBQwBCwsMAgtBgLIEQZkqEDBBzBQQMEGAHRAwQTgQM0HxIBAwQe4jEDAQNBAAAAtBgLIEQeIIEDBBzBQQMEGAHRAwQTcQM0HxIBAwQe4jEDAQNBAAAAsLIA1BEGokAA8LQYCyBEGp8AAQMEHMFBAwQYAdEDBB5QIQM0HxIBAwQdH0ABAwEDQQAAALTQEBfyAAKAIEIQEDQCABIAAoAghHBEAgACgCEBogACAAKAIIQQhrNgIIDAELCyAAKAIABEAgACgCEBogACgCACEBIAAQuQYaIAEQMQsLUAEBfyAAEOwCIAAQMiAAKAIAIAAoAgQgAUEEaiICEJQCIAAgAhBJIABBBGogAUEIahBJIAAQMiABEDwQSSABIAEoAgQ2AgAgACAAED0QqQMLLgEBfyAAKAIEIAEoAggQsQEiAgRAIAIgACABEIUEQQBOBEAgAg8LIAIQQwtBAAsNACAAQf////8DEL8CC1ABAX8gABDyAiAAEDIgACgCACAAKAIEIAFBBGoiAhCUAiAAIAIQSSAAQQRqIAFBCGoQSSAAEDIgARA8EEkgASABKAIENgIAIAAgABBGELgCCzQAIAAoAgAaIAAoAgAgABC6AUEDdGoaIAAoAgAgABA9QQN0ahogACgCACAAELoBQQN0ahoLPgECfyMAQRBrIgMkACADIABBARC6BiECIAAQMiACKAIEIAEQtwIgAiACKAIEQQhqNgIEIAIQciADQRBqJAALCgAgACgCBBCLBAshAQF9AkAgAEMAAAAAXQ0AIAEgACICXUUNACABIQILIAILpAEBAn8gACgCBCAAEDIoAgBHBEAjAEEQayIDJAAgAyAAQQEQvwYhAiAAEDIgAigCBCABEL4GIAIgAigCBEEkajYCBCACEHIgA0EQaiQADwsjAEEgayIDJAAgABAyIgIgA0EIaiAAIAAQgAFBAWoQvQYgABCAASACEJAEIgIoAgggARC+BiACIAIoAghBJGo2AgggACACEI4EIAIQjQQgA0EgaiQAC7EJBAd8AX4BfwF9IAAgAkEBIAR0siIClAJ8AkACQAJAIARBAWu3Ige9IgxCIIinIgRB/////wdxIgAgDKciDXIEfCAHRAAAAAAAAABAoCANRSAAQYCAwP8HR3IgAEGAgMD/B01xRQ0EGgJAIA0NACAHRAAAAAAAAAAAIAxCAFkbIABBgIDA/wdGDQUaIABBgIDA/wNGBEBEAAAAAAAAAEAgDEIAWQ0GGkQAAAAAAADgPwwGC0QAAAAAAAAQQCAEQYCAgIAERg0FGiAEQYCAgP8DRw0ARM07f2aeoPY/DAULIABBgYCAjwRPDQNBsNkCKwMARAAAAAAAAPA/QaDZAisDACIIoSIJRAAAAAAAAPA/IAhEAAAAAAAA8D+goyIKoiIGvUKAgICAcIO/IgUgBSAFoiILRAAAAAAAAAhAoCAKIAkgBSAFoKEgBUQAAAAAAADwP0QAAAAAAAAAQCAIoaGioaIiCCAGIAWgoiAGIAaiIgUgBaIgBSAFIAUgBSAFRO9ORUoofso/okRl28mTSobNP6CiRAFBHalgdNE/oKJETSaPUVVV1T+gokT/q2/btm3bP6CiRAMzMzMzM+M/oKKgIgmgvUKAgICAcIO/IgWiIgogCCAFoiAGIAkgBUQAAAAAAAAIwKAgC6GhoqAiBqC9QoCAgIBwg78iBUT1AVsU4C8+vqIgBiAFIAqhoUT9AzrcCcfuP6KgoCIGQcDZAisDACIIIAYgBUQAAADgCcfuP6IiBqCgRAAAAAAAAPA/oL1CgICAgHCDvyIFRAAAAAAAAPA/oSAIoSAGoaEhBiAHIAxCgICAgHCDvyIIoSAFoiAGIAeioCIHIAUgCKIiBaAiBr0iDKchBAJAIAxCIIinIgBBgIDAhAROBEAgAEGAgMCEBGsgBHINAyAHRP6CK2VHFZc8oCAGIAWhZEUNAQwDCyAAQYD4//8HcUGAmMOEBEkNACAAQYDovPsDaiAEcg0DIAcgBiAFoWVFDQAMAwtBACEEAnwgAEH/////B3EiDUGBgID/A08EfkEAQYCAwAAgDUEUdkH+B2t2IABqIgBB//8/cUGAgMAAckGTCCAAQRR2Qf8PcSINa3YiBGsgBCAMQgBTGyEEIAcgBUGAgEAgDUH/B2t1IABxrUIghr+hIgWgvQUgDAtCgICAgHCDvyIGRAAAAABDLuY/oiIIIAcgBiAFoaFE7zn6/kIu5j+iIAZEOWyoDGFcIL6ioCIGoCIFIAUgBSAFIAWiIgcgByAHIAcgB0TQpL5yaTdmPqJE8WvSxUG9u76gokQs3iWvalYRP6CiRJO9vhZswWa/oKJEPlVVVVVVxT+goqEiB6IgB0QAAAAAAAAAwKCjIAUgBiAFIAihoSIFoiAFoKGhRAAAAAAAAPA/oCIFvSIMQiCIpyAEQRR0aiIAQf//P0wEQCAFIAQQ6AEMAQsgDEL/////D4MgAK1CIIaEvwtEAAAAAAAA8D+iBUQAAAAAAADwPwsMAwtEAAAAAAAA8H8MAgtEAAAAAAAAAAAMAQtEAAAAAAAA8H9EAAAAAAAAAAAgBEEAShsLRAAAAAAAAOC/oLYiDpI4AgAgASADIAKUIA6SOAIACzQAIAAoAgAaIAAoAgAgABDIAUECdGoaIAAoAgAgABBGQQJ0ahogACgCACAAEMgBQQJ0ahoLCwAgBCACNgIAQQMLCAAgACgCAEULDwAgACAAKAIAQQFqNgIACzkBAn8jAEEQayIDJAAgA0EIaiIEIAEQTiACIAQQyQIiARCZATYCACAAIAEQmAEgBBBFIANBEGokAAs3AQJ/IwBBEGsiAiQAIAJBCGoiAyAAEE4gAxCRAUHguANB+rgDIAEQ5QEgAxBFIAJBEGokACABCzkBAn8jAEEQayIDJAAgA0EIaiIEIAEQTiACIAQQywIiARCZAToAACAAIAEQmAEgBBBFIANBEGokAAtCAQR/QRghAgJAA0AgAC0AACIDIAEtAAAiBEYEQCABQQFqIQEgAEEBaiEAIAJBAWsiAg0BDAILCyADIARrIQULIAULDwAgACgCSBogACABNgJIC6kBAQJ/AkAgACgCTCIBQQBOBEAgAUUNAUGcmgQoAgAgAUH/////e3FHDQELIAAoAgQiASAAKAIIRwRAIAAgAUEBajYCBCABLQAADwsgABCQAw8LIAAgACgCTCIBQf////8DIAEbNgJMIABBzABqIQECfyAAKAIEIgIgACgCCEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAEJADCyEAIAEoAgAaIAFBADYCACAAC3wBA39BfyEDAkAgAEF/Rg0AIAEoAkxBAE4hBAJAAkAgASgCBCICRQRAIAEQkQMaIAEoAgQiAkUNAQsgAiABKAIsQQhrSw0BCyAERQ0BQX8PCyABIAJBAWsiAjYCBCACIAA6AAAgASABKAIAQW9xNgIAIABB/wFxIQMLIAMLBwAgAEELSQsdACAAIAEgAiADIAQgBSAGIAcgACgCACgCDBENAAsMACAAIAFBBGoQtwQLVQAgACABNgIEIABBADoAACABIAEoAgBBDGsoAgBqENADBEAgASABKAIAQQxrKAIAaigCSARAIAEgASgCAEEMaygCAGooAkgQgwMLIABBAToAAAsgAAsDAAELDQAgAEEEahDNAhogAAtyAQF/IwBBEGsiASQAIAAgACgCAEEMaygCAGooAhgEQCABQQhqIAAQgAMaAkAgAS0ACEUNACAAIAAoAgBBDGsoAgBqKAIYEM8CQX9HDQAgACAAKAIAQQxrKAIAakEBEMUCCyABQQhqEM4CCyABQRBqJAALDQAgAEEIahDNAhogAAsEAEF/C1oCAX8BfgJAAn9BACAARQ0AGiAArSABrX4iA6ciAiAAIAFyQYCABEkNABpBfyACIANCIIinGwsiAhA3IgBFDQAgAEEEay0AAEEDcUUNACAAQQAgAhA5GgsgAAsWACAARQRAQQAPC0GImQQgADYCAEF/C+UCAQZ/IwBBEGsiByQAIANBnKMEIAMbIgUoAgAhAwJAAkACQCABRQRAIAMNAQwDC0F+IQQgAkUNAiAAIAdBDGogABshBgJAIAMEQCACIQAMAQsgAS0AACIAQRh0QRh1IgNBAE4EQCAGIAA2AgAgA0EARyEEDAQLIAEsAAAhAEHkmgQoAgAoAgBFBEAgBiAAQf+/A3E2AgBBASEEDAQLIABB/wFxQcIBayIAQTJLDQEgAEECdEGQkANqKAIAIQMgAkEBayIARQ0CIAFBAWohAQsgAS0AACIIQQN2IglBEGsgA0EadSAJanJBB0sNAANAIABBAWshACAIQYABayADQQZ0ciIDQQBOBEAgBUEANgIAIAYgAzYCACACIABrIQQMBAsgAEUNAiABQQFqIgEtAAAiCEHAAXFBgAFGDQALCyAFQQA2AgBBiJkEQRk2AgBBfyEEDAELIAUgAzYCAAsgB0EQaiQAIAQL/QEBAn8CQAJAAkACQCABIAAiA3NBA3ENACACQQBHIQQCQCABQQNxRSACRXINAANAIAMgAS0AACIEOgAAIARFDQUgA0EBaiEDIAJBAWsiAkEARyEEIAFBAWoiAUEDcUUNASACDQALCyAERQ0CIAEtAABFDQMgAkEESQ0AA0AgASgCACIEQX9zIARBgYKECGtxQYCBgoR4cQ0CIAMgBDYCACADQQRqIQMgAUEEaiEBIAJBBGsiAkEDSw0ACwsgAkUNAQsDQCADIAEtAAAiBDoAACAERQ0CIANBAWohAyABQQFqIQEgAkEBayICDQALC0EAIQILIANBACACEDkaIAALSAECfwJ/IAFBH00EQCAAKAIAIQIgAEEEagwBCyABQSBrIQEgAAsoAgAhAyAAIAIgAXQ2AgAgACADIAF0IAJBICABa3ZyNgIEC7ICAQV/IwBB8AFrIgckACAHIAMoAgAiCDYC6AEgAygCBCEDIAcgADYCACAHIAM2AuwBQQEhCQJAAkACQCAIQQFHIANyRQRAIAAhAwwBC0EAIAFrIQsgACEIA0AgCCAGIARBAnRqIgooAgBrIgMgACACEQMAQQBMBEAgCCEDDAILAkAgBSAEQQJIckUEQCAKQQhrKAIAIQUgCCALaiIKIAMgAhEDAEEATg0BIAogBWsgAyACEQMAQQBODQELIAcgCUECdGogAzYCACAHQegBaiIFIAUQkQUiBRCMAyAJQQFqIQkgBCAFaiEEQQAhBSADIQggBygC6AFBAUcNASAHKALsAQ0BDAMLCyAIIQMMAQsgBQ0BCyABIAcgCRCQBSADIAEgAiAEIAYQ2wMLIAdB8AFqJAALSAECfwJ/IAFBH00EQCAAKAIEIQIgAAwBCyABQSBrIQEgAEEEagsoAgAhAyAAIAIgAXY2AgQgACACQSAgAWt0IAMgAXZyNgIAC+QBAQl/IAAgAEE9ENkDIgFGBEBBAA8LAkAgACABIABrIgVqLQAADQBBnJkEKAIAIgNFDQAgAygCACICRQ0AA0ACQAJ/IAAhAUEAIQZBACAFIgdFDQAaAkAgAS0AACIERQ0AA0ACQCACLQAAIghFDQAgB0EBayIHRSAEIAhHcg0AIAJBAWohAiABLQABIQQgAUEBaiEBIAQNAQwCCwsgBCEGCyAGQf8BcSACLQAAawtFBEAgAygCACAFaiIBLQAAQT1GDQELIAMoAgQhAiADQQRqIQMgAg0BDAILCyABQQFqIQkLIAkLKwEBfgJAIAGsIQMgACgCTEEASARAIAAgAyACEI8DDAELIAAgAyACEI8DCwuDAQEBfwJAIAJBAUcNACAAKAIIIgNFDQAgASADIAAoAgRrrH0hAQsCQCAAKAIUIAAoAhxHBEAgAEEAQQAgACgCJBEEABogACgCFEUNAQsgAEEANgIcIABCADcDECAAIAEgAiAAKAIoERMAQgBTDQAgAEIANwIEIAAgACgCAEFvcTYCAAsLQQECfyMAQRBrIgEkAEF/IQICQCAAEJEDDQAgACABQQ9qQQEgACgCIBEEAEEBRw0AIAEtAA8hAgsgAUEQaiQAIAILfAECfyAAIAAoAkgiAUEBayABcjYCSCAAKAIUIAAoAhxHBEAgAEEAQQAgACgCJBEEABoLIABBADYCHCAAQgA3AxAgACgCACIBQQRxBEAgACABQSByNgIAQX8PCyAAIAAoAiwgACgCMGoiAjYCCCAAIAI2AgQgAUEbdEEfdQvTAQEBfwJAIARBAEwNACAEQQFrIQYgACABQQJ0aiEBIAIgA0ECdGohAyAEQQNxIgAEQEEAIQIDQCADKAIAIAEoAgAgBRA+GiAEQQFrIQQgA0EEaiEDIAFBBGohASACQQFqIgIgAEcNAAsLIAZBA0kNAANAIAMoAgAgASgCACAFED4aIAMoAgQgASgCBCAFED4aIAMoAgggASgCCCAFED4aIAMoAgwgASgCDCAFED4aIANBEGohAyABQRBqIQEgBEEFayEAIARBBGshBCAAQX5JDQALCwsSACAAIAFqQQFrIgAgACABb2sL9QYBDH8jAEGgCmsiByQAIAJBBE8EQCAAKAIAIgUgAjYCGCAFQTQ2AhQgACAAKAIAKAIAEQEACyAAQbQBQcQBIAEbaiACQQJ0aigCACIIRQRAIAAoAgAiBSACNgIYIAVBNDYCFCAAIAAoAgAoAgARAQALIAMoAgAiCUUEQCADIABBAUGQCyAAKAIEKAIAEQQAIgk2AgALIAkgCDYCjAFBACEFQQEhAgNAIAUgAiAIai0AACIEaiIDQYECTgRAIAAoAgAiBkEJNgIUIAAgBigCABEBAAsgBARAIAdBkAhqIAVqIAIgBBA5GiADIQULIAJBAWoiAkERRw0AC0EAIQMgB0GQCGogBWpBADoAACAHLQCQCCIGBEAgBkEYdEEYdSEEQQAhAgNAIAZBGHRBGHUgBEYEQANAIAcgA0ECdGogAjYCACACQQFqIQIgBCADQQFqIgMgB0GQCGpqLAAAIgZGDQALC0EBIAR0IAJMBEAgACgCACIKQQk2AhQgACAKKAIAEQEACyAEQQFqIQQgAkEBdCECIAZB/wFxDQALC0EAIQNBASECA0AgCSACQQJ0aiACIAhqIgQtAAAEfyAJIAJBAnRqIAMgByADQQJ0aigCAGs2AkggAyAELQAAaiIDQQJ0IAdqQQRrKAIABUF/CzYCACACQQFqIgJBEUcNAAsgCUH//z82AkRBACEKIAlBkAFqQQBBgAgQORpBASEGA0AgBiAIaiIMLQAABEBBASELQQFBCCAGayINdCEEA0AgCCAKaiEOIAcgCkECdGooAgAgDXQhAiAEIQMDQCAJIAJBAnRqIAY2ApABIAIgCWpBkAlqIA4tABE6AAAgAkEBaiECIANBAUohDyADQQFrIQMgDw0ACyAKQQFqIQogCyAMLQAASSECIAtBAWohCyACDQALCyAGQQFqIgZBCUcNAAsCQCABRSAFQQBMcg0AQQAhAiAFQQFHBEAgBUF+cSEBQQAhAwNAIAIgCGotABFBEE8EQCAAKAIAIgRBCTYCFCAAIAQoAgARAQALIAggAkEBcmotABFBEE8EQCAAKAIAIgRBCTYCFCAAIAQoAgARAQALIAJBAmohAiADQQJqIgMgAUcNAAsLIAVBAXFFDQAgAiAIai0AEUEQSQ0AIAAoAgAiAUEJNgIUIAAgASgCABEBAAsgB0GgCmokAAsKAEGp9gEQlgIACxYAIAEgAikCADcCACABIAIpAgg3AggLFAEBf0EEEFsiASAAKAIANgIAIAELBABBBAtLAQF/IwBBEGsiAyQAIAMgAjYCDEGosgIgAUGw8wNB4LICQeQAIANBDGoQlwNBsPMDQbCyAkHlACADQQxqEJcDECwgA0EQaiQAIAALCgAgAEEYahDRAQsgACAAKgIAIAEqAgSUIAEqAgAgACoCBJSTi0MAAAA/lAuyAQEBfSAAIAEqAgCMOAIAIAEqAgQhAyAAQYCAgPx7NgIIIAAgA4w4AgQgAEEMahDlBSAAIAIqAgAgASoCAJQ4AhggACACKgIAIAEqAgSUOAIcIAAgAioCADgCICAAQSRqEOUFIAAgASoCAIw4AjAgASoCBCEDIABBgICA/Hs2AjggACADjDgCNCAAIAIqAgQgASoCAJQ4AjwgACACKgIEIAEqAgSUOAJAIAAgAioCBDgCRAsiACAAIAEgAhCnAUMAAAAAXiADIAQgBRCnAUMAAAAAXnNFCwwAIAAgASAAIAFdGwtTAQJ/IwBBIGsiAiQAAkAgABC6ASABSQRAIAAQtQIgAUkNASAAEDIhAyAAIAJBCGogASAAED0gAxC2AiIAEOgCIAAQ5wILIAJBIGokAA8LELACAAsPACAAIAAoAgRBAWo2AgQLCQAgACABEP4FC6IBAQJ/IAAoAgQgABAyKAIARwRAIwBBEGsiAyQAIAMgAEEBELoCIQIgABAyIAIoAgQgARDsASACIAIoAgRBBGo2AgQgAhByIANBEGokAA8LIwBBIGsiAyQAIAAQMiICIANBCGogACAAEEZBAWoQpAMgABBGIAIQvAIiAigCCCABEOwBIAIgAigCCEEEajYCCCAAIAIQ6wIgAhC7AiADQSBqJAALCQAgACABOgBkC1oBAn8jAEEQayICJAAgAiABNgIMIAEgABDqAiIDTQRAIAAQyAEiACADQQF2SQRAIAIgAEEBdDYCCCACQQhqIAJBDGoQbygCACEDCyACQRBqJAAgAw8LELACAAsgAQF/QX8hAiAARSABQQRLcgR/QX8FIAAgATYCGEEACwsMACAAIAEgACABSBsLmAEBBH8jAEEQayIDJAACQCABEK0BRQRAIAAgASgCCDYCCCAAIAEpAgA3AgAMAQsgASgCACEEAkACQAJAIAEoAgQiAhD9AgRAIAAiASACEJwBDAELIAJBb0sNASAAIAIQmgJBAWoiBRBbIgEQlQEgACAFELUBIAAgAhCPAQsgASAEIAJBAWoQzQEMAQsQtAEACwsgA0EQaiQACxAAIAAoAgAgASgCAGtBA3ULLAAgACgCABogACgCACAAELoBQQN0ahogACgCACAAELoBQQN0ahogACgCABoLBwAgABBSGgsrACAAKAIAGiAAKAIAIAAQswFBDGxqGiAAKAIAGiAAKAIAIAAQbEEMbGoaCysBAX8gACABKAIANgIAIAEoAgAhAyAAIAE2AgggACADIAJBAnRqNgIEIAALKwAgACgCABogACgCACAAEMgBQQJ0ahogACgCABogACgCACAAEEZBAnRqGgtTAQN/IwBBEGsiAyQAIAMgACABELoCIgIoAgQhASACKAIIIQQDQCABIARGBEAgAhByIANBEGokAAUgABAyGiABEMQGIAIgAUEEaiIBNgIEDAELCwsLACAAIAFBCBDyAQudAQIEfwN9A0AgBEEDRwRAIAAgBEEFdGoiBisDELYhByAGKwMItiEIIAYrAwC2IQlBACEDA0AgA0EERwRAIANBAnQiBSACIARBBHRqaiAHIAEgBWoiBSoCIJQgCSAFKgIAlCAFKgIQIAiUkpI4AgAgA0EBaiEDDAELCyACIARBBHRqIgMgAyoCDCAGKwMYtpI4AgwgBEEBaiEEDAELCwsoACAAIAEQSSAAQQRqIAFBBGoQSSAAEDIgARAyEEkgABAyGiABEDIaC4IBAAJAIAJDAAAAAGAEQCAAKAIUsiACXkUNASAAKgIYIAIQ1QZBASABdLKUDwtBgLIEQZe6ARAwQaC0ARAwQYAdEDBB6AEQM0HxIBAwQbm6ARAwEDQQAAALQYCyBEH5tQEQMEGgtAEQMEGAHRAwQekBEDNB8SAQMEGuuwEQMBA0EAAAC55qAw1/BH0JfCMAQeABayIMJAAgDEKAgICAgIDgrcAANwPYASAMQoCAgICAgOCtwAA3A8gBIAxCgICAgICAwKzAADcDuAEgDEKAgICAgIDArMAANwPQASAMQoCAgICAgOCtwAA3A8ABIAxCgICAgICA4K3AADcDsAEgDEKAgICAgIDArMAANwOoASAMQoCAgICAgMCswAA3A6ABA0AgDUEERwRAIA1BBHQiDiAMQeAAamoiESAJIA5qIg4rAwA5AwAgESAOKwMIOQMIIA1BAWohDQwBCwsgDEGgAWohFSAMQeAAaiEWIAxBEGohEkEAIQ1BCEEIELEBIRNBCEEBELEBIQ9BCEEBELEBIRAgDygCACEXIBMoAgAhGANAIA1BBEcEQCAYIA1BB3RqIgkgFSANQQR0IhRqIg4rAwA5AwAgDisDCCEdIAlCADcDKCAJQgA3AyAgCUIANwMYIAlCgICAgICAgPg/NwMQIAkgHTkDCCAJIBQgFmoiESsDACAOKwMAmqI5AzAgESsDACEdIA4rAwghHiAJQgA3A1AgCUIANwNIIAlBQGtCADcDACAJIB0gHpqiOQM4IAkgDisDADkDWCAOKwMIIR0gCUKAgICAgICA+D83A2ggCSAdOQNgIAkgESsDCCAOKwMAmqI5A3AgCSARKwMIIA4rAwiaojkDeCAUIBdqIgkgESsDADkDACAJIBErAwg5AwggDUEBaiENDAELCyATEOQCGiAQIBMgDxCFBBogECgCACEOQQAhCQNAIAlBAkcEQCASIAlBGGwiEWoiDSAOIBFqIhErAwA5AwAgDSARKwMIOQMIIA0gESsDEDkDECAJQQFqIQkMAQsLIBIgDisDMDkDMCAOKwM4IR0gEkFAa0KAgICAgICA+D83AwAgEiAdOQM4IBMQQyAPEEMgEBBDAn8gDCsDcCIdIAwrA4ABIh6hIh8gH6IgDCsDeCIfIAwrA4gBIiChIiEgIaKgIiGZRAAAAAAAAOBBYwRAICGqDAELQYCAgIB4CyEJAn8CfyAMKwOQASIhIAwrA2AiIqEiJCAkoiAMKwOYASIkIAwrA2giJaEiIyAjoqAiI5lEAAAAAAAA4EFjBEAgI6oMAQtBgICAgHgLIg4gCSAJIA5IG7cgCqIgCqIiI5lEAAAAAAAA4EFjBEAgI6oMAQtBgICAgHgLIRECfyAiIB2hIh0gHaIgJSAfoSIdIB2ioCIdmUQAAAAAAADgQWMEQCAdqgwBC0GAgICAeAshCQJ/An8gHiAhoSIdIB2iICAgJKEiHSAdoqAiHZlEAAAAAAAA4EFjBEAgHaoMAQtBgICAgHgLIg4gCSAJIA5IG7cgCqIgCqIiHZlEAAAAAAAA4EFjBEAgHaoMAQtBgICAgHgLIQ4CQCAARQRAIAIhCQNAIAMgCSINSgRAIA1BAXQhCSANIA1sIA5IDQELCyACIQ4DQCAOIgkgA04NAiAJQQF0IQ4gCSAJbCARSA0ACwwBCyACIQkDQCAOIAkgCSINbEECdEoEQCANQQF0IQkgAyANSg0BCwsgAiEOA0AgDiIJIAlsQQJ0IBFODQEgCUEBdCEOIAMgCUoNAAsLIApEAAAAAAAAJECiIR1EAAAAAAAA8D8gCqFEAAAAAAAA4D+iRAAAAAAAACRAoiEKIAkgAyADIAlKGyIJIAJtIREgDSADIAMgDUobIgMgAm0hEiACIAJsIRMCQAJAAkACQCABRQRAIBNBA2wiE0EEEIYDIg5FDQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAHDg8AAQIDBAUGBwgJCgsFBQUOCyAJQQAgCUEAShshDyADQQAgA0EAShshECAKRAAAAAAAAFlAoCEeIAO3ISEgCbchIkEAIQEDQCABIA9GDQwgHiAdIAG3RAAAAAAAAOA/oKIgIqOgIQpBACENA0AgDSAQRwRAIAwrA1AgDCsDQCAeIB0gDbdEAAAAAAAA4D+goiAho6AiH6IgCiAMKwNIoqCgIiBEAAAAAAAAAABhDREgDCAMKwMgIAwrAxAgH6IgCiAMKwMYoqCgICCjtiIZOAIMIAwgDCsDOCAMKwMoIB+iIAogDCsDMKKgoCAgo7YiGjgCCCAIIBkgGiAMQQxqIAxBCGoQcRogDCoCDCEZAn8gAEEBRgRAAn8gDCoCCEMAAIA/kiIai0MAAABPXQRAIBqoDAELQYCAgIB4C0ECbUEBdCEDAn8gGUMAAIA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4C0ECbUEBdAwBCwJ/IAwqAghDAAAAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAshAyAZQwAAAD+SIhmLQwAAAE9dBEAgGagMAQtBgICAgHgLIglBAEggBSAJTHIgA0EASCADIAZOcnJFBEAgDiABIBFtIAJsIA0gEm1qQQxsaiIHIAcoAgAgBCADIAVsIAlqQQNsaiIDLQACajYCACAHIAcoAgQgAy0AAWo2AgQgByAHKAIIIAMtAABqNgIICyANQQFqIQ0MAQsLIAFBAWohAQwACwALIAlBACAJQQBKGyEPIANBACADQQBKGyEQIApEAAAAAAAAWUCgIR4gA7chISAJtyEiQQAhAQNAIAEgD0YNCyAeIB0gAbdEAAAAAAAA4D+goiAio6AhCkEAIQ0DQCANIBBHBEAgDCsDUCAMKwNAIB4gHSANt0QAAAAAAADgP6CiICGjoCIfoiAKIAwrA0iioKAiIEQAAAAAAAAAAGENECAMIAwrAyAgDCsDECAfoiAKIAwrAxiioKAgIKO2Ihk4AgwgDCAMKwM4IAwrAyggH6IgCiAMKwMwoqCgICCjtiIaOAIIIAggGSAaIAxBDGogDEEIahBxGiAMKgIMIRkCfyAAQQFGBEACfyAMKgIIQwAAgD+SIhqLQwAAAE9dBEAgGqgMAQtBgICAgHgLQQJtQQF0IQMCfyAZQwAAgD+SIhmLQwAAAE9dBEAgGagMAQtBgICAgHgLQQJtQQF0DAELAn8gDCoCCEMAAAA/kiIai0MAAABPXQRAIBqoDAELQYCAgIB4CyEDIBlDAAAAP5IiGYtDAAAAT10EQCAZqAwBC0GAgICAeAsiCUEASCAFIAlMciADQQBIIAMgBk5yckUEQCAOIAEgEW0gAmwgDSASbWpBDGxqIgcgBygCACAEIAMgBWwgCWpBA2xqIgMtAABqNgIAIAcgBygCBCADLQABajYCBCAHIAcoAgggAy0AAmo2AggLIA1BAWohDQwBCwsgAUEBaiEBDAALAAsgCUEAIAlBAEobIQ8gA0EAIANBAEobIRAgCkQAAAAAAABZQKAhHiADtyEhIAm3ISJBACEBA0AgASAPRg0KIB4gHSABt0QAAAAAAADgP6CiICKjoCEKQQAhDQNAIA0gEEcEQCAMKwNQIAwrA0AgHiAdIA23RAAAAAAAAOA/oKIgIaOgIh+iIAogDCsDSKKgoCIgRAAAAAAAAAAAYQ0PIAwgDCsDICAMKwMQIB+iIAogDCsDGKKgoCAgo7YiGTgCDCAMIAwrAzggDCsDKCAfoiAKIAwrAzCioKAgIKO2Iho4AgggCCAZIBogDEEMaiAMQQhqEHEaIAwqAgwhGQJ/IABBAUYEQAJ/IAwqAghDAACAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAtBAm1BAXQhAwJ/IBlDAACAP5IiGYtDAAAAT10EQCAZqAwBC0GAgICAeAtBAm1BAXQMAQsCfyAMKgIIQwAAAD+SIhqLQwAAAE9dBEAgGqgMAQtBgICAgHgLIQMgGUMAAAA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4CyIJQQBIIAUgCUxyIANBAEggAyAGTnJyRQRAIA4gASARbSACbCANIBJtakEMbGoiByAHKAIAIAQgAyAFbCAJakECdGoiAy0AAmo2AgAgByAHKAIEIAMtAAFqNgIEIAcgBygCCCADLQAAajYCCAsgDUEBaiENDAELCyABQQFqIQEMAAsACyAJQQAgCUEAShshDyADQQAgA0EAShshECAKRAAAAAAAAFlAoCEeIAO3ISEgCbchIkEAIQEDQCABIA9GDQkgHiAdIAG3RAAAAAAAAOA/oKIgIqOgIQpBACENA0AgDSAQRwRAIAwrA1AgDCsDQCAeIB0gDbdEAAAAAAAA4D+goiAho6AiH6IgCiAMKwNIoqCgIiBEAAAAAAAAAABhDQ4gDCAMKwMgIAwrAxAgH6IgCiAMKwMYoqCgICCjtiIZOAIMIAwgDCsDOCAMKwMoIB+iIAogDCsDMKKgoCAgo7YiGjgCCCAIIBkgGiAMQQxqIAxBCGoQcRogDCoCDCEZAn8gAEEBRgRAAn8gDCoCCEMAAIA/kiIai0MAAABPXQRAIBqoDAELQYCAgIB4C0ECbUEBdCEDAn8gGUMAAIA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4C0ECbUEBdAwBCwJ/IAwqAghDAAAAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAshAyAZQwAAAD+SIhmLQwAAAE9dBEAgGagMAQtBgICAgHgLIglBAEggBSAJTHIgA0EASCADIAZOcnJFBEAgDiABIBFtIAJsIA0gEm1qQQxsaiIHIAcoAgAgBCADIAVsIAlqQQJ0aiIDLQAAajYCACAHIAcoAgQgAy0AAWo2AgQgByAHKAIIIAMtAAJqNgIICyANQQFqIQ0MAQsLIAFBAWohAQwACwALIAlBACAJQQBKGyEPIANBACADQQBKGyEQIApEAAAAAAAAWUCgIR4gA7chISAJtyEiQQAhAQNAIAEgD0YNCCAeIB0gAbdEAAAAAAAA4D+goiAio6AhCkEAIQ0DQCANIBBHBEAgDCsDUCAMKwNAIB4gHSANt0QAAAAAAADgP6CiICGjoCIfoiAKIAwrA0iioKAiIEQAAAAAAAAAAGENDSAMIAwrAyAgDCsDECAfoiAKIAwrAxiioKAgIKO2Ihk4AgwgDCAMKwM4IAwrAyggH6IgCiAMKwMwoqCgICCjtiIaOAIIIAggGSAaIAxBDGogDEEIahBxGiAMKgIMIRkCfyAAQQFGBEACfyAMKgIIQwAAgD+SIhqLQwAAAE9dBEAgGqgMAQtBgICAgHgLQQJtQQF0IQMCfyAZQwAAgD+SIhmLQwAAAE9dBEAgGagMAQtBgICAgHgLQQJtQQF0DAELAn8gDCoCCEMAAAA/kiIai0MAAABPXQRAIBqoDAELQYCAgIB4CyEDIBlDAAAAP5IiGYtDAAAAT10EQCAZqAwBC0GAgICAeAsiCUEASCAFIAlMciADQQBIIAMgBk5yckUEQCAOIAEgEW0gAmwgDSASbWpBDGxqIgcgBygCACAEIAMgBWwgCWpBAnRqIgMtAAFqNgIAIAcgBygCBCADLQACajYCBCAHIAcoAgggAy0AA2o2AggLIA1BAWohDQwBCwsgAUEBaiEBDAALAAsgCUEAIAlBAEobIQ8gA0EAIANBAEobIRAgCkQAAAAAAABZQKAhHiADtyEhIAm3ISJBACEBA0AgASAPRg0HIB4gHSABt0QAAAAAAADgP6CiICKjoCEKQQAhDQNAIA0gEEcEQCAMKwNQIAwrA0AgHiAdIA23RAAAAAAAAOA/oKIgIaOgIh+iIAogDCsDSKKgoCIgRAAAAAAAAAAAYQ0MIAwgDCsDICAMKwMQIB+iIAogDCsDGKKgoCAgo7YiGTgCDCAMIAwrAzggDCsDKCAfoiAKIAwrAzCioKAgIKO2Iho4AgggCCAZIBogDEEMaiAMQQhqEHEaIAwqAgwhGQJ/IABBAUYEQAJ/IAwqAghDAACAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAtBAm1BAXQhAwJ/IBlDAACAP5IiGYtDAAAAT10EQCAZqAwBC0GAgICAeAtBAm1BAXQMAQsCfyAMKgIIQwAAAD+SIhqLQwAAAE9dBEAgGqgMAQtBgICAgHgLIQMgGUMAAAA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4CyIJQQBIIAUgCUxyIANBAEggAyAGTnJyRQRAIA4gASARbSACbCANIBJtakEMbGoiByAEIAMgBWwgCWpqLQAAIgMgBygCAGo2AgAgByADIAcoAgRqNgIEIAcgAyAHKAIIajYCCAsgDUEBaiENDAELCyABQQFqIQEMAAsACyAJQQAgCUEAShshDyADQQAgA0EAShshECAKRAAAAAAAAFlAoCEeIAO3ISEgCbchIkEAIQEDQCABIA9GDQYgHiAdIAG3RAAAAAAAAOA/oKIgIqOgIQpBACENA0AgDSAQRwRAIAwrA1AgDCsDQCAeIB0gDbdEAAAAAAAA4D+goiAho6AiH6IgCiAMKwNIoqCgIiBEAAAAAAAAAABhDQsgDCAMKwMgIAwrAxAgH6IgCiAMKwMYoqCgICCjtiIZOAIMIAwgDCsDOCAMKwMoIB+iIAogDCsDMKKgoCAgo7YiGjgCCCAIIBkgGiAMQQxqIAxBCGoQcRogDCoCDCEZAn8gAEEBRgRAAn8gDCoCCEMAAIA/kiIai0MAAABPXQRAIBqoDAELQYCAgIB4C0ECbUEBdCEDAn8gGUMAAIA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4C0ECbUEBdAwBCwJ/IAwqAghDAAAAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAshAyAZQwAAAD+SIhmLQwAAAE9dBEAgGagMAQtBgICAgHgLIglBAEggBSAJTHIgA0EASCADIAZOcnJFBEAgDiABIBFtIAJsIA0gEm1qQQxsaiIHIAcoAgAgBCADIAVsIAlqQQJ0aiIDLQADajYCACAHIAcoAgQgAy0AAmo2AgQgByAHKAIIIAMtAAFqNgIICyANQQFqIQ0MAQsLIAFBAWohAQwACwALIAlBACAJQQBKGyEPIANBACADQQBKGyEQIApEAAAAAAAAWUCgIR4gA7chISAJtyEiQQAhAQNAIAEgD0YNBSAeIB0gAbdEAAAAAAAA4D+goiAio6AhCkEAIQ0DQCANIBBHBEAgDCsDUCAMKwNAIB4gHSANt0QAAAAAAADgP6CiICGjoCIfoiAKIAwrA0iioKAiIEQAAAAAAAAAAGENCiAMIAwrAyAgDCsDECAfoiAKIAwrAxiioKAgIKO2Ihk4AgwgDCAMKwM4IAwrAyggH6IgCiAMKwMwoqCgICCjtiIaOAIIIAggGSAaIAxBDGogDEEIahBxGiAMKgIMIRkCfyAAQQFGBEACfyAMKgIIQwAAgD+SIhqLQwAAAE9dBEAgGqgMAQtBgICAgHgLQQJtQQF0IQMCfyAZQwAAgD+SIhmLQwAAAE9dBEAgGagMAQtBgICAgHgLQQJtQQF0DAELAn8gDCoCCEMAAAA/kiIai0MAAABPXQRAIBqoDAELQYCAgIB4CyEDIBlDAAAAP5IiGYtDAAAAT10EQCAZqAwBC0GAgICAeAsiB0EASCAFIAdMciADQQBIIAMgBk5yckUEQAJ/IAQgAyAFbCIDIAdqQQF0ai0AAUEQa7JDfwqVQ5QiGSAEIAdB/v8DcSADakEBdGoiAy0AAEGAAWuyIhpDThoBRJSSIhuLQwAAAE9dBEAgG6gMAQtBgICAgHgLIQcgAy0AAiEJIA4gASARbSACbCANIBJtakEMbGoiAyADKAIAIAdBCHUiB0EAIAdBAEobIgdB/wEgB0H/AUkbajYCACADIAMoAggCfyAZIAlBgAFrsiIbQ6BKzEOUkiIci0MAAABPXQRAIByoDAELQYCAgIB4C0EIdSIHQQAgB0EAShsiB0H/ASAHQf8BSRtqNgIIIAMgAygCBAJ/IBtDuB5Qw5QgGSAaQ/6UyMKUkpIiGYtDAAAAT10EQCAZqAwBC0GAgICAeAtBCHUiA0EAIANBAEobIgNB/wEgA0H/AUkbajYCBAsgDUEBaiENDAELCyABQQFqIQEMAAsACyAJQQAgCUEAShshDyADQQAgA0EAShshECAKRAAAAAAAAFlAoCEeIAO3ISEgCbchIkEAIQEDQCABIA9GDQQgHiAdIAG3RAAAAAAAAOA/oKIgIqOgIQpBACENA0AgDSAQRwRAIAwrA1AgDCsDQCAeIB0gDbdEAAAAAAAA4D+goiAho6AiH6IgCiAMKwNIoqCgIiBEAAAAAAAAAABhDQkgDCAMKwMgIAwrAxAgH6IgCiAMKwMYoqCgICCjtiIZOAIMIAwgDCsDOCAMKwMoIB+iIAogDCsDMKKgoCAgo7YiGjgCCCAIIBkgGiAMQQxqIAxBCGoQcRogDCoCDCEZAn8gAEEBRgRAAn8gDCoCCEMAAIA/kiIai0MAAABPXQRAIBqoDAELQYCAgIB4C0ECbUEBdCEDAn8gGUMAAIA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4C0ECbUEBdAwBCwJ/IAwqAghDAAAAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAshAyAZQwAAAD+SIhmLQwAAAE9dBEAgGagMAQtBgICAgHgLIgdBAEggBSAHTHIgA0EASCADIAZOcnJFBEACfyAEIAMgBWwiAyAHakEBdGotAABBEGuyQ38KlUOUIhkgB0H+/wNxIANqQQF0IARqIgMtAAFBgAFrsiIaQ04aAUSUkiIbi0MAAABPXQRAIBuoDAELQYCAgIB4CyEHIAMtAAMhCSAOIAEgEW0gAmwgDSASbWpBDGxqIgMgAygCACAHQQh1IgdBACAHQQBKGyIHQf8BIAdB/wFJG2o2AgAgAyADKAIIAn8gGSAJQYABa7IiG0OgSsxDlJIiHItDAAAAT10EQCAcqAwBC0GAgICAeAtBCHUiB0EAIAdBAEobIgdB/wEgB0H/AUkbajYCCCADIAMoAgQCfyAbQ7geUMOUIBkgGkP+lMjClJKSIhmLQwAAAE9dBEAgGagMAQtBgICAgHgLQQh1IgNBACADQQBKGyIDQf8BIANB/wFJG2o2AgQLIA1BAWohDQwBCwsgAUEBaiEBDAALAAsgCUEAIAlBAEobIQ8gA0EAIANBAEobIRAgCkQAAAAAAABZQKAhHiADtyEhIAm3ISJBACEBA0AgASAPRg0DIB4gHSABt0QAAAAAAADgP6CiICKjoCEKQQAhDQNAIA0gEEcEQCAMKwNQIAwrA0AgHiAdIA23RAAAAAAAAOA/oKIgIaOgIh+iIAogDCsDSKKgoCIgRAAAAAAAAAAAYQ0IIAwgDCsDICAMKwMQIB+iIAogDCsDGKKgoCAgo7YiGTgCDCAMIAwrAzggDCsDKCAfoiAKIAwrAzCioKAgIKO2Iho4AgggCCAZIBogDEEMaiAMQQhqEHEaIAwqAgwhGQJ/IABBAUYEQAJ/IAwqAghDAACAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAtBAm1BAXQhAwJ/IBlDAACAP5IiGYtDAAAAT10EQCAZqAwBC0GAgICAeAtBAm1BAXQMAQsCfyAMKgIIQwAAAD+SIhqLQwAAAE9dBEAgGqgMAQtBgICAgHgLIQMgGUMAAAA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4CyIJQQBIIAUgCUxyIANBAEggAyAGTnJyRQRAIA4gASARbSACbCANIBJtakEMbGoiByAHKAIAIAQgAyAFbCAJakEBdGoiAy0AASIJQQN0QQRyQfwBcWo2AgAgByAHKAIIIAMtAAAiA0EEckH8AXFqNgIIIAcgBygCBCADQQV0IAlBA3ZyQQJyQf4BcWo2AgQLIA1BAWohDQwBCwsgAUEBaiEBDAALAAsgCUEAIAlBAEobIQ8gA0EAIANBAEobIRAgCkQAAAAAAABZQKAhHiADtyEhIAm3ISJBACEBA0AgASAPRg0CIB4gHSABt0QAAAAAAADgP6CiICKjoCEKQQAhDQNAIA0gEEcEQCAMKwNQIAwrA0AgHiAdIA23RAAAAAAAAOA/oKIgIaOgIh+iIAogDCsDSKKgoCIgRAAAAAAAAAAAYQ0HIAwgDCsDICAMKwMQIB+iIAogDCsDGKKgoCAgo7YiGTgCDCAMIAwrAzggDCsDKCAfoiAKIAwrAzCioKAgIKO2Iho4AgggCCAZIBogDEEMaiAMQQhqEHEaIAwqAgwhGQJ/IABBAUYEQAJ/IAwqAghDAACAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAtBAm1BAXQhAwJ/IBlDAACAP5IiGYtDAAAAT10EQCAZqAwBC0GAgICAeAtBAm1BAXQMAQsCfyAMKgIIQwAAAD+SIhqLQwAAAE9dBEAgGqgMAQtBgICAgHgLIQMgGUMAAAA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4CyIJQQBIIAUgCUxyIANBAEggAyAGTnJyRQRAIA4gASARbSACbCANIBJtakEMbGoiByAHKAIAIAQgAyAFbCAJakEBdGoiAy0AASIJQQJ0QQRyQfwBcWo2AgAgByAHKAIIIAMtAAAiA0EEckH8AXFqNgIIIAcgBygCBCADQQV0IAlBA3ZyQQRyQfwBcWo2AgQLIA1BAWohDQwBCwsgAUEBaiEBDAALAAsgCUEAIAlBAEobIQ8gA0EAIANBAEobIRAgCkQAAAAAAABZQKAhHiADtyEhIAm3ISJBACEBA0AgASAPRg0BIB4gHSABt0QAAAAAAADgP6CiICKjoCEKQQAhDQNAIA0gEEcEQCAMKwNQIAwrA0AgHiAdIA23RAAAAAAAAOA/oKIgIaOgIh+iIAogDCsDSKKgoCIgRAAAAAAAAAAAYQ0GIAwgDCsDICAMKwMQIB+iIAogDCsDGKKgoCAgo7YiGTgCDCAMIAwrAzggDCsDKCAfoiAKIAwrAzCioKAgIKO2Iho4AgggCCAZIBogDEEMaiAMQQhqEHEaIAwqAgwhGQJ/IABBAUYEQAJ/IAwqAghDAACAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAtBAm1BAXQhAwJ/IBlDAACAP5IiGYtDAAAAT10EQCAZqAwBC0GAgICAeAtBAm1BAXQMAQsCfyAMKgIIQwAAAD+SIhqLQwAAAE9dBEAgGqgMAQtBgICAgHgLIQMgGUMAAAA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4CyIJQQBIIAUgCUxyIANBAEggAyAGTnJyRQRAIA4gASARbSACbCANIBJtakEMbGoiByAHKAIAIAQgAyAFbCAJakEBdGoiAy0AAUHwAXFqQQhqNgIAIAcgBygCCCADLQAAIgNBCHJB+AFxajYCCCAHIAcoAgQgA0EEdEEIckH4AXFqNgIECyANQQFqIQ0MAQsLIAFBAWohAQwACwALIBEgEmwhAEEAIQlBACENA0AgDSATRg0EIAsgDWogDiANQQJ0aigCACAAbjoAACANQQFqIQ0MAAsACyATQQQQhgMiDkUNAwJAIAdBAU0EQCAJQQAgCUEAShshDyADQQAgA0EAShshECAKRAAAAAAAAFlAoCEeIAO3ISEgCbchIkEAIQEDQCABIA9GDQIgHiAdIAG3RAAAAAAAAOA/oKIgIqOgIQpBACENA0AgDSAQRwRAIAwrA1AgDCsDQCAeIB0gDbdEAAAAAAAA4D+goiAho6AiH6IgCiAMKwNIoqCgIiBEAAAAAAAAAABhDQYgDCAMKwMgIAwrAxAgH6IgCiAMKwMYoqCgICCjtiIZOAIMIAwgDCsDOCAMKwMoIB+iIAogDCsDMKKgoCAgo7YiGjgCCCAIIBkgGiAMQQxqIAxBCGoQcRogDCoCDCEZAn8gAEEBRgRAAn8gDCoCCEMAAIA/kiIai0MAAABPXQRAIBqoDAELQYCAgIB4C0ECbUEBdCEDAn8gGUMAAIA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4C0ECbUEBdAwBCwJ/IAwqAghDAAAAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAshAyAZQwAAAD+SIhmLQwAAAE9dBEAgGagMAQtBgICAgHgLIgdBAEggBSAHTHIgA0EASCADIAZOcnJFBEAgDiABIBFtIAJsIA0gEm1qQQJ0aiIJIAkoAgAgBCADIAVsIAdqQQNsaiIDLQABIAMtAABqIAMtAAJqQQNuajYCAAsgDUEBaiENDAELCyABQQFqIQEMAAsACyAHQX5xQQJGBEAgCUEAIAlBAEobIQ8gA0EAIANBAEobIRAgCkQAAAAAAABZQKAhHiADtyEhIAm3ISJBACEBA0AgASAPRg0CIB4gHSABt0QAAAAAAADgP6CiICKjoCEKQQAhDQNAIA0gEEcEQCAMKwNQIAwrA0AgHiAdIA23RAAAAAAAAOA/oKIgIaOgIh+iIAogDCsDSKKgoCIgRAAAAAAAAAAAYQ0GIAwgDCsDICAMKwMQIB+iIAogDCsDGKKgoCAgo7YiGTgCDCAMIAwrAzggDCsDKCAfoiAKIAwrAzCioKAgIKO2Iho4AgggCCAZIBogDEEMaiAMQQhqEHEaIAwqAgwhGQJ/IABBAUYEQAJ/IAwqAghDAACAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAtBAm1BAXQhAwJ/IBlDAACAP5IiGYtDAAAAT10EQCAZqAwBC0GAgICAeAtBAm1BAXQMAQsCfyAMKgIIQwAAAD+SIhqLQwAAAE9dBEAgGqgMAQtBgICAgHgLIQMgGUMAAAA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4CyIHQQBIIAUgB0xyIANBAEggAyAGTnJyRQRAIA4gASARbSACbCANIBJtakECdGoiCSAJKAIAIAQgAyAFbCAHakECdGoiAy0AASADLQAAaiADLQACakEDbmo2AgALIA1BAWohDQwBCwsgAUEBaiEBDAALAAsgB0F9cUEERgRAIAlBACAJQQBKGyEPIANBACADQQBKGyEQIApEAAAAAAAAWUCgIR4gA7chISAJtyEiQQAhAQNAIAEgD0YNAiAeIB0gAbdEAAAAAAAA4D+goiAio6AhCkEAIQ0DQCANIBBHBEAgDCsDUCAMKwNAIB4gHSANt0QAAAAAAADgP6CiICGjoCIfoiAKIAwrA0iioKAiIEQAAAAAAAAAAGENBiAMIAwrAyAgDCsDECAfoiAKIAwrAxiioKAgIKO2Ihk4AgwgDCAMKwM4IAwrAyggH6IgCiAMKwMwoqCgICCjtiIaOAIIIAggGSAaIAxBDGogDEEIahBxGiAMKgIMIRkCfyAAQQFGBEACfyAMKgIIQwAAgD+SIhqLQwAAAE9dBEAgGqgMAQtBgICAgHgLQQJtQQF0IQMCfyAZQwAAgD+SIhmLQwAAAE9dBEAgGagMAQtBgICAgHgLQQJtQQF0DAELAn8gDCoCCEMAAAA/kiIai0MAAABPXQRAIBqoDAELQYCAgIB4CyEDIBlDAAAAP5IiGYtDAAAAT10EQCAZqAwBC0GAgICAeAsiB0EASCAFIAdMciADQQBIIAMgBk5yckUEQCAOIAEgEW0gAmwgDSASbWpBAnRqIgkgCSgCACAEIAMgBWwgB2pBAnRqIgMtAAIgAy0AAWogAy0AA2pBA25qNgIACyANQQFqIQ0MAQsLIAFBAWohAQwACwALAkACQAJAAkACQAJAIAdBBWsOCgAHAQIDBAUAAAAHCyAJQQAgCUEAShshDyADQQAgA0EAShshECAKRAAAAAAAAFlAoCEeIAO3ISEgCbchIkEAIQEDQCABIA9GDQYgHiAdIAG3RAAAAAAAAOA/oKIgIqOgIQpBACENA0AgDSAQRwRAIAwrA1AgDCsDQCAeIB0gDbdEAAAAAAAA4D+goiAho6AiH6IgCiAMKwNIoqCgIiBEAAAAAAAAAABhDQogDCAMKwMgIAwrAxAgH6IgCiAMKwMYoqCgICCjtiIZOAIMIAwgDCsDOCAMKwMoIB+iIAogDCsDMKKgoCAgo7YiGjgCCCAIIBkgGiAMQQxqIAxBCGoQcRogDCoCDCEZAn8gAEEBRgRAAn8gDCoCCEMAAIA/kiIai0MAAABPXQRAIBqoDAELQYCAgIB4C0ECbUEBdCEDAn8gGUMAAIA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4C0ECbUEBdAwBCwJ/IAwqAghDAAAAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAshAyAZQwAAAD+SIhmLQwAAAE9dBEAgGagMAQtBgICAgHgLIgdBAEggBSAHTHIgA0EASCADIAZOcnJFBEAgDiABIBFtIAJsIA0gEm1qQQJ0aiIJIAkoAgAgBCADIAVsIAdqai0AAGo2AgALIA1BAWohDQwBCwsgAUEBaiEBDAALAAsgCUEAIAlBAEobIQ8gA0EAIANBAEobIRAgCkQAAAAAAABZQKAhHiADtyEhIAm3ISJBACEBA0AgASAPRg0FIB4gHSABt0QAAAAAAADgP6CiICKjoCEKQQAhDQNAIA0gEEcEQCAMKwNQIAwrA0AgHiAdIA23RAAAAAAAAOA/oKIgIaOgIh+iIAogDCsDSKKgoCIgRAAAAAAAAAAAYQ0JIAwgDCsDICAMKwMQIB+iIAogDCsDGKKgoCAgo7YiGTgCDCAMIAwrAzggDCsDKCAfoiAKIAwrAzCioKAgIKO2Iho4AgggCCAZIBogDEEMaiAMQQhqEHEaIAwqAgwhGQJ/IABBAUYEQAJ/IAwqAghDAACAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAtBAm1BAXQhAwJ/IBlDAACAP5IiGYtDAAAAT10EQCAZqAwBC0GAgICAeAtBAm1BAXQMAQsCfyAMKgIIQwAAAD+SIhqLQwAAAE9dBEAgGqgMAQtBgICAgHgLIQMgGUMAAAA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4CyIHQQBIIAUgB0xyIANBAEggAyAGTnJyRQRAIA4gASARbSACbCANIBJtakECdGoiCSAJKAIAIAQgAyAFbCAHakEBdGotAAFqNgIACyANQQFqIQ0MAQsLIAFBAWohAQwACwALIAlBACAJQQBKGyEPIANBACADQQBKGyEQIApEAAAAAAAAWUCgIR4gA7chISAJtyEiQQAhAQNAIAEgD0YNBCAeIB0gAbdEAAAAAAAA4D+goiAio6AhCkEAIQ0DQCANIBBHBEAgDCsDUCAMKwNAIB4gHSANt0QAAAAAAADgP6CiICGjoCIfoiAKIAwrA0iioKAiIEQAAAAAAAAAAGENCCAMIAwrAyAgDCsDECAfoiAKIAwrAxiioKAgIKO2Ihk4AgwgDCAMKwM4IAwrAyggH6IgCiAMKwMwoqCgICCjtiIaOAIIIAggGSAaIAxBDGogDEEIahBxGiAMKgIMIRkCfyAAQQFGBEACfyAMKgIIQwAAgD+SIhqLQwAAAE9dBEAgGqgMAQtBgICAgHgLQQJtQQF0IQMCfyAZQwAAgD+SIhmLQwAAAE9dBEAgGagMAQtBgICAgHgLQQJtQQF0DAELAn8gDCoCCEMAAAA/kiIai0MAAABPXQRAIBqoDAELQYCAgIB4CyEDIBlDAAAAP5IiGYtDAAAAT10EQCAZqAwBC0GAgICAeAsiB0EASCAFIAdMciADQQBIIAMgBk5yckUEQCAOIAEgEW0gAmwgDSASbWpBAnRqIgkgCSgCACAEIAMgBWwgB2pBAXRqLQAAajYCAAsgDUEBaiENDAELCyABQQFqIQEMAAsACyAJQQAgCUEAShshDyADQQAgA0EAShshECAKRAAAAAAAAFlAoCEeIAO3ISEgCbchIkEAIQEDQCABIA9GDQMgHiAdIAG3RAAAAAAAAOA/oKIgIqOgIQpBACENA0AgDSAQRwRAIAwrA1AgDCsDQCAeIB0gDbdEAAAAAAAA4D+goiAho6AiH6IgCiAMKwNIoqCgIiBEAAAAAAAAAABhDQcgDCAMKwMgIAwrAxAgH6IgCiAMKwMYoqCgICCjtiIZOAIMIAwgDCsDOCAMKwMoIB+iIAogDCsDMKKgoCAgo7YiGjgCCCAIIBkgGiAMQQxqIAxBCGoQcRogDCoCDCEZAn8gAEEBRgRAAn8gDCoCCEMAAIA/kiIai0MAAABPXQRAIBqoDAELQYCAgIB4C0ECbUEBdCEDAn8gGUMAAIA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4C0ECbUEBdAwBCwJ/IAwqAghDAAAAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAshAyAZQwAAAD+SIhmLQwAAAE9dBEAgGagMAQtBgICAgHgLIgdBAEggBSAHTHIgA0EASCADIAZOcnJFBEAgDiABIBFtIAJsIA0gEm1qQQJ0aiIJIAkoAgAgBCADIAVsIAdqQQF0aiIDLQAAIgdB+AFxIAMtAAEiA0EDdEH4AXFqIAdBBXQgA0EDdnJB/AFxakEKakEDbmo2AgALIA1BAWohDQwBCwsgAUEBaiEBDAALAAsgCUEAIAlBAEobIQ8gA0EAIANBAEobIRAgCkQAAAAAAABZQKAhHiADtyEhIAm3ISJBACEBA0AgASAPRg0CIB4gHSABt0QAAAAAAADgP6CiICKjoCEKQQAhDQNAIA0gEEcEQCAMKwNQIAwrA0AgHiAdIA23RAAAAAAAAOA/oKIgIaOgIh+iIAogDCsDSKKgoCIgRAAAAAAAAAAAYQ0GIAwgDCsDICAMKwMQIB+iIAogDCsDGKKgoCAgo7YiGTgCDCAMIAwrAzggDCsDKCAfoiAKIAwrAzCioKAgIKO2Iho4AgggCCAZIBogDEEMaiAMQQhqEHEaIAwqAgwhGQJ/IABBAUYEQAJ/IAwqAghDAACAP5IiGotDAAAAT10EQCAaqAwBC0GAgICAeAtBAm1BAXQhAwJ/IBlDAACAP5IiGYtDAAAAT10EQCAZqAwBC0GAgICAeAtBAm1BAXQMAQsCfyAMKgIIQwAAAD+SIhqLQwAAAE9dBEAgGqgMAQtBgICAgHgLIQMgGUMAAAA/kiIZi0MAAABPXQRAIBmoDAELQYCAgIB4CyIHQQBIIAUgB0xyIANBAEggAyAGTnJyRQRAIA4gASARbSACbCANIBJtakECdGoiCSAJKAIAIAQgAyAFbCAHakEBdGoiAy0AACIHQfgBcSADLQABIgNBAnRB+AFxaiAHQQV0IANBA3ZyQfgBcWpBDGpBA25qNgIACyANQQFqIQ0MAQsLIAFBAWohAQwACwALIAlBACAJQQBKGyEPIANBACADQQBKGyEQIApEAAAAAAAAWUCgIR4gA7chISAJtyEiQQAhAQNAIAEgD0YNASAeIB0gAbdEAAAAAAAA4D+goiAio6AhCkEAIQ0DQCANIBBHBEAgDCsDUCAMKwNAIB4gHSANt0QAAAAAAADgP6CiICGjoCIfoiAKIAwrA0iioKAiIEQAAAAAAAAAAGENBSAMIAwrAyAgDCsDECAfoiAKIAwrAxiioKAgIKO2Ihk4AgwgDCAMKwM4IAwrAyggH6IgCiAMKwMwoqCgICCjtiIaOAIIIAggGSAaIAxBDGogDEEIahBxGiAMKgIMIRkCfyAAQQFGBEACfyAMKgIIQwAAgD+SIhqLQwAAAE9dBEAgGqgMAQtBgICAgHgLQQJtQQF0IQMCfyAZQwAAgD+SIhmLQwAAAE9dBEAgGagMAQtBgICAgHgLQQJtQQF0DAELAn8gDCoCCEMAAAA/kiIai0MAAABPXQRAIBqoDAELQYCAgIB4CyEDIBlDAAAAP5IiGYtDAAAAT10EQCAZqAwBC0GAgICAeAsiB0EASCAFIAdMciADQQBIIAMgBk5yckUEQCAOIAEgEW0gAmwgDSASbWpBAnRqIgkgCSgCACAEIAMgBWwgB2pBAXRqIgMtAAAiB0HwAXEgB0EEdEHwAXFqIAMtAAFBCHJB+AFxakEQakEDbmo2AgALIA1BAWohDQwBCwsgAUEBaiEBDAALAAsgESASbCEAQQAhCUEAIQ0DQCANIBNGDQMgCyANaiAOIA1BAnRqKAIAIABuOgAAIA1BAWohDQwACwALQQBBA0GGGEEAEDYLQX8hCQsgDhAxIAxB4AFqJAAgCQ8LQQBBA0H+DUEAEDZBARABAAtaAQJ/IwBBEGsiAiQAIAIgATYCDCABIAAQ4QYiA00EQCAAENwBIgAgA0EBdkkEQCACIABBAXQ2AgggAkEIaiACQQxqEG8oAgAhAwsgAkEQaiQAIAMPCxC+AgALDAAgASACLQAAOgAACyEAIAAgATYCACAAIAEoAgQiATYCBCAAIAEgAmo2AgggAAtVAQF/IAAoAgQhAgNAIAIgACgCCEcEQCAAKAIQGiAAIAAoAgggAWs2AggMAQsLIAAoAgAEQCAAKAIQGiAAKAIAIQIgABA8KAIAIAAoAgBrGiACEDELC0kBAn8gACgCBCIGQQh1IQUgBkEBcQRAIAIoAgAgBRCrBCEFCyAAKAIAIgAgASACIAVqIANBAiAGQQJxGyAEIAAoAgAoAhgRBQALIAAgASACKQIANwIAIAEgAigCEDYCECABIAIpAgg3AggLBwAgAEECSQsRACAAIAEgASgCACgCKBECAAsIAEH/////BwsFAEH/AAsrAAJAIAAgAUYNAANAIAAgAUEEayIBTw0BIAAgARBJIABBBGohAAwACwALC9ABAQJ/IAJBgBBxBEAgAEErOgAAIABBAWohAAsgAkGACHEEQCAAQSM6AAAgAEEBaiEACyACQYQCcSIDQYQCRwRAIABBrtQAOwAAIABBAmohAAsgAkGAgAFxIQIDQCABLQAAIgQEQCAAIAQ6AAAgAEEBaiEAIAFBAWohAQwBCwsgAAJ/AkAgA0GAAkcEQCADQQRHDQFBxgBB5gAgAhsMAgtBxQBB5QAgAhsMAQtBwQBB4QAgAhsgA0GEAkYNABpBxwBB5wAgAhsLOgAAIANBhAJHC00AIABBADYCFCAAIAE2AhggAEEANgIMIABCgqCAgOAANwIEIAAgAUU2AhAgAEEgakEAQSgQORogAEEcahCXByAAQQA2AkggAEF/NgJMC6oBAQF/AkAgA0GAEHFFDQAgAkUgA0HKAHEiBEEIRiAEQcAARnJyDQAgAEErOgAAIABBAWohAAsgA0GABHEEQCAAQSM6AAAgAEEBaiEACwNAIAEtAAAiBARAIAAgBDoAACAAQQFqIQAgAUEBaiEBDAELCyAAAn9B7wAgA0HKAHEiAUHAAEYNABpB2ABB+AAgA0GAgAFxGyABQQhGDQAaQeQAQfUAIAIbCzoAAAsMACAAEEAgAUECdGoLrwQBC38jAEGAAWsiCiQAIAogATYCeCACIAMQ8AMhCCAKQcwCNgIQIApBCGpBACAKQRBqIgkQZiEPAkAgCEHlAE8EQCAIEDciCUUNASAPIAkQeQsgCSEHIAIhAQNAIAEgA0YEQANAAkAgACAKQfgAahCLAUEAIAgbRQRAIAAgCkH4AGoQcwRAIAUgBSgCAEECcjYCAAsMAQsgABBoIQ0gBkUEQCAEIA0QgQEhDQsgDEEBaiEQQQAhDiAJIQcgAiEBA0AgASADRgRAIBAhDCAORQ0DIAAQehogCSEHIAIhASAIIAtqQQJJDQMDQCABIANGBEAMBQUCQCAHLQAAQQJHDQAgARA1IAxGDQAgB0EAOgAAIAtBAWshCwsgB0EBaiEHIAFBDGohAQwBCwALAAUCQCAHLQAAQQFHDQAgASAMEMIDKAIAIRECQCAGBH8gEQUgBCAREIEBCyANRgRAQQEhDiABEDUgEEcNAiAHQQI6AAAgC0EBaiELDAELIAdBADoAAAsgCEEBayEICyAHQQFqIQcgAUEMaiEBDAELAAsACwsCQAJAA0AgAiADRg0BIAktAABBAkcEQCAJQQFqIQkgAkEMaiECDAELCyACIQMMAQsgBSAFKAIAQQRyNgIACyAPEGUgCkGAAWokACADDwUCQCABEL8BRQRAIAdBAToAAAwBCyAHQQI6AAAgC0EBaiELIAhBAWshCAsgB0EBaiEHIAFBDGohAQwBCwALAAsQdQALEQAgACABIAAoAgAoAgwRAwALtgQBC38jAEGAAWsiCiQAIAogATYCeCACIAMQ8AMhCCAKQcwCNgIQIApBCGpBACAKQRBqIgkQZiEPAkAgCEHlAE8EQCAIEDciCUUNASAPIAkQeQsgCSEHIAIhAQNAIAEgA0YEQANAAkAgACAKQfgAahCMAUEAIAgbRQRAIAAgCkH4AGoQdARAIAUgBSgCAEECcjYCAAsMAQsgABBpIQ0gBkUEQCAEIA0QxAMhDQsgDEEBaiEQQQAhDiAJIQcgAiEBA0AgASADRgRAIBAhDCAORQ0DIAAQexogCSEHIAIhASAIIAtqQQJJDQMDQCABIANGBEAMBQUCQCAHLQAAQQJHDQAgARA1IAxGDQAgB0EAOgAAIAtBAWshCwsgB0EBaiEHIAFBDGohAQwBCwALAAUCQCAHLQAAQQFHDQAgASAMEEEsAAAhEQJAIA1B/wFxIAYEfyARBSAEIBEQxAMLQf8BcUYEQEEBIQ4gARA1IBBHDQIgB0ECOgAAIAtBAWohCwwBCyAHQQA6AAALIAhBAWshCAsgB0EBaiEHIAFBDGohAQwBCwALAAsLAkACQANAIAIgA0YNASAJLQAAQQJHBEAgCUEBaiEJIAJBDGohAgwBCwsgAiEDDAELIAUgBSgCAEEEcjYCAAsgDxBlIApBgAFqJAAgAw8FAkAgARC/AUUEQCAHQQE6AAAMAQsgB0ECOgAAIAtBAWohCyAIQQFrIQgLIAdBAWohByABQQxqIQEMAQsACwALEHUAC38CAn8CfiMAQaABayIEJAAgBCABNgI8IAQgATYCFCAEQX82AhggBEEQaiIFQgAQxAEgBCAFIANBARCABSAEKQMIIQYgBCkDACEHIAIEQCACIAEgBCgCFCAEKAKIAWogBCgCPGtqNgIACyAAIAY3AwggACAHNwMAIARBoAFqJAALCwAgAEHUuQQQywELJwEBfyAAQQRqENAEIQIgAEH8lgM2AgAgAkGQlwM2AgAgAiABEMADCycBAX8gAEEEahDdBCECIABB3JUDNgIAIAJB8JUDNgIAIAIgARDAAwsLACAAQcy5BBDLAQu4AQEBfyMAQRBrIgEkACAAIAAoAgBBDGsoAgBqKAIYBEAgASAANgIMIAFBADoACCAAIAAoAgBBDGsoAgBqENADBEAgACAAKAIAQQxrKAIAaigCSARAIAAgACgCAEEMaygCAGooAkgQywMLIAFBAToACAsCQCABLQAIRQ0AIAAgACgCAEEMaygCAGooAhgQzwJBf0cNACAAIAAoAgBBDGsoAgBqQQEQxQILIAFBCGoQzgILIAFBEGokAAsUACAAQYiWAzYCACAAQQRqEEUgAAtdAQJ/AkAgACgCACICRQ0AAn8gAigCGCIDIAIoAhxGBEAgAiABEMMBIAIoAgAoAjQRAwAMAQsgAiADQQFqNgIYIAMgAToAACABEMMBC0F/ELsBRQ0AIABBADYCAAsLCQAgABCCAxAxC4sCAgd/AXwjAEEgayIGJAAgBiAEQQR0EDciCjYCECAKBEACQCAGIARBGGwQNyILNgIUIAtFDQAgBEEAIARBAEobIQwDQCAJIAxGRQRAIAogCUEEdCIHaiIIIAIgB2oiBysDADkDACAIIAcrAwg5AwggCyAJQRhsIghqIgcgAyAIaiIIKwMAOQMAIAcgCCsDCDkDCCAHIAgrAxA5AxAgCUEBaiEJDAELCyAGIAQ2AhggACgCACAGQRBqIAEgBSAGQQhqEN4CQQBIBEAgBkKAgICAwPD1y8EANwMICyAGKAIQEDEgBigCFBAxIAYrAwghDSAGQSBqJAAgDQ8LC0EAQQNB/g1BABA2QQEQAQALCAAgACgCEEULCQAgABCEAxAxCwoAIABBGHRBGHULFAAgAEHolAM2AgAgAEEEahBFIAALDAAgABDNAhogABAxCwkAIAAgARDwBAvTAwICfgJ/IwBBIGsiBCQAAkAgAUL///////////8AgyIDQoCAgICAgMCAPH0gA0KAgICAgIDA/8MAfVQEQCABQgSGIABCPIiEIQMgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIANCgYCAgICAgIDAAHwhAgwCCyADQoCAgICAgICAQH0hAiAAQoCAgICAgICACFINASACIANCAYN8IQIMAQsgAFAgA0KAgICAgIDA//8AVCADQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiADQv///////7//wwBWDQBCACECIANCMIinIgVBkfcASQ0AIARBEGogACABQv///////z+DQoCAgICAgMAAhCICIAVBgfcAaxCIASAEIAAgAkGB+AAgBWsQ/gEgBCkDCEIEhiAEKQMAIgBCPIiEIQIgBCkDECAEKQMYhEIAUq0gAEL//////////w+DhCIAQoGAgICAgICACFoEQCACQgF8IQIMAQsgAEKAgICAgICAgAhSDQAgAkIBgyACfCECCyAEQSBqJAAgAiABQoCAgICAgICAgH+DhL8LRQEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQnQEgBSkDACEBIAAg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ACABEEoLFwEBfyAAEIABIQEgABDaBiAAIAEQ2AYLBABBAQsxAQF/IAAQ0gYgACgCAARAIAAgACgCABDQBiAAEDIaIAAoAgAhASAAEJACGiABEDELCywBAX8gABDbBiAAKAIABEAgABDaBiAAEDIaIAAoAgAhASAAEO8BGiABEDELCxgBAX8gABBGIQIgACABEMgGIAAgAhCtAwtUAQJ/IwBBIGsiAiQAAkAgABDvASABSQRAIAAQ1AYgAUkNASAAEDIhAyAAIAJBCGogASAAEIABIAMQkAQiABCOBCAAEI0ECyACQSBqJAAPCxCRAgAL5AcBB38gASAAEKIBIgJLBEAjAEEgayIIJAACQCABIAJrIgUgABAyKAIAIAAoAgRrQQV1TQRAIwBBEGsiAyQAIAMgADYCACADIAAoAgQiATYCBCADIAEgBUEFdGo2AgggAygCBCECIAMoAgghAQNAIAEgAkYEQCADEHIgA0EQaiQABSAAEDIaIAIQzgYgAyACQSBqIgI2AgQMAQsLDAELIAAQMiEHIAhBCGohAgJ/IAAQogEgBWohAyMAQRBrIgYkACAGIAM2AgwjAEEQayIEJAAgABAyGiAEQf///z82AgwgBEH/////BzYCCCAEQQxqIARBCGoQlQIoAgAhASAEQRBqJAAgASADTwRAIAAQkAIiAyABQQF2SQRAIAYgA0EBdDYCCCAGQQhqIAZBDGoQbygCACEBCyAGQRBqJAAgAQwBCxCRAgALIQYgABCiASEDQQAhASMAQRBrIgQkACAEQQA2AgwgAkEMaiAHENQBIAYEQCACKAIQGiAGQf///z9LBEAQ8wEACyAGQQV0EFshAQsgAiABNgIAIAIgASADQQV0aiIDNgIIIAIgAzYCBCACEDwgASAGQQV0ajYCACAEQRBqJAAjAEEQayIDJAAgAyACKAIINgIAIAIoAgghASADIAJBCGo2AgggAyABIAVBBXRqNgIEIAMoAgAhBQNAIAMoAgQgBUcEQCACKAIQGiADKAIAEM4GIAMgAygCAEEgaiIFNgIADAELCyADELIBIANBEGokACAAENIGIAAQMhogACgCACEDIAAoAgQhBSACQQRqIQcDQCADIAVHBEAgBygCAEEgayIEQgA3AgAgBEIANwIQIARCADcCCCAEQRhqIgEQswIaIAQgBUEgayIFKAIANgIA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CwALIAQgAjsBACACIANODQVBACEKIAxBACAMQQBKGyELIAAhAQNAIAogC0YNBiADIAEoAgBGBEAgASACNgIACyAKQQFqIQogAUEEaiEBDAALAAsgBEECay4BACIBQQBKBEAgA0ECdCAAakEEaygCACICIAFB//8DcUECdCAAakEEaygCACIDSgRAIAQgAzsBAEEAIQogDEEAIAxBAEobIQsgACEBA0AgCiALRgRAIAMhAgwHCyACIAEoAgBGBEAgASADNgIACyAKQQFqIQogAUEEaiEBDAALAAsgBCACOwEAIAIgA04NBEEAIQogDEEAIAxBAEobIQsgACEBA0AgCiALRg0FIAMgASgCAEYEQCABIAI2AgALIApBAWohCiABQQRqIQEMAAsACyAEIAM7AQAgA0EcbCAQaiICQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACAOajYCACAJIAJBEGsiASgCAEgEQCABIAk2AgALIAJBBGsgDjYCAAwFCyACQQBKBEAgBCACOwEAIAFBHGwgEGoiAkEcayIBIAEoAgBBAWo2AgAgAkEYayIBIAEoAgAgCWo2AgAgAkEUayIBIAEoAgAgDmo2AgAgCSACQQxrIgEoAgBKBEAgASAJNgIACyACQQRrIA42AgAMBQsgBEECay8BACICQRB0QRB1IgFBAEoEQCAEIAE7AQAgAkEcbCAQaiICQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACAOajYCACACQQxrIgEoAgAgCU4NBSABIAk2AgAMBQsgDEGAgAJOBEBBAEEDQeQLQQAQNkF/IQoMCQsgBCAMQQFqIgE7AQAgACAMQQJ0aiABQRB0QRB1NgIAIBAgDEEcbGoiAiAONgIYIAIgDjYCFCACIAk2AhAgAiAJNgIMIAIgDjYCCCACIAk2AgQgAkEBNgIAIAEhDAwECyAEQQA7AQAMAwsgBEEEaiEEIA5BAWohDiAGIAhqQQRqIQYMBQsgAkEQdEEQdUEcbCAQaiICQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACAOajYCAAwBCyACQRB0QRB1QRxsIBBqIgJBBGsgDjYCACACQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACAOajYCAAsgBEECaiEEIAZBAmohBiAJQQFqIQkMAAsACwsgDEEAIAxBAEobQQFqIQNBASEBQQEhBiAAIQkDQCABIANHBEACQCABIAkoAgAiAkYEQCAGIgpBAWohBgwBCyACQQJ0IABqQQRrKAIAIQoLIAkgCjYCACAJQQRqIQkgAUEBaiEBDAELCyAHIAZBAWsiCTYCCEEAIAlFDQEaIAdBjIAIaiEIIAdBDGpBACAJQQJ0EDkhBiAHQZCAKGpBACAJQQR0EDkhBUEAIQEDQCABIAlOBEBBACEJIAxBACAMQQBKGyEEA0AgBCAJRgRAQQAhCiAHKAIIIgBBACAAQQBKGyEAQQAhAQNAIAAgAUYNBSAFIAFBBHRqIgIgAisDACAGIAFBAnRqKAIAtyIXozkDACACIAIrAwggF6M5AwggAUEBaiEBDAALAAsgBiAAIAlBAnRqKAIAQQFrIgJBAnQiA2oiASABKAIAIBAgCUEcbGoiDCgCAGo2AgAgBSACQQR0IgFqIgIgAisDACAMKAIEt6A5AwAgAiACKwMIIAwoAgi3oDkDCCAMKAIMIgIgASAIaiIBKAIASARAIAEgAjYCAAsgDCgCECICIAggA0ECdCIDQQRyaiIBKAIASgRAIAEgAjYCAAsgDCgCFCICIAggA0EIcmoiASgCAEgEQCABIAI2AgALIAwoAhgiAiAIIANBDHJqIgEoAgBKBEAgASACNgIACyAJQQFqIQkMAAsABSAIIAFBBHRqIgIgEjYCACACQQA2AgQgAiAUNgIIIAJBADYCDCABQQFqIQEgBygCCCEJDAELAAsACyAKCw8LIAgEQAJ/IAAhBEEAIQMgASIGQQAgAUEAShshACAHKAIAIgEgAiIFQQFrIgsgBmxBAXRqIQkgASECA0AgACADRwRAIAlBADsBACACQQA7AQAgA0EBaiEDIAJBAmohAiAJQQJqIQkMAQsLIAVBACAFQQBKGyEMIAEgBkEBayIKQQF0aiEJQQAhAyABIQIDQCADIAxHBEAgCUEAOwEAIAJBADsBACADQQFqIQMgCSAGQQF0IgBqIQkgACACaiECDAELCyALQQEgC0EBShshEiAHQZCA0ABqIQ0gB0GQgMgAaiEAIAggBkEBaiICaiEIIAIgBGohDiAKQQEgCkEBShsiFEEBayEQIAEgAkEBdGohAkEAIAZrQQF0IRVBACEMQQEhDwJAA0AgDyASRwRAIA4gEGohFiAIIBBqIRFBASEJA0ACQAJAAkAgCSAURwRAIA4tAAAgCC0AAEsEQCACIBVqIgQvAQAiA0EQdEEQdSIBQQBKBEAgAiABOwEAIANBHGwgDWoiA0EEayAPNgIAIANBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAlqNgIAIANBFGsiASABKAIAIA9qNgIADAULIARBAmsvAQAiA0EQdEEQdSEBIAQuAQIiBEEASgRAIAFBAEoEQCAEQQJ0IABqQQRrKAIAIgEgA0ECdCAAakEEaygCACIESgRAIAIgBDsBAEEAIQogDEEAIAxBAEobIQsgACEDA0AgCiALRgRAIAQhAQwICyABIAMoAgBGBEAgAyAENgIACyAKQQFqIQogA0EEaiEDDAALAAsgAiABOwEAIAEgBE4NBUEAIQogDEEAIAxBAEobIQsgACEDA0AgCiALRg0GIAQgAygCAEYEQCADIAE2AgALIApBAWohCiADQQRqIQMMAAsACyACQQJrLgEAIgNBAEoEQCAEQQJ0IABqQQRrKAIAIgEgA0H//wNxQQJ0IABqQQRrKAIAIgRKBEAgAiAEOwEAQQAhCiAMQQAgDEEAShshCyAAIQMDQCAKIAtGBEAgBCEBDAcLIAEgAygCAEYEQCADIAQ2AgALIApBAWohCiADQQRqIQMMAAsACyACIAE7AQAgASAETg0EQQAhCiAMQQAgDEEAShshCyAAIQMDQCAKIAtGDQUgBCADKAIARgRAIAMgATYCAAsgCkEBaiEKIANBBGohAwwACwALIAIgBDsBACAEQRxsIA1qIgNBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAlqNgIAIANBFGsiASABKAIAIA9qNgIAIAkgA0EQayIBKAIASARAIAEgCTYCAAsgA0EEayAPNgIADAULIAFBAEoEQCACIAE7AQAgA0EcbCANaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACAPajYCACAJIANBDGsiASgCAEoEQCABIAk2AgALIANBBGsgDzYCAAwFCyACQQJrLwEAIgNBEHRBEHUiAUEASgRAIAIgATsBACADQRxsIA1qIgNBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAlqNgIAIANBFGsiASABKAIAIA9qNgIAIANBDGsiASgCACAJTg0FIAEgCTYCAAwFCyAMQYCAAk4EQEEAQQNB5AtBABA2QX8hCgwJCyACIAxBAWoiATsBACAAIAxBAnRqIAFBEHRBEHU2AgAgDSAMQRxsaiIDIA82AhggAyAPNgIUIAMgCTYCECADIAk2AgwgAyAPNgIIIAMgCTYCBCADQQE2AgAgASEMDAQLIAJBADsBAAwDCyACQQRqIQIgEUECaiEIIBZBAmohDiAPQQFqIQ8MBQsgAUEQdEEQdUEcbCANaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACAPajYCAAwBCyABQRB0QRB1QRxsIA1qIgNBBGsgDzYCACADQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACAPajYCAAsgAkECaiECIAhBAWohCCAOQQFqIQ4gCUEBaiEJDAALAAsLIAxBACAMQQBKG0EBaiECQQEhA0EBIQggACEJA0AgAiADRwRAAkAgAyAJKAIAIgFGBEAgCCIKQQFqIQgMAQsgAUECdCAAakEEaygCACEKCyAJIAo2AgAgCUEEaiEJIANBAWohAwwBCwsgByAIQQFrIgk2AghBACAJRQ0BGiAHQYyACGohCiAHQQxqQQAgCUECdBA5IQsgB0GQgChqQQAgCUEEdBA5IQhBACEDA0AgAyAJTgRAQQAhCSAMQQAgDEEAShshBANAIAQgCUYEQEEAIQogBygCCCIAQQAgAEEAShshAEEAIQMDQCAAIANGDQUgCCADQQR0aiIBIAErAwAgCyADQQJ0aigCALciF6M5AwAgASABKwMIIBejOQMIIANBAWohAwwACwALIAsgACAJQQJ0aigCAEEBayICQQJ0IgNqIgEgASgCACANIAlBHGxqIgUoAgBqNgIAIAggAkEEdCIBaiICIAIrAwAgBSgCBLegOQMAIAIgAisDCCAFKAIIt6A5AwggBSgCDCICIAEgCmoiASgCAEgEQCABIAI2AgALIAUoAhAiAiAKIANBAnQiA0EEcmoiASgCAEoEQCABIAI2AgALIAUoAhQiAiAKIANBCHJqIgEoAgBIBEAgASACNgIACyAFKAIYIgIgCiADQQxyaiIBKAIASgRAIAEgAjYCAAsgCUEBaiEJDAALAAUgCiADQQR0aiIBIAY2AgAgAUEANgIEIAEgBTYCCCABQQA2AgwgA0EBaiEDIAcoAgghCQwBCwALAAsgCgsPCyAGRQRAAn8gACEEQQAhAyABIghBACABQQBKGyEAIAcoAgAiASACIgZBAWsiCSAIbEEBdGohCyABIQIDQCAAIANHBEAgC0EAOwEAIAJBADsBACADQQFqIQMgAkECaiECIAtBAmohCwwBCwsgBkEAIAZBAEobIQwgASAIQQFrIgpBAXRqIQtBACEDIAEhAgNAIAMgDEcEQCALQQA7AQAgAkEAOwEAIANBAWohAyALIAhBAXQiAGohCyAAIAJqIQIMAQsLIAlBASAJQQFKGyEQIAdBkIDQAGohDiAHQZCAyABqIQAgBCAIQQFqIgJqIQwgCkEBIApBAUobIhJBAWshFCABIAJBAXRqIQJBACAIa0EBdCEVQQAhCkEBIQ0CQANAIA0gEEcEQCAMIBRqIRZBASELA0ACQAJAAkAgCyASRwRAIAUgDC0AAEgEQCACIBVqIgQvAQAiA0EQdEEQdSIBQQBKBEAgAiABOwEAIANBHGwgDmoiA0EEayANNgIAIANBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA1qNgIADAULIARBAmsvAQAiA0EQdEEQdSEBIAQuAQIiBEEASgRAIAFBAEoEQCAEQQJ0IABqQQRrKAIAIgEgA0ECdCAAakEEaygCACIESgRAIAIgBDsBAEEAIQkgCkEAIApBAEobIREgACEDA0AgCSARRgRAIAQhAQwICyABIAMoAgBGBEAgAyAENgIACyAJQQFqIQkgA0EEaiEDDAALAAsgAiABOwEAIAEgBE4NBUEAIQkgCkEAIApBAEobIREgACEDA0AgCSARRg0GIAQgAygCAEYEQCADIAE2AgALIAlBAWohCSADQQRqIQMMAAsACyACQQJrLgEAIgNBAEoEQCAEQQJ0IABqQQRrKAIAIgEgA0H//wNxQQJ0IABqQQRrKAIAIgRKBEAgAiAEOwEAQQAhCSAKQQAgCkEAShshESAAIQMDQCAJIBFGBEAgBCEBDAcLIAEgAygCAEYEQCADIAQ2AgALIAlBAWohCSADQQRqIQMMAAsACyACIAE7AQAgASAETg0EQQAhCSAKQQAgCkEAShshESAAIQMDQCAJIBFGDQUgBCADKAIARgRAIAMgATYCAAsgCUEBaiEJIANBBGohAwwACwALIAIgBDsBACAEQRxsIA5qIgNBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA1qNgIAIAsgA0EQayIBKAIASARAIAEgCzYCAAsgA0EEayANNgIADAULIAFBAEoEQCACIAE7AQAgA0EcbCAOaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACALajYCACADQRRrIgEgASgCACANajYCACALIANBDGsiASgCAEoEQCABIAs2AgALIANBBGsgDTYCAAwFCyACQQJrLwEAIgNBEHRBEHUiAUEASgRAIAIgATsBACADQRxsIA5qIgNBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA1qNgIAIANBDGsiASgCACALTg0FIAEgCzYCAAwFCyAKQYCAAk4EQEEAQQNB5AtBABA2QX8hCQwJCyACIApBAWoiATsBACAAIApBAnRqIAFBEHRBEHU2AgAgDiAKQRxsaiIDIA02AhggAyANNgIUIAMgCzYCECADIAs2AgwgAyANNgIIIAMgCzYCBCADQQE2AgAgASEKDAQLIAJBADsBAAwDCyACQQRqIQIgFkECaiEMIA1BAWohDQwFCyABQRB0QRB1QRxsIA5qIgNBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA1qNgIADAELIAFBEHRBEHVBHGwgDmoiA0EEayANNgIAIANBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA1qNgIACyACQQJqIQIgDEEBaiEMIAtBAWohCwwACwALCyAKQQAgCkEAShtBAWohAkEBIQNBASEMIAAhCwNAIAIgA0cEQAJAIAMgCygCACIBRgRAIAwiCUEBaiEMDAELIAFBAnQgAGpBBGsoAgAhCQsgCyAJNgIAIAtBBGohCyADQQFqIQMMAQsLIAcgDEEBayILNgIIQQAgC0UN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AyACQQJqIQIgCUECaiEJDAELCyAFQQAgBUEAShshByABIAZBAWsiCkEBdGohCUEAIQMgASECA0AgAyAHRwRAIAlBADsBACACQQA7AQAgA0EBaiEDIAkgBkEBdCIAaiEJIAAgAmohAgwBCwsgC0EBIAtBAUobIRIgDEGQgNAAaiEPIAxBkIDIAGohACAIIAZBAWoiAmohByACIARqIQ4gDCgCBCACaiENIApBASAKQQFKGyIUQQFrIRAgASACQQF0aiECQQAgBmtBAXQhFUEAIQhBASETAkADQCASIBNHBEAgDiAQaiEWIAcgEGohEUEBIQkDQAJAAkACQCAJIBRHBEAgDi0AACAHLQAATQRAIA1B/wE6AAAgAiAVaiIELwEAIgNBEHRBEHUiAUEASgRAIAIgATsBACADQRxsIA9qIgNBBGsgEzYCACADQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACATajYCAAwFCyAEQQJrLwEAIgNBEHRBEHUhASAELgECIgRBAEoEQCABQQBKBEAgBEECdCAAakEEaygCACIBIANBAnQgAGpBBGsoAgAiBEoEQCACIAQ7AQBBACEKIAhBACAIQQBKGyELIAAhAwNAIAogC0YEQCAEIQEMCAsgASADKAIARgRAIAMgBDYCAAsgCkEBaiEKIANBBGohAwwACwALIAIgATsBACABIARODQVBACEKIAhBACAIQQBKGyELIAAhAwNAIAogC0YNBiAEIAMoAgBGBEAgAyABNgIACyAKQQFqIQogA0EEaiEDDAALAAsgAkECay4BACIDQQBKBEAgBEECdCAAakEEaygCACIBIANB//8DcUECdCAAakEEaygCACIESgRAIAIgBDsBAEEAIQogCEEAIAhBAEobIQsgACEDA0AgCiALRgRAIAQhAQwHCyABIAMoAgBGBEAgAyAENgIACyAKQQFqIQogA0EEaiEDDAALAAsgAiABOwEAIAEgBE4NBEEAIQogCEEAIAhBAEobIQsgACEDA0AgCiALRg0FIAQgAygCAEYEQCADIAE2AgALIApBAWohCiADQQRqIQMMAAsACyACIAQ7AQAgBEEcbCAPaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACATajYCACAJIANBEGsiASgCAEgEQCABIAk2AgALIANBBGsgEzYCAAwFCyABQQBKBEAgAiABOwEAIANBHGwgD2oiA0EcayIBIAEoAgBBAWo2AgAgA0EYayIBIAEoAgAgCWo2AgAgA0EUayIBIAEoAgAgE2o2AgAgCSADQQxrIgEoAgBKBEAgASAJNgIACyADQQRrIBM2AgAMBQsgAkECay8BACIDQRB0QRB1IgFBAEoEQCACIAE7AQAgA0EcbCAPaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACATajYCACADQQxrIgEoAgAgCU4NBSABIAk2AgAMBQsgCEGAgAJOBEBBAEEDQeQLQQAQNkF/IQoMCQsgAiAIQQFqIgE7AQAgACAIQQJ0aiABQRB0QRB1NgIAIA8gCEEcbGoiAyATNgIYIAMgEzYCFCADIAk2AhAgAyAJNgIMIAMgEzYCCCADIAk2AgQgA0EBNgIAIAEhCAwECyACQQA7AQAgDUEAOgAADAMLIA1BAmohDSACQQRqIQIgEUECaiEHIBZBAmohDiATQQFqIRMMBQsgAUEQdEEQdUEcbCAPaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACATajYCAAwBCyABQRB0QRB1QRxsIA9qIgNBBGsgEzYCACADQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACATajYCAAsgDUEBaiENIAJBAmohAiAHQQFqIQcgDkEBaiEOIAlBAWohCQwACwALCyAIQQAgCEEAShtBAWohAkEBIQNBASEHIAAhCQNAIAIgA0cEQAJAIAMgCSgCACIBRgRAIAciCkEBaiEHDAELIAFBAnQgAGpBBGsoAgAhCgsgCSAKNgIAIAlBBGohCSADQQFqIQMMAQsLIAwgB0EBayIJNgIIQQAgCUUNARogDEGMgAhqIQogDEEMakEAIAlBAnQQOSELIAxBkIAoakEAIAlBBHQQOSEHQQAhAwNAIAMgCU4EQEEAIQkgCEEAIAhBAEobIQQDQCAEIAlGBEBBACEKIAwoAggiAEEAIABBAEobIQBBACEDA0AgACADRg0FIAcgA0EEdGoiASABKwMAIAsgA0ECdGooAgC3IhejOQMAIAEgASsDCCAXozkDCCADQQFqIQMMAAsACyALIAAgCUECdGooAgBBAWsiAkECdCIDaiIBIAEoAgAgDyAJQRxsaiIFKAIAajYCACAHIAJBBHQiAWoiAiACKwMAIAUoAgS3oDkDACACIAIrAwggBSgCCLegOQMIIAUoAgwiAiABIApqIgEoAgBIBEAgASACNgIACyAFKAIQIgIgCiADQQJ0IgNBBHJqIgEoAgBKBEAgASACNgIACyAFKAIUIgIgCiADQQhyaiIBKAIASARAIAEgAjYCAAsgBSgCGCICIAogA0EMcmoiASgCAEoEQCABIAI2AgALIAlBAWohCQwACwAFIAogA0EEdGoiASAGNgIAIAFBADYCBCABIAU2AgggAUEANgIMIANBAWohAyAMKAIIIQkMAQsACwALIAoLDwsgBkUEQAJ/IAAhBEEAIQMgASIIQQAgAUEAShshACAHIgwoAgAiASACIgZBAWsiCSAIbEEBdGohCyABIQIDQCAAIANHBEAgC0EAOwEAIAJBADsBACADQQFqIQMgAkECaiECIAtBAmohCwwBCwsgBkEAIAZBAEobIQcgASAIQQFrIgpBAXRqIQtBACEDIAEhAgNAIAMgB0cEQCALQQA7AQAgAkEAOwEAIANBAWohAyALIAhBAXQiAGohCyAAIAJqIQIMAQsLIAlBASAJQQFKGyEQIAxBkIDQAGohDSAMQZCAyABqIQAgBCAIQQFqIgJqIQcgDCgCBCACaiEOIApBASAKQQFKGyISQQFrIRQgASACQQF0aiECQQAgCGtBAXQhFUEAIQpBASEPAkADQCAPIBBHBEAgByAUaiEWQQEhCwNAAkACQAJAIAsgEkcEQCAFIActAABOBEAgDkH/AToAACACIBVqIgQvAQAiA0EQdEEQdSIBQQBKBEAgAiABOwEAIANBHGwgDWoiA0EEayAPNgIAIANBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA9qNgIADAULIARBAmsvAQAiA0EQdEEQdSEBIAQuAQIiBEEASgRAIAFBAEoEQCAEQQJ0IABqQQRrKAIAIgEgA0ECdCAAakEEaygCACIESgRAIAIgBDsBAEEAIQkgCkEAIApBAEobIREgACEDA0AgCSARRgRAIAQhAQwICyABIAMoAgBGBEAgAyAENgIACyAJQQFqIQkgA0EEaiEDDAALAAsgAiABOwEAIAEgBE4NBUEAIQkgCkEAIApBAEobIREgACEDA0AgCSARRg0GIAQgAygCAEYEQCADIAE2AgALIAlBAWohCSADQQRqIQMMAAsACyACQQJrLgEAIgNBAEoEQCAEQQJ0IABqQQRrKAIAIgEgA0H//wNxQQJ0IABqQQRrKAIAIgRKBEAgAiAEOwEAQQAhCSAKQQAgCkEAShshESAAIQMDQCAJIBFGBEAgBCEBDAcLIAEgAygCAEYEQCADIAQ2AgALIAlBAWohCSADQQRqIQMMAAsACyACIAE7AQAgASAETg0EQQAhCSAKQQAgCkEAShshESAAIQMDQCAJIBFGDQUgBCADKAIARgRAIAMgATYCAAsgCUEBaiEJIANBBGohAwwACwALIAIgBDsBACAEQRxsIA1qIgNBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA9qNgIAIAsgA0EQayIBKAIASARAIAEgCzYCAAsgA0EEayAPNgIADAULIAFBAEoEQCACIAE7AQAgA0EcbCANaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACALajYCACADQRRrIgEgASgCACAPajYCACALIANBDGsiASgCAEoEQCABIAs2AgALIANBBGsgDzYCAAwFCyACQQJrLwEAIgNBEHRBEHUiAUEASgRAIAIgATsBACADQRxsIA1qIgNBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA9qNgIAIANBDGsiASgCACALTg0FIAEgCzYCAAwFCyAKQYCAAk4EQEEAQQNB5AtBABA2QX8hCQwJCyACIApBAWoiATsBACAAIApBAnRqIAFBEHRBEHU2AgAgDSAKQRxsaiIDIA82AhggAyAPNgIUIAMgCzYCECADIAs2AgwgAyAPNgIIIAMgCzYCBCADQQE2AgAgASEKDAQLIAJBADsBACAOQQA6AAAMAwsgDkECaiEOIAJBBGohAiAWQQJqIQcgD0EBaiEPDAULIAFBEHRBEHVBHGwgDWoiA0EcayIBIAEoAgBBAWo2AgAgA0EYayIBIAEoAgAgC2o2AgAgA0EUayIBIAEoAgAgD2o2AgAMAQsgAUEQdEEQdUEcbCANaiIDQQRrIA82AgAgA0EcayIBIAEoAgBBAWo2AgAgA0EYayIBIAEoAgAgC2o2AgAgA0EUayIBIAEoAgAgD2o2AgALIA5BAWohDiACQQJqIQIgB0EBaiEHIAtBAWohCwwACwALCyAKQQAgCkEAShtBAWohAkEBIQNBASEHIAAhCwNAIAIgA0cEQAJAIAMgCygCACIBRgRAIAciCUEBaiEHDAELIAFBAnQgAGpBBGsoAgAhCQsgCyAJNgIAIAtBBGohCyADQQFqIQMMAQsLIAwgB0EBayILNgIIQQAgC0UNARogDEGMgAhqIQkgDEEMakEAIAtBAnQQOSEHIAxBkIAoakEAIAtBBHQQOSEFQQAhAwNAIAMgC04EQEEAIQsgCkEAIApBAEobIQQDQCAEIAtGBEBBACEJIAwoAggiAEEAIABBAEobIQBBACEDA0AgACADRg0FIAUgA0EEdGoiASABKwMAIAcgA0ECdGooAgC3IhejOQMAIAEgASsDCCAXozkDCCADQQFqIQMMAAsACyAHIAAgC0ECdGooAgBBAWsiAkECdCIDaiIBIAEoAgAgDSALQRxsaiIGKAIAajYCACAFIAJBBHQiAWoiAiACKwMAIAYoAgS3oDkDACACIAIrAwggBigCCLegOQMIIAYoAgwiAiABIAlqIgEoAgBIBEAgASACNgIACyAGKAIQIgIgCSADQQJ0IgNBBHJqIgEoAgBKBEAgASACNgIACyAGKAIUIgIgCSADQQhyaiIBKAIASARAIAEgAjYCAAsgBigCGCICIAkgA0EMcmoiASgCAEoEQCABIAI2AgALIAtBAWohCwwACwAFIAkgA0EEdGoiASAINgIAIAFBADYCBCABIAY2AgggAUEANgIMIANBAWohAyAMKAIIIQsMAQsACwALIAkLDwsCfyAAIQYgASIIQQJtIhBBACAQQQBKGyEAIAcoAgAiAyACQQJtIhRBAWsiCiAQbEEBdGohCUEAIQEgAyEEA0AgACABRwRAIAlBADsBACAEQQA7AQAgAUEBaiEBIARBAmohBCAJQQJqIQkMAQsLIBRBACAUQQBKGyECIAMgEEEBayIMQQF0aiEJQQAhASADIQQDQCABIAJHBEAgCUEAOwEAIARBADsBACABQQFqIQEgCSAQQQF0IgBqIQkgACAEaiEEDAELCyAKQQEgCkEBShshFSAMQQEgDEEBShshFiAHQZCA0ABqIQ4gB0GQgMgAaiEAIBBBAWoiASAHKAIEaiEMIAhBAXQgBmpBAmohEiADIAFBAXRqIQRBACAQa0EBdCERQQAhBkEBIQ0CQANAIA0gFUcEQEEBIQkDQAJAAkACQCAJIBZHBEAgBSASLQAATgRAIAxB/wE6AAAgBCARaiIDLwEAIgJBEHRBEHUiAUEASgRAIAQgATsBACACQRxsIA5qIgJBBGsgDTYCACACQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACANajYCAAwFCyADQQJrLwEAIgFBEHRBEHUhAiADLgECIgNBAEoEQCACQQBKBEAgA0ECdCAAakEEaygCACICIAFBAnQgAGpBBGsoAgAiA0oEQCAEIAM7AQBBACEKIAZBACAGQQBKGyELIAAhAQNAIAogC0YEQCADIQIMCAsgAiABKAIARgRAIAEgAzYCAAsgCkEBaiEKIAFBBGohAQwACwALIAQgAjsBACACIANODQVBACEKIAZBACAGQQBKGyELIAAhAQNAIAogC0YNBiADIAEoAgBGBEAgASACNgIACyAKQQFqIQogAUEEaiEBDAALAAsgBEECay4BACIBQQBKBEAgA0ECdCAAakEEaygCACICIAFB//8DcUECdCAAakEEaygCACIDSgRAIAQgAzsBAEEAIQogBkEAIAZBAEobIQsgACEBA0AgCiALRgRAIAMhAgwHCyACIAEoAgBGBEAgASADNgIACyAKQQFqIQogAUEEaiEBDAALAAsgBCACOwEAIAIgA04NBEEAIQogBkEAIAZBAEobIQsgACEBA0AgCiALRg0FIAMgASgCAEYEQCABIAI2AgALIApBAWohCiABQQRqIQEMAAsACyAEIAM7AQAgA0EcbCAOaiICQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACANajYCACAJIAJBEGsiASgCAEgEQCABIAk2AgALIAJBBGsgDTYCAAwFCyACQQBKBEAgBCACOwEAIAFBHGwgDmoiAkEcayIBIAEoAgBBAWo2AgAgAkEYayIBIAEoAgAgCWo2AgAgAkEUayIBIAEoAgAgDWo2AgAgCSACQQxrIgEoAgBKBEAg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IAcgFGohFkEBIQsDQAJAAkACQCALIBJHBEAgBSAHLQAASARAIA5B/wE6AAAgAiAVaiIELwEAIgNBEHRBEHUiAUEASgRAIAIgATsBACADQRxsIA1qIgNBBGsgDzYCACADQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACALajYCACADQRRrIgEgASgCACAPajYCAAwFCyAEQQJrLwEAIgNBEHRBEHUhASAELgECIgRBAEoEQCABQQBKBEAgBEECdCAAakEEaygCACIBIANBAnQgAGpBBGsoAgAiBEoEQCACIAQ7AQBBACEJIApBACAKQQBKGyERIAAhAwNAIAkgEUYEQCAEIQEMCAsgASADKAIARgRAIAMgBDYCAAsgCUEBaiEJIANBBGohAwwACwALIAIgATsBACABIARODQVBACEJIApBACAKQQBKGyERIAAhAwNAIAkgEUYNBiAEIAMoAgBGBEAgAyABNgIACyAJQQFqIQkgA0EEaiEDDAALAAsgAkECay4BACIDQQBKBEAgBEECdCAAakEEaygCACIBIANB//8DcUECdCAAakEEaygCACIESgRAIAIgBDsBAEEAIQkgCkEAIApBAEobIREgACEDA0AgCSARRgRAIAQhAQwHCyABIAMoAgBGBEAgAyAENgIACyAJQQFqIQkgA0EEaiEDDAALAAsgAiABOwEAIAEgBE4NBEEAIQkgCkEAIApBAEobIREgACEDA0AgCSARRg0FIAQgAygCAEYEQCADIAE2AgALIAlBAWohCSADQQRqIQMMAAsACyACIAQ7AQAgBEEcbCANaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACALajYCACADQRRrIgEgASgCACAPajYCACALIANBEGsiASgCAEgEQCABIAs2AgALIANBBGsgDzYCAAwFCyABQQBKBEAgAiABOwEAIANBHGwgDWoiA0EcayIBIAEoAgBBAWo2AgAgA0EYayIBIAEoAgAgC2o2AgAgA0EUayIBIAEoAgAgD2o2AgAgCyADQQxrIgEoAgBKBEAgASALNgIACyADQQRrIA82AgAMBQsgAkECay8BACIDQRB0QRB1IgFBAEoEQCACIAE7AQAgA0EcbCANaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACALajYCACADQRRrIgEgASgC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ACACIANODQRBACEKIAZBACAGQQBKGyELIAAhAQNAIAogC0YNBSADIAEoAgBGBEAgASACNgIACyAKQQFqIQogAUEEaiEBDAALAAsgBCADOwEAIANBHGwgDmoiAkEcayIBIAEoAgBBAWo2AgAgAkEYayIBIAEoAgAgCWo2AgAgAkEUayIBIAEoAgAgDWo2AgAgCSACQRBrIgEoAgBIBEAgASAJNgIACyACQQRrIA02AgAMBQsgAkEASgRAIAQgAjsBACABQRxsIA5qIgJBHGsiASABKAIAQQFqNgIAIAJBGGsiASABKAIAIAlqNgIAIAJBFGsiASABKAIAIA1qNgIAIAkgAkEMayIBKAIASgRAIAEgCTYCAAsgAkEEayANNgIADAULIARBAmsvAQAiAkEQdEEQdSIBQQBKBEAgBCABOwEAIAJBHGwgDmoiAkEcayIBIAEoAgBBAWo2AgAgAkEYayIBIAEoAgAgCWo2AgAgAkEUayIBIAEoAgAgDWo2AgAgAkEMayIBKAIAIAlODQUgASAJNgIADAULIAZBgIACTgRAQQBBA0HkC0EAEDZBfyEKDAkLIAQgBkEBaiIBOwEAIAAgBkECdGogAUEQdEEQdTYCACAOIAZBHGxqIgIgDTYCGCACIA02AhQgAiAJNgIQIAIgCTYCDCACIA02AgggAiAJNgIEIAJBATYCACABIQYMBAsgBEEAOwEAIAxBADoAAAwDCyAMQQJqIQwgBEEEaiEEIA1BAWohDSAIIBJqQQRqIRIMBQsgAkEQdEEQdUEcbCAOaiICQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACANajYCAAwBCyACQRB0QRB1QRxsIA5qIgJBBGsgDTYCACACQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACANajYCAAsgDEEBaiEMIARBAmohBCASQQJqIRIgCUEBaiEJDAALAAsLIAZBACAGQQBKG0EBaiEDQQEhAUEBIQwgACEJA0AgASADRwRAAkAgASAJKAIAIgJGBEAgDCIKQQFqIQwMAQsgAkECdCAAakEEaygCACEKCyAJIAo2AgAgCUEEaiEJIAFBAWohAQwBCwsgByAMQQFrIgk2AghBACAJRQ0BGiAHQYyACGohDCAH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BEGYpwQoAgBBAWoiBTYCACAAIAU2AgAgAwRAA0AgAiAEQQN0aiIGKAIARQRAIAYgBTYCACACIARBA3RqIgAgATYCBCAAQQA2AgggAyQBIAIPCyAEQQFqIgQgA0cNAAsLIAAgASACIANBBHRBCHIQ0AIgA0EBdCIAEPYEIQEgACQBIAELHwBBkKcEKAIARQRAQZCnBCAANgIAQZSnBCABNgIACwu+DwIFfw9+IwBB0AJrIgUkACAEQv///////z+DIQsgAkL///////8/gyEKIAIgBIVCgICAgICAgICAf4MhDSAEQjCIp0H//wFxIQgCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAIQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgxCgICAgICAwP//AFQgDEKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCENDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQ0gAyEBDAILIAEgDEKAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACENDAMLIA1CgICAgICAwP//AIQhDUIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAMhFAEQEKAgICAgIDg//8AIA0gAiADhFAbIQ1CACEBDAILIAIgA4RQBEAgDUKAgICAgIDA//8AhCENQgAhAQwCCyAMQv///////z9YBEAgBUHAAmogASAKIAEgCiAKUCIGG3kgBkEGdK18pyIGQQ9rEIgBQRAgBmshBiAFKQPIAiEKIAUpA8ACIQELIAJC////////P1YNACAFQbACaiADIAsgAyALIAtQIgcbeSAHQQZ0rXynIgdBD2sQiAEgBiAHakEQayEGIAUpA7gCIQsgBSkDsAIhAwsgBUGgAmogC0KAgICAgIDAAIQiEkIPhiADQjGIhCICQgBCgICAgLDmvIL1ACACfSIEQgAQggEgBUGQAmpCACAFKQOoAn1CACAEQgAQggEgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQggEgBUHwAWogBEIAQgAgBSkDiAJ9QgAQggEgBUHgAWogBSkD+AFCAYYgBSkD8AFCP4iEIgRCACACQgAQggEgBUHQAWogBEIAQgAgBSkD6AF9QgAQggEgBUHAAWogBSkD2AFCAYYgBSkD0AFCP4iEIgRCACACQgAQggEgBUGwAWogBEIAQgAgBSkDyAF9QgAQggEgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQggEgBUGQAWogA0IPhkIAIAJCABCCASAFQfAAaiACQgBCACAFKQOoASAFKQOgASIMIAUpA5gBfCIEIAxUrXwgBEIBVq18fUIAEIIBIAVBgAFqQgEgBH1CACACQgAQggEgBiAJIAhraiEGAn8gBSkDcCITQgGGIg4gBSkDiAEiD0IBhiAFKQOAAUI/iIR8IhBC5+wAfSIUQiCIIgIgCkKAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiIMQiCIIgsgECAUVq0gDiAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig4gEVStIA4gDiATQv////8PgyITIAFCP4giFyAKQgGGhEL/////D4MiCn58Ig5WrXwgBCAQfnwgBCATfiIRIAogEH58Ig8gEVStQiCGIA9CIIiEfCAOIA4gD0IghnwiDlatfCAOIA4gFEL/////D4MiFCAKfiIRIAIgC358Ig8gEVStIA8gDyATIAxC/v///w+DIhF+fCIPVq18fCIOVq18IA4gBCAUfiIYIBAgEX58IgQgAiAKfnwiCiALIBN+fCIQQiCIIAogEFatIAQgGFStIAQgClatfHxCIIaEfCIEIA5UrXwgBCAPIAIgEX4iAiALIBR+fCILQiCIIAIgC1atQiCGhHwiAiAPVK0gAiAQQiCGfCACVK18fCICIARUrXwiBEL/////////AFgEQCAWIBeEIRUgBUHQAGogAiAEIAMgEhCCASABQjGGIAUpA1h9IAUpA1AiAUIAUq19IQpCACABfSELIAZB/v8AagwBCyAFQeAAaiAEQj+GIAJCAYiEIgIgBEIBiCIEIAMgEhCCASABQjCGIAUpA2h9IAUpA2AiDEIAUq19IQpCACAMfSELIAEhDCAGQf//AGoLIgZB//8BTgRAIA1CgICAgICAwP//AIQhDUIAIQEMAQsCfiAGQQBKBEAgCkIBhiALQj+IhCEKIARC////////P4MgBq1CMIaEIQwgC0IBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAIgBEEBIAZrEP4BIAVBMGogDCAVIAZB8ABqEIgBIAVBIGogAyASIAUpA0AiAiAFKQNIIgwQggEgBSkDOCAFKQMoQgGGIAUpAyAiAUI/iIR9IAUpAzAiBCABQgGGIgFUrX0hCiAEIAF9CyEEIAVBEGogAyASQgNCABCCASAFIAMgEkIFQgAQggEgDCACIAIgAyACQgGDIgEgBHwiA1QgCiABIANWrXwiASASViABIBJRG618IgJWrXwiBCACIAIgBEKAgICAgIDA//8AVCADIAUpAxBWIAEgBSkDGCIEViABIARRG3GtfCICVq18IgQgAiAEQoCAgICAgMD//wBUIAMgBSkDAFYgASAFKQMIIgNWIAEgA1Ebca18IgEgAlStfCANhCENCyAAIAE3AwAgACANNwMIIAVB0AJqJAALxAECAX8CfkF/IQMCQCAAQgBSIAFC////////////AIMiBEKAgICAgIDA//8AViAEQoCAgICAgMD//wBRGw0AQQAgAkL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgACAEIAWEhFAEQEEADwsgASACg0IAWQRAQQAgASACUyABIAJRGw0BIAAgASAChYRCAFIPCyAAQgBSIAEgAlUgASACURsNACAAIAEgAoWEQgBSIQMLIAMLiQwBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkAgACACayIAQbSjBCgCAEcEQCACQf8BTQRAIAAoAggiBCACQQN2IgJBA3RByKMEakYaIAAoAgwiAyAERw0CQaCjBEGgowQoAgBBfiACd3E2AgAMAwsgACgCGCEGAkAgACAAKAIMIgJHBEAgACgCCCIDQbCjBCgCAEkaIAMgAjYCDCACIAM2AggMAQsCQCAAQRRqIgQoAgAiAw0AIABBEGoiBCgCACIDDQBBACECDAELA0AgBCEHIAMiAkEUaiIEKAIAIgMNACACQRBqIQQgAigCECIDDQALIAdBADYCAAsgBkUNAgJAIAAoAhwiBEECdEHQpQRqIgMoAgAgAEYEQCADIAI2AgAgAg0BQaSjBEGkowQoAgBBfiAEd3E2AgAMBAsgBkEQQRQgBigCECAARhtqIAI2AgAgAkUNAwsgAiAGNgIYIAAoAhAiAwRAIAIgAzYCECADIAI2AhgLIAAoAhQiA0UNAiACIAM2AhQgAyACNgIYDAILIAUoAgQiAkEDcUEDRw0BQaijBCABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAsCQCAFKAIEIgJBAnFFBEBBuKMEKAIAIAVGBEBBuKMEIAA2AgBBrKMEQayjBCgCACABaiIBNgIAIAAgAUEBcjYCBCAAQbSjBCgCAEcNA0GoowRBADYCAEG0owRBADYCAA8LQbSjBCgCACAFRgRAQbSjBCAANgIAQaijBEGoowQoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIADwsgAkF4cSABaiEBAkAgAkH/AU0EQCAFKAIIIgQgAkEDdiICQQN0QcijBGpGGiAEIAUoAgwiA0YEQEGgowRBoKMEKAIAQX4gAndxNgIADAILIAQgAzYCDCADIAQ2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgJHBEAgBSgCCCIDQbCjBCgCAEkaIAMgAjYCDCACIAM2AggMAQsCQCAFQRRqIgMoAgAiBA0AIAVBEGoiAygCACIEDQBBACECDAELA0AgAyEHIAQiAkEUaiIDKAIAIgQNACACQRBqIQMgAigCECIEDQALIAdBADYCAAsgBkUNAAJAIAUoAhwiBEECdEHQpQRqIgMoAgAgBUYEQCADIAI2AgAgAg0BQaSjBEGkowQoAgBBfiAEd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAI2AgAgAkUNAQsgAiAGNgIYIAUoAhAiAwRAIAIgAzYCECADIAI2AhgLIAUoAhQiA0UNACACIAM2AhQgAyACNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABBtKMEKAIARw0BQaijBCABNgIADwsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgALIAFB/wFNBEAgAUF4cUHIowRqIQICf0GgowQoAgAiA0EBIAFBA3Z0IgFxRQRAQaCjBCABIANyNgIAIAIMAQsgAigCCAshASACIAA2AgggASAANgIMIAAgAjYCDCAAIAE2AggPC0EfIQQgAUH///8HTQRAIAFBCHYiAiACQYD+P2pBEHZBCHEiBHQiAiACQYDgH2pBEHZBBHEiA3QiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAEciACcmsiAkEBdCABIAJBFWp2QQFxckEcaiEECyAAIAQ2AhwgAEIANwIQIARBAnRB0KUEaiEHAkACQEGkowQoAgAiA0EBIAR0IgJxRQRAQaSjBCACIANyNgIAIAcgADYCACAAIAc2AhgMAQsgAUEAQRkgBEEBdmsgBEEfRht0IQQgBygCACECA0AgAiIDKAIEQXhxIAFGDQIgBEEddiECIARBAXQhBCADIAJBBHFqIgdBEGooAgAiAg0ACyAHIAA2AhAgACADNgIYCyAAIAA2AgwgACAANgIIDwsgAygCCCIBIAA2AgwgAyAANgIIIABBADYCGCAAIAM2AgwgACABNgIICwsSACAARQRAQQAPCyAAIAEQ2AMLdAEDfyAARQRAQQBBA0GGwABBABA2DwsgACgCACIBRQRADwsgASgCABAxQQAhAQN/IAAoAgAiAygCCCECIAMoAgwgAUwEfyACEDEgACgCABAxIABBADYCAEEABSACIAFBDGxqKAIAEDEgAUEBaiEBDAELCxoL5R4CD38FfiMAQZABayIEJAAgBEEAQZABEDkiA0F/NgJMIAMgADYCLCADQYMCNgIgIAMgADYCVCABIQQgAiEOQQAhACMAQbACayIGJAAgAygCTBoCQAJAAkACQCADKAIEDQAgAxCRAxogAygCBA0ADAELIAQtAAAiAUUNAgJAAkACQAJAA0ACQAJAIAFB/wFxEN0BBEADQCAEIgFBAWohBCABLQABEN0BDQALIANCABDEAQNAAn8gAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAMAQsgAxBRCxDdAQ0ACyADKAIEIQQgAykDcEIAWQRAIAMgBEEBayIENgIECyAEIAMoAixrrCADKQN4IBR8fCEUDAELAn8CQAJAIAQtAABBJUYEQCAELQABIgFBKkYNASABQSVHDQILIANCABDEAQJAIAQtAABBJUYEQANAAn8gAygCBCIBIAMoAmhHBEAgAyABQQFqNgIEIAEtAAAMAQsgAxBRCyIBEN0BDQALIARBAWohBAwBCyADKAIEIgEgAygCaEcEQCADIAFBAWo2AgQgAS0AACEBDAELIAMQUSEBCyAELQAAIAFHBEAgAykDcEIAWQRAIAMgAygCBEEBazYCBAsgAUEATg0NQQAhByANDQ0MCwsgAygCBCADKAIsa6wgAykDeCAUfHwhFCAEIQEMAwtBACEIIARBAmoMAQsCQCABEK4BRQ0AIAQtAAJBJEcNACAELQABQTBrIQEjAEEQayICIA42AgwgAiAOIAFBAnRBBGtBACABQQFLG2oiAUEEajYCCCABKAIAIQggBEEDagwBCyAOKAIAIQggDkEEaiEOIARBAWoLIQFBACEMQQAhBCABLQAAEK4BBEADQCABLQAAIARBCmxqQTBrIQQgAS0AASECIAFBAWohASACEK4BDQALCyABLQAAIgpB7QBHBH8gAQVBACEJIAhBAEchDCABLQABIQpBACEAIAFBAWoLIgJBAWohAUEDIQUgDCEHAkACQAJAAkACQAJAIApBwQBrDjoEDAQMBAQEDAwMDAMMDAwMDAwEDAwMDAQMDAQMDAwMDAQMBAQEBAQABAUMAQwEBAQMDAQCBAwMBAwCDAsgAkECaiABIAItAAFB6ABGIgIbIQFBfkF/IAIbIQUMBAsgAkECaiABIAItAAFB7ABGIgIbIQFBA0EBIAIbIQUMAwtBASEFDAILQQIhBQwBC0EAIQUgAiEBC0EBIAUgAS0AACICQS9xQQNGIgUbIQ8CQCACQSByIAIgBRsiC0HbAEYNAAJAIAtB7gBHBEAgC0HjAEcNASAEQQEgBEEBShshBAwCCyAIIA8gFBD+BAwCCyADQgAQxAEDQAJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQUQsQ3QENAAsgAygCBCECIAMpA3BCAFkEQCADIAJBAWsiAjYCBAsgAiADKAIsa6wgAykDeCAUfHwhFAsgAyAErCISEMQBAkAgAygCBCICIAMoAmhHBEAgAyACQQFqNgIEDAELIAMQUUEASA0GCyADKQNwQgBZBEAgAyADKAIEQQFrNgIEC0EQIQICQAJAAkACQAJAAkACQAJAAkACQCALQdgAaw4hBgkJAgkJCQkJAQkCBAEBAQkFCQkJCQkDBgkJAgkECQkGAAsgC0HBAGsiAkEGS0EBIAJ0QfEAcUVyDQgLIAZBCGogAyAPQQAQgAUgAykDeEIAIAMoAgQgAygCLGusfVINBQwMCyALQRByQfMARgRAIAZBIGpBf0GBAhA5GiAGQQA6ACAgC0HzAEcNBiAGQQA6AEEgBkEAOgAuIAZBADYBKgwGCyAGQSBqIAEtAAEiAkHeAEYiBUGBAhA5GiAGQQA6ACAgAUECaiABQQFqIAUbIQcCfwJAAkAgAUECQQEgBRtqLQAAIgFBLUcEQCABQd0ARg0BIAJB3gBHIQUgBwwDCyAGIAJB3gBHIgU6AE4MAQsgBiACQd4ARyIFOgB+CyAHQQFqCyEBA0ACQCABLQAAIgJBLUcEQCACRQ0PIAJB3QBGDQgMAQtBLSECIAEtAAEiB0UgB0HdAEZyDQAgAUEBaiEKAkAgByABQQFrLQAAIgFNBEAgByECDAELA0AgAUEBaiIBIAZBIGpqIAU6AAAgASAKLQAAIgJJDQALCyAKIQELIAIgBmogBToAISABQQFqIQEMAAsAC0EIIQIMAgtBCiECDAELQQAhAgtCACESQQAhBUEAIQdBACEKIwBBEGsiECQAAkAgAkEBRyACQSRNcUUEQEGImQRBHDYCAAwBCwNAAn8gAygCBCIEIAMoAmhHBEAgAyAEQQFqNgIEIAQtAAAMAQsgAxBRCyIEEN0BDQALAkACQCAEQStrDgMAAQABC0F/QQAgBEEtRhshCiADKAIEIgQgAygCaEcEQCADIARBAWo2AgQgBC0AACEEDAELIAMQUSEECwJAAkACQAJAIAJBAEcgAkEQR3EgBEEwR3JFBEACfyADKAIEIgQgAygCaEcEQCADIARBAWo2AgQgBC0AAAwBCyADEFELIgRBX3FB2ABGBEBBECECAn8gAygCBCIEIAMoAmhHBEAgAyAEQQFqNgIEIAQtAAAMAQsgAxBRCyIEQYGOA2otAABBEEkNAyADKQNwQgBZBEAgAyADKAIEQQFrNgIECyADQgAQxAEMBgsgAg0BQQghAgwCCyACQQogAhsiAiAEQYGOA2otAABLDQAgAykDcEIAWQRAIAMgAygCBEEBazYCBAsgA0IAEMQBQYiZBEEcNgIADAQLIAJBCkcNACAEQTBrIgVBCU0EQEEAIQIDQCACQQpsIAVqIgJBmbPmzAFJAn8gAygCBCIEIAMoAmhHBEAgAyAEQQFqNgIEIAQtAAAMAQsgAxBRCyIEQTBrIgVBCU1xDQALIAKtIRILAkAgBUEJSw0AIBJCCn4hEyAFrSEVA0ACfyADKAIEIgIgAygCaEcEQCADIAJBAWo2AgQgAi0AAAwBCyADEFELIgRBMGsiBUEJSyATIBV8IhJCmrPmzJmz5swZWnINASASQgp+IhMgBa0iFUJ/hVgNAAtBCiECDAILQQohAiAFQQlNDQEMAgsgAiACQQFrcQRAIARBgY4Dai0AACIHIAJJBEADQCACIAVsIAdqIgVBx+PxOEkCfyADKAIEIgQgAygCaEcEQCADIARBAWo2AgQgBC0AAAwBCyADEFELIgRBgY4Dai0AACIHIAJJcQ0ACyAFrSESCyACIAdNDQEgAq0hEwNAIBIgE34iFSAHrUL/AYMiFkJ/hVYNAiAVIBZ8IRIgAgJ/IAMoAgQiBCADKAJoRwRAIAMgBEEBajYCBCAELQAADAELIAMQUQsiBEGBjgNqLQAAIgdNDQIgECATQgAgEkIAEIIBIBApAwhQDQALDAELIAJBF2xBBXZBB3FBgZADaiwAACERIARBgY4Dai0AACIFIAJJBEADQCAHIBF0IAVyIgdBgICAwABJAn8gAygCBCIEIAMoAmhHBEAgAyAEQQFqNgIEIAQtAAAMAQsgAxBRCyIEQYGOA2otAAAiBSACSXENAAsgB60hEgsgAiAFTQ0AQn8gEa0iE4giFSASVA0AA0AgBa1C/wGDIBIgE4aEIRIgAgJ/IAMoAgQiBCADKAJoRwRAIAMgBEEBajYCBCAELQAADAELIAMQUQsiBEGBjgNqLQAAIgVNDQEgEiAVWA0ACwsgAiAEQYGOA2otAABNDQADQCACAn8gAygCBCIEIAMoAmhHBEAgAyAEQQFqNgIEIAQtAAAMAQsgAxBRC0GBjgNqLQAASw0AC0GImQRBxAA2AgBBACEKQn8hEgsgAykDcEIAWQRAIAMgAygCBEEBazYCBAtBACASQn9RIApBAXIbBEBBiJkEQcQANgIAQn4hEgwBCyASIAqsIhOFIBN9IRILIBBBEGokACADKQN4QgAgAygCBCADKAIsa6x9UQ0HIAhFIAtB8ABHckUEQCAIIBI+AgAMAwsgCCAPIBIQ/gQMAgsgCEUNASAGKQMQIRIgBikDCCETAkACQAJAIA8OAwABAgQLIAggEyASEPQEOAIADAMLIAggEyASENYDOQMADAILIAggEzcDACAIIBI3AwgMAQsgBEEBakEfIAtB4wBGIgobIQUCQCAPQQFGBEAgCCECIAwEQCAFQQJ0EDciAkUNBwsgBkIANwOoAkEAIQQDQCACIQACQANAAn8gAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAMAQsgAxBRCyICIAZqLQAhRQ0BIAYgAjoAGyAGQRxqIAZBG2pBASAGQagCahCIAyICQX5GDQBBACEJIAJBf0YNCyAABEAgACAEQQJ0aiAGKAIcNgIAIARBAWohBAsgDCAEIAVGcUUNAAtBASEHIAAgBUEBdEEBciIFQQJ0ENACIgINAQwLCwtBACEJIAAhBSAGQagCagR/IAYoAqgCBUEACw0IDAELIAwEQEEAIQQgBRA3IgJFDQYDQCACIQADQAJ/IAMoAgQiAiADKAJoRwRAIAMgAkEBajYCBCACLQAADAELIAMQUQsiAiAGai0AIUUEQEEAIQUgACEJDAQLIAAgBGogAjoAACAEQQFqIgQgBUcNAAtBASEHIAAgBUEBdEEBciIFENACIgINAAsgACEJQQAhAAwJC0EAIQQgCARAA0ACfyADKAIEIgAgAygCaEcEQCADIABBAWo2AgQgAC0AAAwBCyADEFELIgAgBmotACEEQCAEIAhqIAA6AAAgBEEBaiEEDAEFQQAhBSAIIgAhCQwDCwALAAsDQAJ/IAMoAgQiACADKAJoRwRAIAMgAEEBajYCBCAALQAADAELIAMQUQsgBmotACENAAtBACEAQQAhCUEAIQULIAMoAgQhAiADKQNwQgBZBEAgAyACQQFrIgI2AgQLIAMpA3ggAiADKAIsa6x8IhNQIAtB4wBGIBIgE1Jxcg0CIAwEQCAIIAA2AgALAkAgCg0AIAUEQCAFIARBAnRqQQA2AgALIAlFBEBBACEJDAELIAQgCWpBADoAAAsgBSEACyADKAIEIAMoAixrrCADKQN4IBR8fCEUIA0gCEEAR2ohDQsgAUEBaiEEIAEtAAEiAQ0BDAgLCyAFIQAMAQtBASEHQQAhCUEAIQAMAgsgDCEHDAMLIAwhBwsgDQ0BC0F/IQ0LIAdFDQAgCRAxIAAQMQsgBkGwAmokACANIQAgA0GQAWokACAAC0MAAkAgAEUNAAJAAkACQAJAIAFBAmoOBgABAgIEAwQLIAAgAjwAAA8LIAAgAj0BAA8LIAAgAj4CAA8LIAAgAjcDAAsLkAQCA38BfgJAAkACfwJAAkACfyAAKAIEIgIgACgCaEcEQCAAIAJBAWo2AgQgAi0AAAwBCyAAEFELIgJBK2sOAwABAAELIAJBLUYgAUUCfyAAKAIEIgMgACgCaEcEQCAAIANBAWo2AgQgAy0AAAwBCyAAEFELIgNBOmsiAUF1S3INARogACkDcEIAUw0CIAAgACgCBEEBazYCBAwCCyACQTprIQEgAiEDQQALIQQgAUF2SQ0AIANBMGsiAUEKSQRAQQAhAgNAIAMgAkEKbGohAQJ/IAAoAgQiAiAAKAJoRwRAIAAgAkEBajYCBCACLQAADAELIAAQUQshAyABQTBrIQIgAkHMmbPmAEggA0EwayIBQQlNcQ0ACyACrCEFCwJAIAFBCk8NAANAIAOtIAVCCn58QjB9IQUCfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAEFELIgNBMGsiAUEJSw0BIAVCro+F18fC66MBUw0ACwsgAUEKSQRAA0ACfyAAKAIEIgEgACgCaEcEQCAAIAFBAWo2AgQgAS0AAAwBCyAAEFELQTBrQQpJDQALCyAAKQNwQgBZBEAgACAAKAIEQQFrNgIEC0IAIAV9IAUgBBshBQwBC0KAgICAgICAgIB/IQUgACkDcEIAUw0AIAAgACgCBEEBazYCBEKAgICAgICAgIB/DwsgBQvRMgMQfwd+AXwjAEEwayIMJAACQCACQQJNBEAgAkECdCICQeyNA2ooAgAhDyACQeCNA2ooAgAhDgNAAn8gASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAMAQsgARBRCyICEN0BDQALQQEhBgJAAkAgAkEraw4DAAEAAQtBf0EBIAJBLUYbIQYgASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAhAgwBCyABEFEhAgsCQAJAA0AgBUHJ5AFqLAAAIAJBIHJGBEACQCAFQQZLDQAgASgCBCICIAEoAmhHBEAgASACQQFqNgIEIAItAAAhAgwBCyABEFEhAgsgBUEBaiIFQQhHDQEMAgsLIAVBA0cEQCAFQQhGDQEgA0UgBUEESXINAiAFQQhGDQELIAEpA3AiFEIAWQRAIAEgASgCBEEBazYCBAsgA0UgBUEESXINACAUQgBTIQIDQCACRQRAIAEgASgCBEEBazYCBAsgBUEBayIFQQNLDQALC0IAIRQjAEEQayICJAACfiAGskMAAIB/lLwiA0H/////B3EiAUGAgIAEa0H////3B00EQCABrUIZhkKAgICAgICAwD98DAELIAOtQhmGQoCAgICAgMD//wCEIAFBgICA/AdPDQAaQgAgAUUNABogAiABrUIAIAFnIgFB0QBqEIgBIAIpAwAhFCACKQMIQoCAgICAgMAAhUGJ/wAgAWutQjCGhAshFSAMIBQ3AwAgDCAVIANBgICAgHhxrUIghoQ3AwggAkEQaiQAIAwpAwghFCAMKQMAIRUMAgsCQAJAAkAgBQ0AQQAhBQNAIAVB3PoBaiwAACACQSByRw0BAkAgBUEBSw0AIAEoAgQiAiABKAJoRwRAIAEgAkEBajYCBCACLQAAIQIMAQsgARBRIQILIAVBAWoiBUEDRw0ACwwBCwJAAkAgBQ4EAAEBAgELAkAgAkEwRw0AAn8gASgCBCIFIAEoAmhHBEAgASAFQQFqNgIEIAUtAAAMAQsgARBRC0FfcUHYAEYEQCMAQbADayICJAACfyABKAIEIgUgASgCaEcEQCABIAVBAWo2AgQgBS0AAAwBCyABEFELIQUCQAJ/A0AgBUEwRwRAAkAgBUEuRw0EIAEoAgQiBSABKAJoRg0AIAEgBUEBajYCBCAFLQAADAMLBSABKAIEIgUgASgCaEcEf0EBIQogASAFQQFqNgIEIAUtAAAFQQEhCiABEFELIQUMAQsLIAEQUQshBUEBIQQgBUEwRw0AA0AgF0IBfSEXAn8gASgCBCIFIAEoAmhHBEAgASAFQQFqNgIEIAUtAAAMAQsgARBRCyIFQTBGDQALQQEhCgtCgICAgICAwP8/IRUDQAJAIAVBIHIhCwJAAkAgBUEwayIIQQpJDQAgBUEuRyALQeEAa0EGT3ENAiAFQS5HDQAgBA0CQQEhBCAUIRcMAQsgC0HXAGsgCCAFQTlKGyEFAkAgFEIHVwRAIAUgCUEEdGohCQwBCyAUQhxYBEAgAkEwaiAFEKMBIAJBIGogGSAVQgBCgICAgICAwP0/EF0gAkEQaiACKQMwIAIpAzggAikDICIZIAIpAygiFRBdIAIgAikDECACKQMYIBYgGBCdASACKQMIIRggAikDACEWDAELIAVFIAdyDQAgAkHQAGogGSAVQgBCgICAgICAgP8/EF0gAkFAayACKQNQIAIpA1ggFiAYEJ0BIAIpA0ghGEEBIQcgAikDQCEWCyAUQgF8IRRBASEKCyABKAIEIgUgASgCaEcEfyABIAVBAWo2AgQgBS0AAAUgARBRCyEFDAELCwJ+IApFBEACQAJAIAEpA3BCAFkEQCABIAEoAgQiBUEBazYCBCADRQ0BIAEgBUECazYCBCAERQ0CIAEgBUEDazYCBAwCCyADDQELIAFCABDEAQsgAkHgAGogBrdEAAAAAAAAAACiEM4BIAIpA2AhFiACKQNoDAELIBRCB1cEQCAUIRUDQCAJQQR0IQkgFUIBfCIVQghSDQALCwJAAkACQCAFQV9xQdAARgRAIAEgAxD/BCIVQoCAgICAgICAgH9SDQMgAwRAIAEpA3BCAFkNAgwDC0IAIRYgAUIAEMQBQgAMBAtCACEVIAEpA3BCAFMNAgsgASABKAIEQQFrNgIEC0IAIRULIAlFBEAgAkHwAGogBrdEAAAAAAAAAACiEM4BIAIpA3AhFiACKQN4DAELIBcgFCAEG0IChiAVfEIgfSIUQQAgD2utVQRAQYiZBEHEADYCACACQaABaiAGEKMBIAJBkAFqIAIpA6ABIAIpA6gBQn9C////////v///ABBdIAJBgAFqIAIpA5ABIAIpA5gBQn9C////////v///ABBdIAIpA4ABIRYgAikDiAEMAQsgD0HiAWusIBRXBEAgCUEATgRAA0AgAkGgA2ogFiAYQgBCgICAgICAwP+/fxCdASAWIBhCgICAgICAgP8/EPkEIQEgAkGQA2ogFiAYIBYgAikDoAMgAUEASCIDGyAYIAIpA6gDIAMbEJ0BIBRCAX0hFCACKQOYAyEYIAIpA5ADIRYgCUEBdCABQQBOciIJQQBODQALCwJ+IBQgD6x9QiB8IhWnIgFBACABQQBKGyAOIBUgDq1TGyIBQfEATgRAIAJBgANqIAYQowEgAikDiAMhFyACKQOAAyEZQgAMAQsgAkHgAmpEAAAAAAAA8D9BkAEgAWsQ6AEQzgEgAkHQAmogBhCjASACQfACaiACKQPgAiACKQPoAiACKQPQAiIZIAIpA9gCIhcQgwUgAikD+AIhGiACKQPwAgshFSACQcACaiAJIAlBAXFFIBYgGEIAQgAQ/wFBAEcgAUEgSHFxIgFqEJ0CIAJBsAJqIBkgFyACKQPAAiACKQPIAhBdIAJBkAJqIAIpA7ACIAIpA7gCIBUgGhCdASACQaACaiAZIBdCACAWIAEbQgAgGCABGxBdIAJBgAJqIAIpA6ACIAIpA6gCIAIpA5ACIAIpA5gCEJ0BIAJB8AFqIAIpA4ACIAIpA4gCIBUgGhDXAyACKQPwASIVIAIpA/gBIhdCAEIAEP8BRQRAQYiZBEHEADYCAAsgAkHgAWogFSAXIBSnEIIFIAIpA+ABIRYgAikD6AEMAQtBiJkEQcQANgIAIAJB0AFqIAYQowEgAkHAAWogAikD0AEgAikD2AFCAEKAgICAgIDAABBdIAJBsAFqIAIpA8ABIAIpA8gBQgBCgICAgICAwAAQXSACKQOwASEWIAIpA7gBCyEUIAwgFjcDECAMIBQ3AxggAkGwA2okACAMKQMYIRQgDCkDECEVDAYLIAEpA3BCAFMNACABIAEoAgRBAWs2AgQLIAEhBSAGIQkgAyEKQQAhA0EAIQYjAEGQxgBrIgQkAEEAIA4gD2oiEmshEwJAAn8DQCACQTBHBEACQCACQS5HDQQgBSgCBCIBIAUoAmhGDQAgBSABQQFqNgIEIAEtAAAMAwsFIAUoAgQiASAFKAJoRwR/QQEhAyAFIAFBAWo2AgQgAS0AAAVBASEDIAUQUQshAgwBCwsgBRBRCyECQQEhByACQTBHDQADQCAUQgF9IRQCfyAFKAIEIgEgBSgCaEcEQCAFIAFBAWo2AgQgAS0AAAwBCyAFEFELIgJBMEYNAAtBASEDCyAEQQA2ApAGIAwCfgJAAkACQAJAAkAgAkEuRiIBIAJBMGsiCEEJTXIEQANAAkAgAUEBcQRAIAdFBEAgFSEUQQEhBwwCCyADRSEBDAQLIBVCAXwhFSAGQfwPTARAIA0gFacgAkEwRhshDSAEQZAGaiAGQQJ0aiIBIAsEfyACIAEoAgBBCmxqQTBrBSAICzYCAEEBIQNBACALQQFqIgEgAUEJRiIBGyELIAEgBmohBgwBCyACQTBGDQAgBCAEKAKARkEBcjYCgEZB3I8BIQ0LAn8gBSgCBCIBIAUoAmhHBEAgBSABQQFqNgIEIAEtAAAMAQsgBRBRCyICQS5GIgEgAkEwayIIQQpJcg0ACwsgFCAVIAcbIRQgA0UgAkFfcUHFAEdyRQRAAkAgBSAKEP8EIhZCgICAgICAgICAf1INACAKRQ0FQgAhFiAFKQNwQgBTDQAgBSAFKAIEQQFrNgIECyADRQ0DIBQgFnwhFAwFCyADRSEBIAJBAEgNAQsgBSkDcEIAUw0AIAUgBSgCBEEBazYCBAsgAUUNAgtBiJkEQRw2AgALQgAhFSAFQgAQxAFCAAwBCyAEKAKQBiIBRQRAIAQgCbdEAAAAAAAAAACiEM4BIAQpAwAhFSAEKQMIDAELIBQgFVIgFUIJVXIgDkEeTEEAIAEgDnYbckUEQCAEQTBqIAkQowEgBEEgaiABEJ0CIARBEGogBCkDMCAEKQM4IAQpAyAgBCkDKBBdIAQpAxAhFSAEKQMYDAELIA9Bfm2tIBRTBEBBiJkEQcQANgIAIARB4ABqIAkQowEgBEHQAGogBCkDYCAEKQNoQn9C////////v///ABBdIARBQGsgBCkDUCAEKQNYQn9C////////v///ABBdIAQpA0AhFSAEKQNIDAELIA9B4gFrrCAUVQRAQYiZBEHEADYCACAEQZABaiAJEKMBIARBgAFqIAQpA5ABIAQpA5gBQgBCgICAgICAwAAQXSAEQfAAaiAEKQOAASAEKQOIAUIAQoCAgICAgMAAEF0gBCkDcCEVIAQpA3gMAQsgCwRAIAtBCEwEQCAEQZAGaiAGQQJ0aiIBKAIAIQUDQCAFQQpsIQUgC0EBaiILQQlHDQALIAEgBTYCAAsgBkEBaiEGCwJAIA0gFKciB0ogDUEJTnIgB0ERSnINACAHQQlGBEAgBEHAAWogCRCjASAEQbABaiAEKAKQBhCdAiAEQaABaiAEKQPAASAEKQPIASAEKQOwASAEKQO4ARBdIAQpA6ABIRUgBCkDqAEMAgsgB0EITARAIARBkAJqIAkQowEgBEGAAmogBCgCkAYQnQIgBEHwAWogBCkDkAIgBCkDmAIgBCkDgAIgBCkDiAIQXSAEQeABakEAIAdrQQJ0QeCNA2ooAgAQowEgBEHQAWogBCkD8AEgBCkD+AEgBCkD4AEgBCkD6AEQ+AQgBCkD0AEhFSAEKQPYAQwCCyAOIAdBfWxqQRtqIgFBHkxBACAEKAKQBiICIAF2Gw0AIARB4AJqIAkQowEgBEHQAmogAhCdAiAEQcACaiAEKQPgAiAEKQPoAiAEKQPQAiAEKQPYAhBdIARBsAJqIAdBAnRBmI0DaigCABCjASAEQaACaiAEKQPAAiAEKQPIAiAEKQOwAiAEKQO4AhBdIAQpA6ACIRUgBCkDqAIMAQsDQCAEQZAGaiAGIgJBAWsiBkECdGooAgBFDQALQQAhCwJAIAdBCW8iA0UEQEEAIQEMAQtBACEBIANBCWogAyAHQQBIGyEDAkAgAkUEQEEAIQIMAQtBgJTr3ANBACADa0ECdEHgjQNqKAIAIgZtIQpBACEIQQAhBQNAIARBkAZqIAVBAnRqIg0gCCANKAIAIg0gBm4iEGoiCDYCACABQQFqQf8PcSABIAhFIAEgBUZxIggbIQEgB0EJayAHIAgbIQcgCiANIAYgEGxrbCEIIAVBAWoiBSACRw0ACyAIRQ0AIARBkAZqIAJBAnRqIAg2AgAgAkEBaiECCyAHIANrQQlqIQcLA0AgBEGQBmogAUECdGohBQJAA0AgB0EkTgRAIAdBJEcNAiAFKAIAQdHp+QRPDQILIAJB/w9qIQNBACEIA0AgCK0gBEGQBmogA0H/D3EiBkECdGoiAzUCAEIdhnwiFEKBlOvcA1QEf0EABSAUIBRCgJTr3AOAIhVCgJTr3AN+fSEUIBWnCyEIIAMgFKciAzYCACACIAIgAiAGIAMbIAEgBkYbIAYgAkEBa0H/D3FHGyECIAZBAWshAyABIAZHDQALIAtBHWshCyAIRQ0ACyACIAFBAWtB/w9xIgFGBEAgBEGQBmoiAyACQf4PakH/D3FBAnRqIgYgBigCACACQQFrQf8PcSICQQJ0IANqKAIAcjYCAAsgB0EJaiEHIARBkAZqIAFBAnRqIAg2AgAMAQsLAkADQCACQQFqQf8PcSEGIARBkAZqIAJBAWtB/w9xQQJ0aiEIA0BBCUEBIAdBLUobIQoCQANAIAEhA0EAIQUCQANAAkAgAyAFakH/D3EiASACRg0AIARBkAZqIAFBAnRqKAIAIgEgBUECdEGwjQNqKAIAIg1JDQAgASANSw0CIAVBAWoiBUEERw0BCwsgB0EkRw0AQgAhFEEAIQVCACEVA0AgAiADIAVqQf8PcSIBRgRAIAJBAWpB/w9xIgJBAnQgBGpBADYCjAYLIARBgAZqIARBkAZqIAFBAnRqKAIAEJ0CIARB8AVqIBQgFUIAQoCAgIDlmreOwAAQXSAEQeAFaiAEKQPwBSAEKQP4BSAEKQOABiAEKQOIBhCdASAEKQPoBSEVIAQpA+AFIRQgBUEBaiIFQQRHDQALIARB0AVqIAkQowEgBEHABWogFCAVIAQpA9AFIAQpA9gFEF0gBCkDyAUhFUIAIRQgBCkDwAUhFiALQfEAaiIHIA9rIgZBACAGQQBKGyAOIAYgDkgiBRsiAUHwAEwNAgwFCyAKIAtqIQsgAyACIgFGDQALQYCU69wDIAp2IQ1BfyAKdEF/cyEQQQAhBSADIQEDQCAEQZAGaiADQQJ0aiIRIAUgESgCACIRIAp2aiIFNgIAIAFBAWpB/w9xIAEgBUUgASADRnEiBRshASAHQQlrIAcgBRshByAQIBFxIA1sIQUgA0EBakH/D3EiAyACRw0ACyAFRQ0BIAEgBkcEQCAEQZAGaiACQQJ0aiAFNgIAIAYhAgwDCyAIIAgoAgBBAXI2AgAMAQsLCyAEQZAFakQAAAAAAADwP0HhASABaxDoARDOASAEQbAFaiAEKQOQBSAEKQOYBSAWIBUQgwUgBCkDuAUhGSAEKQOwBSEYIARBgAVqRAAAAAAAAPA/QfEAIAFrEOgBEM4BIARBoAVqIBYgFSAEKQOABSAEKQOIBRCBBSAEQfAEaiAWIBUgBCkDoAUiFCAEKQOoBSIXENcDIARB4ARqIBggGSAEKQPwBCAEKQP4BBCdASAEKQPoBCEVIAQpA+AEIRYLAkAgA0EEakH/D3EiCiACRg0AAkAgBEGQBmogCkECdGooAgAiCkH/ybXuAU0EQCAKRSADQQVqQf8PcSACRnENASAEQfADaiAJt0QAAAAAAADQP6IQzgEgBEHgA2ogFCAXIAQpA/ADIAQpA/gDEJ0BIAQpA+gDIRcgBCkD4AMhFAwBCyAKQYDKte4BRwRAIARB0ARqIAm3RAAAAAAAAOg/ohDOASAEQcAEaiAUIBcgBCkD0AQgBCkD2AQQnQEgBCkDyAQhFyAEKQPABCEUDAELIAm3IRsgAiADQQVqQf8PcUYEQCAEQZAEaiAbRAAAAAAAAOA/ohDOASAEQYAEaiAUIBcgBCkDkAQgBCkDmAQQnQEgBCkDiAQhFyAEKQOABCEUDAELIARBsARqIBtEAAAAAAAA6D+iEM4BIARBoARqIBQgFyAEKQOwBCAEKQO4BBCdASAEKQOoBCEXIAQpA6AEIRQLIAFB7wBKDQAgBEHQA2ogFCAXQgBCgICAgICAwP8/EIEFIAQpA9ADIAQpA9gDQgBCABD/AQ0AIARBwANqIBQgF0IAQoCAgICAgMD/PxCdASAEKQPIAyEXIAQpA8ADIRQLIARBsANqIBYgFSAUIBcQnQEgBEGgA2ogBCkDsAMgBCkDuAMgGCAZENcDIAQpA6gDIRUgBCkDoAMhFgJAQX4gEmsgB0H/////B3FODQAgBCAVQv///////////wCDNwOYAyAEIBY3A5ADIARBgANqIBYgFUIAQoCAgICAgID/PxBdIAQpA5ADIAQpA5gDQoCAgICAgIC4wAAQ+QQhAiAVIAQpA4gDIAJBAEgiAxshFSAWIAQpA4ADIAMbIRZBACATIAsgAkEATmoiC0HuAGpOIBQgF0IAQgAQ/wFBAEcgBSAFIAEgBkdxIAMbcRsNAEGImQRBxAA2AgALIARB8AJqIBYgFSALEIIFIAQpA/ACIRUgBCkD+AILNwMoIAwgFTcDICAEQZDGAGokACAMKQMoIRQgDCkDICEVDAQLIAEpA3BCAFkEQCABIAEoAgRBAWs2AgQLDAELAkACfyABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AAAwBCyABEFELQShGBEBBASEFDAELQoCAgICAgOD//wAhFCABKQNwQgBTDQMgASABKAIEQQFrNgIEDAMLA0ACfyABKAIEIgIgASgCaEcEQCABIAJBAWo2AgQgAi0AAAwBCyABEFELIgJBMGtBCkkgAkHBAGtBGklyIAJB3wBGckUgAkHhAGtBGk9xRQRAIAVBAWohBQwBCwtCgICAgICA4P//ACEUIAJBKUYNAiABKQNwIhdCAFkEQCABIAEoAgRBAWs2AgQLAkAgAwRAIAUNAQwECwwBCwNAIAVBAWshBSAXQgBZBEAgASABKAIEQQFrNgIECyAFDQALDAILQYiZBEEcNgIAIAFCABDEAQtCACEUCyAAIBU3AwAgACAUNwMIIAxBMGokAAvQBgIEfwN+IwBBgAFrIgUkAAJAAkACQCADIARCAEIAEP8BRQ0AAn8gBEL///////8/gyEJAn8gBEIwiKdB//8BcSIGQf//AUcEQEEEIAYNARpBAkEDIAMgCYRQGwwCCyADIAmEUAsLIQcgAkIwiKciCEH//wFxIgZB//8BRg0AIAcNAQsgBUEQaiABIAIgAyAEEF0gBSAFKQMQIgEgBSkDGCICIAEgAhD4BCAFKQMIIQIgBSkDACEEDAELIAEgAkL///////8/gyAGrUIwhoQiCiADIARC////////P4MgBEIwiKdB//8BcSIHrUIwhoQiCRD/AUEATARAIAEgCiADIAkQ/wEEQCABIQQMAgsgBUHwAGogASACQgBCABBdIAUpA3ghAiAFKQNwIQQMAQsgBgR+IAEFIAVB4ABqIAEgCkIAQoCAgICAgMC7wAAQXSAFKQNoIgpCMIinQfgAayEGIAUpA2ALIQQgB0UEQCAFQdAAaiADIAlCAEKAgICAgIDAu8AAEF0gBSkDWCIJQjCIp0H4AGshByAFKQNQIQMLIAlC////////P4NCgICAgICAwACEIQkgCkL///////8/g0KAgICAgIDAAIQhCiAGIAdKBEADQAJ+IAogCX0gAyAEVq19IgtCAFkEQCALIAQgA30iBIRQBEAgBUEgaiABIAJCAEIAEF0gBSkDKCECIAUpAyAhBAwFCyALQgGGIARCP4iEDAELIApCAYYgBEI/iIQLIQogBEIBhiEEIAZBAWsiBiAHSg0ACyAHIQYLAkAgCiAJfSADIARWrX0iCUIAUwRAIAohCQwBCyAJIAQgA30iBIRCAFINACAFQTBqIAEgAkIAQgAQXSAFKQM4IQIgBSkDMCEEDAELIAlC////////P1gEQANAIARCP4ghASAGQQFrIQYgBEIBhiEEIAEgCUIBhoQiCUKAgICAgIDAAFQNAAsLIAhBgIACcSEHIAZBAEwEQCAFQUBrIAQgCUL///////8/gyAGQfgAaiAHcq1CMIaEQgBCgICAgICAwMM/EF0gBSkDSCECIAUpA0AhBAwBCyAJQv///////z+DIAYgB3KtQjCGhCECCyAAIAQ3AwAgACACNwMIIAVBgAFqJAALvwIBAX8jAEHQAGsiBCQAAkAgA0GAgAFOBEAgBEEgaiABIAJCAEKAgICAgICA//8AEF0gBCkDKCECIAQpAyAhASADQf//AUkEQCADQf//AGshAwwCCyAEQRBqIAEgAkIAQoCAgICAgID//wAQXSADQf3/AiADQf3/AkgbQf7/AWshAyAEKQMYIQIgBCkDECEBDAELIANBgYB/Sg0AIARBQGsgASACQgBCgICAgICAgDkQXSAEKQNIIQIgBCkDQCEBIANB9IB+SwRAIANBjf8AaiEDDAELIARBMGogASACQgBCgICAgICAgDkQXSADQeiBfSADQeiBfUobQZr+AWohAyAEKQM4IQIgBCkDMCEBCyAEIAEgAkIAIANB//8Aaq1CMIYQXSAAIAQpAwg3AwggACAEKQMANwMAIARB0ABqJAALNQAgACABNwMAIAAgAkL///////8/gyAEQjCIp0GAgAJxIAJCMIinQf//AXFyrUIwhoQ3AwgLEAAgACABIAJBAEEAEIkFGgvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAgALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC20BBH8gACgCACwAABCuAUUEQEEADwsDQCAAKAIAIQNBfyEBIAJBzJmz5gBNBEBBfyADLAAAQTBrIgQgAkEKbCIBaiAEIAFB/////wdzShshAQsgACADQQFqNgIAIAEhAiADLAABEK4BDQALIAILDAAgACAAKAIAEPEEC/8SAhJ/AX4jAEHQAGsiCCQAIAggATYCTCAIQTdqIRcgCEE4aiESAkACQAJAAkADQCABIQwgByAOQf////8Hc0oNASAHIA5qIQ4CQAJAAkAgDCIHLQAAIgkEQANAAkACQCAJQf8BcSIBRQRAIAchAQwBCyABQSVHDQEgByEJA0AgCS0AAUElRwRAIAkhAQwCCyAHQQFqIQcgCS0AAiEKIAlBAmoiASEJIApBJUYNAAsLIAcgDGsiByAOQf////8HcyIYSg0HIAAEQCAAIAwgBxCDAQsgBw0GIAggATYCTCABQQFqIQdBfyEPAkAgASwAARCuAUUNACABLQACQSRHDQAgAUEDaiEHIAEsAAFBMGshD0EBIRMLIAggBzYCTEEAIQ0CQCAHLAAAIglBIGsiAUEfSwRAIAchCgwBCyAHIQpBASABdCIBQYnRBHFFDQADQCAIIAdBAWoiCjYCTCABIA1yIQ0g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ABpBAiABQZYBSw0AGkEAQQFBlgEgAWt0IgFBAWsgAHENABpBAUECIAAgAXEbCwsTACAAQQF0QYCAgAhqQYGAgAhJCxUBAX8jAEEQayIBIAA4AgwgASoCDAsQACABjCABIAAbEJYFIAGUCwwAIAAgAJMiACAAlQs5AQF+An4gACgCTEEASARAIAAQmwUMAQsgABCbBQsiAUKAgICACFkEQEGImQRBPTYCAEF/DwsgAacLDAAgACAAKAIAEOYEC3ACAn8BfiAAKAIoIQJBASEBAkAgAEIAIAAtAABBgAFxBH9BAUECIAAoAhQgACgCHEYbBUEBCyACERMAIgNCAFMNACADIAAoAggiAQR/IABBBGoFIAAoAhwiAUUNASAAQRRqCygCACABa6x8IQMLIAMLWQEBfyAAIAAoAkgiAUEBayABcjYCSCAAKAIAIgFBCHEEQCAAIAFBIHI2AgBBfw8LIABCADcCBCAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQQQALLAAgACgCABogACgCACAAENwBahogACgCACAAEI0BahogACgCACAAENwBahoLlwIBBX8gASgCTBpB/wEhBSAAIQMCQANAAkACQAJAIAEoAgQiAiABKAIIIgRGDQACfyACQQogBCACaxDcAyIGBEAgBiABKAIEIgJrQQFqDAELIAEoAgggASgCBCICawshBCADIAIgBCAFIAQgBUkbIgIQPhogASABKAIEIAJqIgQ2AgQgAiADaiEDIAYNAiAFIAJrIgVFDQIgBCABKAIIRg0AIAEgBEEBajYCBCAELQAAIQIMAQsgARCQAyICQQBODQBBACECIAAgA0YNAyABLQAAQRBxDQEMAwsgAyACOgAAIANBAWohAyACQf8BcUEKRg0AIAVBAWsiBQ0BCwsgAEUEQEEAIQIMAQsgA0EAOgAAIAAhAgsgAgt1AgJ8AX4gAAJ+EA8iAUQAAAAAAECPQKMiAplEAAAAAAAA4ENjBEAgArAMAQtCgICAgICAgICAfwsiAzcDACAAAn8gASADQugHfrmhRAAAAAAAQI9AoiIBmUQAAAAAAADgQWMEQCABqgwBC0GAgICAeAs2AggLRQIBfgF8An4QD0QAAAAAAECPQKMiAplEAAAAAAAA4ENjBEAgArAMAQtCgICAgICAgICAfwshASAABEAgACAB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QQFqOwEGIAEgC2ogAGoiAiAELQAYQQFqOwEAIAIgBC0AGUEBajsBAiACIAQtABpBAWo7AQQgAiAELQAbQQFqOwEGIAEgD2ogAGoiASAELQAcQQFqOwEAIAEgBC0AHUEBajsBAiABIAQtAB5BAWo7AQQgASAELQAfQQFqOwEGIARBIGohBCAHQQFqIgdBBEcNAAsgDUGAC2okAAvLAwEEfyAAKALkAyAAQQFB/A8gACgCBCgCABEEACIAQfwHaiIBNgIoIABC/////w83AvgHIABCgYCAgCA3AoAIIABCg4CAgMAANwKICCAAQv3///9vNwLwByAAQoWAgIDgADcCkAggAEL7////TzcC6AcgAEKHgICAgAE3ApgIIABC+f///69/NwLgByAAQomAgICgATcCoAggAEL3////j383AtgHIABCi4CAgMABNwKoCCAAQvX////vfjcC0AcgAEKNgICA4AE3ArAIIABC8////89+NwLIByAAQQ82ArgIIABC8f///69+NwLAB0EQIQJBECEDA0AgASADQQJ0IgBqIAI2AgAgASAAa0EAIAJrIgQ2AgAgASAAQQRyaiACNgIAIAEgA0F/c0ECdGogBDYCACACQQFqIQJBMCEAIANBAmoiA0EwRw0ACwNAIAEgAEECdCICakEgNgIAIAEgAmtBYDYCACABIAJBBHJqQSA2AgAgASAAQX9zQQJ0akFgNgIAIAEgAkEIcmpBIDYCACABQX4gAGtBAnRqQWA2AgAgASACQQxyakEgNgIAIAFBfSAAa0ECdGpBYDYCACAAQQRqIgBBgAJHDQALC/cCAQp/IAAoAuQDIgQgACgCWCIBQQFGIgI2AhwgBCAAQQFB/gVBgAIgAhsgACgCeCAAKAIEKAIIEQgANgIYIAAoAnhBAEoEQCAEKAIUIQYgAUEBRyEIA0AgBiAEIAdBAnQiAWooAiAiAm0hBiAIRQRAIAQoAhggAWoiAyADKAIAQf8BajYCAAsgAkH+AWogAkEBayIJQQF0IgptIQUgBCgCGCABaigCACEBQQAhAkEAIQMDQCADIAVKBEADQCADIAJBAWoiAkEBdEEBckH/AWwgCWogCm0iBUoNAAsLIAEgA2ogAiAGbDoAACADQQFqIgNBgAJHDQALIAhFBEBBASECA0AgASACayIFIAEtAAA6AAAgASACaiIDIAEt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C6KhIAogCqIiC6M5AyAgBSABKwMIIAqiIA0gASsDSKKhIAujOQMoIAUgASsDECAKoiANIAErA1CioSALozkDMCAFIAErAyAgCqIgECARIAyiIBMgDqIgDyASoqCgoCIMIAErA0CioSALozkDOCAFIAErAyggCqIgDCABKwNIoqEgC6M5A0AgBSABKwMwIAqiIAwgASsDUKKhIAujOQNIQQAFQX8LQQBOBEBBACECA0BBACEEIAJBAkYNAgNAIARBBkcEQCAEQQN0IgEgACACQTBsamohBkEAIQNEAAAAAAAAAAAhCgNAIANBA0cEQCAFQSBqIAJBGGxqIANBA3RqKwMAIAVB0ABqIANBMGxqIAFqKwMAoiAKoCEKIANBAWohAwwBCwsgBiAKOQMAIARBAWohBAwBCwsgAkEBaiECDAALAAtBAEEDQdgWQQAQNgsgBUHgAWokACAECxIAIAAgACgCACABQQJ0ajYCAAswAQF/IwBBEGsiAiQAIAIgATYCACACIAA2AgggAiACQQhqEOoDIQAgAkEQaiQAIAALDQAgACgCACAAKAIERgtXAQJ/IwBBIGsiAyQAIAAQMiICIANBCGogACAAED1BAWoQ+wMgABA9IAIQtgIiAigCCCABELcCIAIgAigCCEEIajYCCCAAIAIQ6AIgAhDnAiADQSBqJAALqQQCCX8BfiAAEL0CIQIgABDuAiEDIwBBIGsiBiQAIAYgAzYCECAGIAI2AhggBkEQaiAGQRhqEKgDIQQjAEEQayIFJAAgBSADNgIAIAUgAjYCCCAEQQJOBEAgBSgCCCECIAUQ0gEoAgAhAyMAQRBrIgEkACABIAIpAgAiCjcDCCACIAMpAgA3AgAgAyAKNwIAIAFBEGokACAFKAIIIQIjAEEwayIBJAAgASACNgIgIAEgAjYCKCABQSBqIAFBKGoQqAMhAgJAIARBAWsiBEECSA0AIARBAmtBAXYiCSACSA0AIAEgAUEoaiACQQF0IgNBAXIiAhDuATYCGAJAIANBAmoiAyAETg0AIAFBGGoiBygCACEIIAEgB0EBEO4BNgIQIAggASgCEBCnAkUNACABQRhqEJ8BGiADIQILIAEoAhggASgCIBCnAg0AIAEgASgCICkCADcDEANAAkAgASgCICABKAIYKQIANwIAIAEgASgCGDYCICACIAlKDQAgASAB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EKAGIAEgASgCAEEUaiIDNgIADAELCyABELIBIAFBEGokACAAIAIQ9AYgAhDyBgsgBEEgaiQADwsgASACSQRAIAAgACgCACABQRRsahCnBgsLnwEBBH8jAEEgayICJAAgACABNgIAIAJBGGogARCoBiEDQRAQWyEEIwBBIGsiBSQAIAUgATYCDCAEEPcDIgRB3NoBNgIAIARBDGogBUEIaiAFQQxqEKsCEKsCGiAFQSBqJAAgACAENgIEIAMQuQEaIAIgATYCBCACIAE2AgAgAygCACEBIANBADYCACABBEAgAyABEIsGCyACQSBqJAAgAAueAQECfyAAQgA3AgAgAEEIaiIBQQA2AgAgAUEEahBSGiABQRBqEFIaIABBJGoiAULSCTcCACABQQhqEIMEGiABQQxqIgJCADcCBCACIAE2AgAgAkEMahBSGiACQRhqEFIaIAJBJGoQUhogAkEwahBSGiABQcgAahBSGiABQdQAahCqAyABQRA2AmwgAUIANwJkIAIQjgYgAkEBEI0GIAALpwIBA38gACgCACECIAAgATYCACACBEAgAgRAIAJBlAZqIgBBGGoQ0wEaIABBDGoQfiAAEH4gAkGMBWoiAEH8AGoQfiAAQfAAahB+IABB3ABqEOAFIAJB/ARqENMBGiACQaABaiIAQZABahB+IABB3ABqIgFBKGoQlgQgAUEcahB+IABByABqEJcEIABBPGoQlwQgAEEgahCWBCAAQRBqIgAQzAIgACgCAARAIAAgACgCABDNBiAAEDIaIAAoAgAhASAAELMBGiABEDELIAJB3ABqEIcEGiACQcgAaiIDKAIIIQAgAxAyIQQDQCAABEAgACgCACEBIAQgAEEIahClBiAAEDEgASEADAELCyADELECIAJBQGsQ0QEgAkEMahDTARoLIAIQMQsLYQEDfyAAKAIAIQIgACABNgIAIAIEQCACBEAgAkEEaiIDKAIIIQAgAxAyIQQDQCAABEAgACgCACEBIAQgAEEIahCWBiAAEDEgASEADAELCyADELECIAJBABCtBgsgAhAxCwsJACABQQA7AQALCwAgACABQQIQ8gELjQICDH8BfUF/IQoCQCABKAIIIgYgAigCBEcNACAAKAIEIgMgASgCBEcNACAAKAIIIgcgAigCCEcNAEEAIQogA0EAIANBAEobIQsgB0EAIAdB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IAogABCYASAGIAoQhwEgChA4GiAKIAAQwQEgByAKEIcBIAoQOBogABD0AQwBCyACEKsHIQACQCABBEAgCiAAEPYBIAMgCigCADYAACAKIAAQ9QEMAQsgCiAAELsDIAMgCigCADYAACAKIAAQwAELIAggChCHASAKEDgaIAQgABC9AToAACAFIAAQmQE6AAAgCiAAEJgBIAYgChCHASAKEDgaIAogABDBASAHIAoQhwEgChA4GiAAEPQBCzYCACAKQRBqJAALMQEBfyMAQRBrIgIkACACIAAoAgA2AgggAkEIaiABEOsFIAIoAgghACACQRBqJAAgAAsLACAAQdi4BBDLAQsLACAAQeC4BBDLAQsVACAAIAEoAgAQ3AQgASgCABDrARoL9A8BC38jAEGwBGsiCyQAIAsgCjYCpAQgCyABNgKoBAJAIAAgC0GoBGoQcwRAIAUgBSgCAEEEcjYCAEEAIQAMAQsgC0HNAjYCYCALIAtBiAFqIAtBkAFqIAtB4ABqIgEQZiIPKAIAIgo2AoQBIAsgCkGQA2o2AoABIAEQRCERIAtB0ABqEEQhDCALQUBrEEQhDiALQTBqEEQhDSALQSBqEEQhECMAQRBrIgEkACALAn8gAgRAIAEgAxCmByICEPYBIAsgASgCADYAeCABIAIQ9QEgDSABENUBIAEQOBogASACEMABIA4gARDVASABEDgaIAsgAhC9ATYCdCALIAIQmQE2AnAgASACEJgBIBEgARCHASABEDgaIAEgAhDBASAMIAEQ1QEgARA4GiACEPQBDAELIAEgAxClByICEPYBIAsgASgCADYAeCABIAIQ9QEgDSABENUBIAEQOBogASACEMABIA4gARDVASABEDgaIAsgAhC9ATYCdCALIAIQmQE2AnAgASACEJgBIBEgARCHASABEDgaIAEgAhDBASAMIAEQ1QEgARA4GiACEPQBCzYCHCABQRBqJAAgCSAIKAIANgIAIARBgARxIhJBCXYhE0EAIQNBACEBA0AgASECAkACQAJAAkAgA0EERg0AIAAgC0GoBGoQiwFFDQBBACEKAkACQAJAAkACQAJAIAtB+ABqIANqLAAADgUBAAQDBQkLIANBA0YNByAHQQEgABBoELYBBEAgC0EQaiAAEKcHIBAgCygCEBCvBAwCCyAFIAUoAgBBBHI2AgBBACEADAYL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NgIQIAIMAQsgAEEANgIcIABCADcDECAAIAAoAgBBIHI2AgBBACAHQQJGDQAaIAIgBCgCBGsLIQEgA0EgaiQAIAELRgEBfyAAKAI8IQMjAEEQayIAJAAgAyABpyABQiCIpyACQf8BcSAAQQhqEBcQhwMhAiAAKQMIIQEgAEEQaiQAQn8gASACGwsGAEGImQQLJAEBf0H8mAQoAgAiAARAA0AgACgCABEOACAAKAIEIgANAAsLCwoAIAAoAgQQjAULnwEBBH8gA0EASgRAIAAoAnAhAiAAKALkAygCGCEHA0AgAgRAIAEgBUECdGooAgAhACACIQYDQCAHIAAtAABBAXZB/ABxaigCACAALQABQQR0QcAfcWogAC0AAkECdkE+cWoiBCAELwEAIgQgBEEBaiIEIAQgBEH//wNxRxs7AQAgAEEDaiEAIAZBAWsiBg0ACwsgBUEBaiIFIANHDQALCwv+CgEafyAAIAAoAuQDIhMoAhA2AogBIABBASATKAIUIghBBXQgACgCBCgCABEEACILQoCAgIDwAzcCECALQoCAgIDwBzcCCCALQoCAgIDwAzcCACAAIAsQ3gNBASEKAkACQCAIQQJIDQADQAJAAkACQCAIIApBAXROBEAgCkEBcSEEIA8NAUEAIQJBACEDIAshAQwCC0EAIQlBACECQQAhAyALIQEgD0EDTwRAIApB/P///wdxIQdBACEEA0AgAUHgAGogAUFAayABQSBqIAEgAiABKAIYIgIgA0oiBRsgASgCOCIGIAIgAyAFGyICSiIDGyABKAJYIgUgBiACIAMbIgJKIgMbIAEoAngiBiAFIAIgAxsiA0oiBRshAiAGIAMgBRshAyABQYABaiEBIARBBGoiBCAHRw0ACwsgCkEDcSIERQ0CA0AgASACIAEoAhgiByADSiIFGyECIAcgAyAFGyEDIAFBIGohASAJQQFqIgkgBEcNAAsMAgsgCkH+////B3EhB0EAIQJBACEDIAshAUEAIQkDQCADIAEoAhwiBUgEQCABIAIgASgCGEEASiIGGyECIAUgAyAGGyEDCyADIAEoAjwiBUgEQCABQSBqIAIgASgCOEEASiIGGyECIAUgAyAGGyEDCyABQUBrIQEgCUECaiIJIAdHDQALCyAERQ0AIAEoAhwgA0wNACABIAIgASgCGEEAShshAgsgAkUNASAL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QQd0IARqIQQgASgCDCADbEEHdCACaiECCyABKAIsIgENAAsLAkAgAkEATA0AQYCU69wDIQMgBSgCTBogBCAEIgFKBEAgASACbSIBQQEgAUEBShshAwsgBSgCRCIBBEADQCABKAIARQRAAkAgAyABKAIEIgJBAWsgASgCDCIEbkEBak4EQCABIAI2AhAMAQsgASADIARsNgIQIAAgASgCCCACbBCqBSABQQE2AiggASgCECECCyABIABBASABKAIIIAIQqwU2AgAgBSgCUCECIAFBADYCJCABQgA3AhggASACNgIUCyABKAIsIgENAAsLIAUoAkgiAUUNAANAIAEoAgBFBEACQCADIAEoAgQiAkEBayABKAIMIgRuQQFqTgRAIAEgAjYCEAwBCyABIAMgBGw2AhAgACACIAEoAghsQQd0EKoFIAFBATYCKCABKAIQIQILIAEgAEEBIAEoAgggAhCsBTYCACAFKAJQIQIgAUEANgIkIAFCADcCGCABIAI2AhQLIAEoAiwiAQ0ACwsL7QYBB38CQAJAIAIgA2oiCCABKAIESw0AIAEoAgwgA0kNACABKAIADQELIAAoAgAiA0EXNgIUIAAgAygCABEBAAsCQCACIAEoAhgiA08EQCAIIAEoAhAgA2pNDQELIAEoAihFBEAgACgCACIDQccANgIUIAAgAygCABEBAAsgASgCJARAAkAgASgCECIHQQBMDQAgAUEwaiEJIAEoAggiCiABKAIYbCEFIAEoAhQhBkEAIQMDQCAGIAcgA2siByAGIAdIGyIGIAEoAhwgASgCGCADaiIHayILIAYgC0gbIgYgASgCBCAHayIHIAYgB0gbIgZBAEwNASAAIAkgASgCACADQQJ0aigCACAFIAYgCmwiBiABKAI0EQUAIAUgBmohBSABKAIQIgcgASgCFCIGIANqIgNKDQALCyABQQA2AiQLQQAhAyABIAIgCCABKAIQIgdrIgVBACAFQQBKGyABKAIYIAJJGyIFNgIYIAdBAEwNACABQTBqIQkgASgCCCIKIAVsIQUgASgCFCEGA0AgBiAHIANrIgcgBiAHSBsiBiABKAIcIAEoAhggA2oiB2siCyAGIAtIGyIGIAEoAgQgB2siByAGIAdIGyIGQQBMDQEgACAJIAEoAgAgA0ECdGooAgAgBSAGIApsIgYgASgCMBEFACAFIAZqIQUgASgCECIHIAEoAhQiBiADaiIDSg0ACwsCQAJAAkAgASgCHCIFIAhPDQACQAJAAkAgAiAFSwRAIAIhBSAERQ0BIAAoAgAiA0EXNgIUIAAgAygCABEBAAwCCyAEDQELIAEoAiANASAAKAIAIgNBFzYCFCAAIAMoAgARAQAMBAsgASAINgIcIAEoAiBFDQILIAUgASgCGCIAayIDIAggAGsiBk8NACABKAIIIQAgCCAFQX9zaiEHIAggBWtBA3EiCARAQQAhBQNAIAEoAgAgA0ECdGooAgBBACAAEDkaIANBAWohAyAFQQFqIgUgCEcNAAsLIAdBA0kNAANAIANBAnQiBSABKAIAaigCAEEAIAAQORogBSABKAIAaigCBEEAIAAQORogBSABKAIAaigCCEEAIAAQORogBSABKAIAaigCDEEAIAAQORogA0EEaiIDIAZHDQALCyAERQ0BCyABQQE2AiQLIAEoAgAgAiABKAIYa0ECdGoL9gYBB38CQAJAIAIgA2oiCCABKAIESw0AIAEoAgwgA0kNACABKAIADQELIAAoAgAiA0EXNgIUIAAgAygCABEBAAsCQCACIAEoAhgiA08EQCAIIAEoAhAgA2pNDQELIAEoAihFBEAgACgCACIDQccANgIUIAAgAygCABEBAAsgASgCJARAAkAgASgCECIHQQBMDQAgAUEwaiEJIAEoAghBB3QiCiABKAIYbCEFIAEoAhQhBkEAIQMDQCAGIAcgA2siByAGIAdIGyIGIAEoAhwgASgCGCADaiIHayILIAYgC0gbIgYgASgCBCAHayIHIAYgB0gbIgZBAEwNASAAIAkgASgCACADQQJ0aigCACAFIAYgCmwiBiABKAI0EQUAIAUgBmohBSABKAIQIgcgASgCFCIGIANqIgNKDQALCyABQQA2AiQLQQAhAyABIAIgCCABKAIQIgdrIgVBACAFQQBKGyABKAIYIAJJGyIFNgIYIAdBAEwNACABQTBqIQkgASgCCEEHdCIKIAVsIQUgASgCFCEGA0AgBiAHIANrIgcgBiAHSBsiBiABKAIcIAEoAhggA2oiB2siCyAGIAtIGyIGIAEoAgQgB2siByAGIAdIGyIGQQBMDQEgACAJIAEoAgAgA0ECdGooAgAgBSAGIApsIgYgASgCMBEFACAFIAZqIQUgASgCECIHIAEo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AgQoAhwRCgAiBzYCDCAEKAIYIQYLIAAgASACIAMgByAIIAQoAhAgACgC3AMoAgQRDAAgBiAEKAIYIgNJBH8gACAEKAIMIAZBAnRqQQAgAyAGayIBIAAoAuQDKAIEEQcAIAUgBSgCACABajYCACAEKAIYBSADCyAEKAIQIgBPBEAgBEEANgIYIAQgBCgCFCAAajYCFAsLjwEBBH8jAEEQayIHJAAgACgCyAMiCCgCECEJIAUoAgAhCiAHQQA2AgwgACABIAIgAyAIKAIMIAdBDGogBiAKayIBIAkgASAJSRsgACgC3AMoAgQRDAAgACAIKAIMIAQgBSgCAEECdGogBygCDCAAKALkAygCBBEHACAFIAUoAgAgBygCDGo2AgAgB0EQaiQAC9wBAQF/IAAoAsgDIQICQAJAAkACQAJAIAEOBAADAgEDCyAAKAJUBEAgAkHQATYCBCACKAIMDQQgAiAAIAIoAghBACACKAIQQQEgACgCBCgCHBEKADYCDAwECyACIAAoAtwDKAIENgIEDAMLIAIoAghFBEAgACgCACIBQQM2AhQgACABKAIAEQEACyACQdEBNgIEDAILIAIoAghFBEAgACgCACIBQQM2AhQgACABKAIAEQEACyACQdIBNgIEDAELIAAoAgAiAUEDNgIUIAAgASgCABEBAAsgAkIANwIUCzwAIAAgASACKAIAIAQgBSgCAEECdGogACgC3AMoAgwRBwAgBSAFKAIAQQFqNgIAIAIgAigCAEEBajYCAAvCAwEMfyACQQJ0IgIgASgCCGooAgAhBSABKAIEIAJqKAIAIQYgASgCACACaigCACEHIAMoAgAhASAAKALQAiECIAAoAtwDIgMoAhwhCCADKAIYIQsgAygCFCEMIAMoAhAhDSAAKAJwIgNBAk8EfyADQQF2IQMDQCAMIAYtAABBAnQiBGooAgAhDiALIAUtAABBAnQiCWooAgAhCiAEIAhqKAIAIQ8gASACIAkgDWooAgAiCSAHLQAAIgRqai0AADoAACABIAIgBCAKIA9qQRB1Igpqai0AADoAASABIAIgBCAOamotAAA6AAIgASACIAkgBy0AASIEamotAAA6AAMgASACIAQgCmpqLQAAOgAEIAEgAiAEIA5qai0AADoABSABQQZqIQEgB0ECaiEHIAVBAWohBSAGQQFqIQYgA0EBayIDDQALIAAoAnAFIAMLQQFxBEAgDCAGLQAAQQJ0IgBqKAIAIQMgCyAFLQAAQQJ0IgVqKAIAIQYgACAIaigCACEIIAEgAiAHLQAAIgAgBSANaigCAGpqLQAAOgAAIAEgAiAAIAYgCGpBEHVqai0AADoAASABIAIgACADamotAAA6AAILC4sCAQN/IwBBEGsiCCQAAkACQCAAKALcAyIHKAIkBEAgB0EgakEAIAQgBSgCAEECdGpBAEEBIAcoAigQkgMgB0EANgIkIAUgBSgCAEEBajYCACAHIAcoAixBAWs2AiwMAQsgBygCLCEJIAggBCAFKAIAIgNBAnRqIgQoAgA2AgggCAJ/IAkgBiADayIDIAMgCUsbIgNBAiADQQJJGyIDQQJPBEAgBCgCBAwBCyAHQQE2AiQgBygCIAs2AgwgACABIAIoAgAgCEEIaiAHKAIMEQcAIAcoAiQhACAFIAUoAgAgA2o2AgAgByAHKAIsIANrNgIsIAANAQsgAiACKAIAQQFqNgIACyAIQRBqJAALhgUBDn8gAkECdCIFIAEoAghqKAIAIQogASgCBCAFaigCACELIAEoAgAgAkEDdGoiASgCACEHIAEoAgQhCCADKAIEIQIgAygCACEDIAAoAtACIQQgACgC3AMiASgCHCEOIAEoAhghDyABKAIUIRAgASgCECERIAAoAnAiAUECTwR/IAFBAXYhCQNAIBAgCy0AAEECdCIBaigCACEMIA8gCi0AAEECdCIGaigCACEFIAEgDmooAgAhASADIAQgBiARaigCACINIActAAAiBmpqLQAAOgAAIAMgBCAGIAEgBWpBEHUiBWpqLQAAOgABIAMgBCAGIAxqai0AADoAAiADIAQgDSAHLQABIgFqai0AADoAAyADIAQgASAFamotAAA6AAQgAyAEIAEgDGpqLQAAOgAFIAIgBCANIAgtAAAiAWpqLQAAOgAAIAIgBCABIAVqai0AADoAASACIAQgASAMamotAAA6AAIgAiAEIA0gCC0AASIBamotAAA6AAMgAiAEIAEgBWpqLQAAOgAEIAIgBCABIAxqai0AADoABSACQQZqIQIgCEECaiEIIANBBmohAyAHQQJqIQcgCkEBaiEKIAtBAWohCyAJQQFrIgkNAAsgACgCcAUgAQtBAXEEQCAQIAstAABBAnQiAGooAgAhCSAPIAot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Qe4ANgIUDAQLIAAoAgAiASAFNgIYIAFB7wA2AhQMAwsgACgCACIBIAU2AhggAUHwADYCFAwCCyAAKAIAIgFB2wA2AhQgASACLQAHNgIYIAAoAgAgBTYCHAwBCyAAKAIAIgEgBTYCGCABQc8ANgIUCyAAQQEgACgCACgCBBECAAsMAgsCQCABQQxJDQAgAi0AAkHBAEcNACACLQADQeQARw0AIAItAARB7wBHDQAgAi0ABUHiAEcNACACLQAGQeUARw0AIAItAAghAyACLQAHIQcgAi0ACiEJIAItAAkhCiACLQAMIQsgAi0ACyENIAItAA0hBSAAKAIAIgFBzgA2AhQgASAFNgIkIAEgCyANQQh0cjYCICABIAkgCkEIdHI2AhwgASADIAdBCHRyNgIYIABBASABKAIEEQIAIAAgBToArAIgAEEBNgKoAgwCCyAAKAIAIgEgBTYCGCABQdAANgIUIABBASAAKAIAKAIEEQIADAELIAAoAgAiASADNgIYIAFBxgA2AhQgACAAKAIAKAIAEQEACyAGIAQ2AgQgBiAINgIAQQEhBCAMQQBMDQAgACAMIAAoAhgoAhARAgALIAJBEGokACAECzYAIABBADYC2AEgAEEANgK4AyAAQQA2ApABIAAoAtADIgBBADYCpAEgAEEANgIYIABCADcCDAuGOwEPfyMAQaACayIJJAAgACgCuAMhAQNAAkACQAJAIAENACAAKALQAygCDEUEQCAAKAIYIgIoAgQiAUUEQCAAIAIoAgwRAABFBEBBACEBDAQLIAIoAgQhAQsgAigCACIDLQAAIQUgAUEBayIEBH8gA0EBagUgACACKAIMEQAARQRAQQAhAQwECyACKAIEIQQgAigCAAsiAUEBaiEDIAVB/wFGIAEtAAAiAUHYAUZxRQRAIAAoAgAiBiAFNgIYIAZBNzYCFCAAKAIAIAE2AhwgACAAKAIAKAIAEQEACyAAIAE2ArgDIAIgBEEBazYCBCACIAM2AgAMAQsgABDjA0UEQEEAIQEMAgsgACgCuAMhAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBAWsO/gEPERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERIBAgUJBQUFBQMEBQgFBQUPDw8PDw8PDwAHBgoQCxERDQ0NDQ0NDQ0NDQ0NDQ0NDRERERERERERDBERERERDhELIAAoAgAiAkHoADYCFCAAQQEgAigCBBECACAAKALQAyIBKAIMBEAgACgCACICQcAANgIUIAAgAigCABEBACAAKALQAyEBCyAAQgA3AOgBIABCADcA8AEgAEKBgoSIkKDAgAE3AIACIABCgYKEiJCgwIABNwD4ASAAQoWKlKjQoMGCBTcAkAIgAEKFipSo0KDBggU3AIgCIABCADcDsAIgAEEANgIoIABCADcDmAIgAEEAOgCsAiAAQoGABDcCpAIgAEEAOgCiAiAAQYECOwGgAiABQQE2AgwMFAtBACEBIABBAEEAQQAQ2AINEwwSC0EAIQEgAEEAQQFBABDYAg0SDBELQQAhASAAQQBBAEEBENgCDREMEAtBACEBIABBAEEBQQEQ2AINEAwPCyAAKAIAIgIgATYCGCACQT82AhQgACAAKAIAKAIAEQEADA8LIAAoAhgiBigCBCEBIAYoAgAhAyAAKALQAygCEEUEQCAAKAIAIgJBPDYCFCACQRhqQei4AkHQABA+GiAAIAAoAgAoAgARAQALIAFFBEAgACAGKAIMEQAARQRAQQAhAQwPCyAGKAIAIQMgBigCBCEBCyADLQAAIQUgAUEBayICBH8gA0EBagUgACAGKAIMEQAARQRAQQAhAQwPCyAGKAIEIQIgBigCAAsiBC0AACEBIAJBAWsiAwR/IARBAWoFIAAgBigCDBEAAEUEQEEAIQEMDwsgBigCBCEDIAYoAgALIQQgACgCACICIAQtAAAiCzYCGCACQekANgIUQQEhAiAAQQEgACgCACgCBBECAAJAAkACQCALQQF0QQZqIAVBCHQgAXJHIAtBBEtyDQAgCwRAIAAgCzYC1AIgBEEBaiEKIANBAWshBQwCCyAAKALgAUUNACAAIAs2AtQCIARBAWohCiADQQFrIQUMAgsgACgCACIBQQw2AhQgACAB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AwR/IAJBAWoFIAAgASgCDBEAAEUEQEEAIQEMCwsgASgCBCEDIAEoAgALIgVBAWohAiADQQFrIQMgBS0AACAEQQh0ckH/AUcNACADRQRAIAAgASgCDBEAAEUEQEEAIQEMCwsgASgCBCEDIAEoAgAhAgsgAkEBaiEEIANBAWshAyACLQAAQQNHBEAgBCECDAELIANFBEAgACABKAIMEQAARQRAQQAhAQwLCyABKAIEIQMgASgCACEECyAEQQFqIQIgA0EBayEDIAAoAtgBIgcoAlggBC0AAEcNACADRQRAIAAgASgCDBEAAEUEQEEAIQEMCwsgACgC2AEhByABKAIEIQMgASgCACECCyACQQFqIQQgA0EBayEDIAcoAgAgAi0AAEcEQCAEIQIMAQsgA0UEQCAAIAEoAgwRAABFBEBBACEBDAsLIAAoAtgBIQcgASgCBCEDIAEoAgAhBAsgBEEBaiECIANBAWshAyAHKAKwASAELQAARw0AIANFBEAgACABKAIMEQAARQRAQQAhAQwLCyABKAIEIQMgASgCACECCyACQQFqIQQgA0EBayEDIAItAABBgAFHBEAgBCECDAELIANFBEAgACABKAIMEQAARQRAQQAhAQwLCyABKAIEIQMgASgCACEECyAELQAAIQUgA0EBayIDBH8gBEEBagUgACABKAIMEQAARQRAQQAhAQwLCyABKAIEIQMgASgCAAsiBEEBaiECIANBAWshAyAELQAAIAVBCHRyDQAgA0UEQCAAIAEoAgwRAABFBEBBACEBDAsLIAEoAgQhAyABKAIAIQILIAItAAAhBCADQQFrIgMEfyACQQFqBSAAIAEoAgwRAABFBEBBACEBDAsLIAEoAgQhAyABKAIACyIFQQFqIQIgA0EBayEDIAUtAAAgBEEIdHINACADRQRAIAAgASgCDBEAAEUEQEEAIQEMCwsgASgCBCEDIAEoAgAhAgsgAkEBaiEEIANBAWshAyACLQAABEAgBCECDAELIANFBEAgACABKAIMEQAARQRAQQAhAQwLCyABKAIEIQMgASgCACEECyAELQAAIQUgA0EBayIDBH8gBEEBagUgACABKAIMEQAARQRAQQAhAQwLCyABKAIEIQMgASgCAAsiBEEBaiECIANBAWshAyAELQAAIAVBCHRyQQFHDQAgA0UEQCAAIAEoAgwRAABF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QcsBNgIUCwJAIAAoAswDKAIQRQ0AIAAoAgghBQNAIAUEQCAAIAUoAgARAQALAkAgACAAKALMAygCABEAACIBDgMFAAIACyAAKAIIIgVFIAFBfXFBAUdyDQAgBSAFKAIEQQFqIgE2AgQgASAFKAIIIgJIDQAgBSAAKALMAiACajYCCAwACwALIAAgACgCkAE2ApgBDAELIAAoAgAiAiABNgIYIAJBFTYCFCAAIAAoAgAoAgARAQALIAAoAhRBzAFHBEAgACAAKAK8AygCABEBACAAQcwBNgIUIABBADYCjAELAkAgACgCvAMoAggEQCAAQYwBaiECIAAoAowBIQUDQCAAKAJ0IgMgBUsEQCAAKAIIIgEEQCABIAM2AgggASAFNgIEIAAgASgCABEBACAAKAKMASEFC0EAIQEgAEEAIAJBACAAKALAAygCBBEHACAFIAAoAowBIgVHDQEMAwsgACAAKAK8AygCBBEBACAAIAAoArwDKAIAEQEAQQAhBSAAQQA2AowBIAAoArwDKAIIDQALCyAAQc4BQc0BIAAoAkQbNgIUQQEhAQsLIAEL0gEBAn8CQAJAIAAoAhQiAUHNAWtBAUsNACAAKAJADQAgACgCjAEgACgCdEkEQCAAKAIAIgFBxQA2AhQgACABKAIAEQEACyAAIAAoArwDKAIEEQEAIABB0gE2AhQMAQsCQAJAIAFBzwFrDgQAAQECAQsgAEHSATYCFAwBCyAAKAIAIgIgATYCGCACQRU2AhQgACAAKAIAKAIAEQEACwJAA0AgACgCzAMiASgCFA0BIAAgASgCABEAAA0AC0EADwsgACAAKAIYKAIYEQEAIAAQugVBAQucBgEFfyAAKAIUIgNBfnFByAFHBEAgACgCACICIAM2AhggAkEVNgIUIAAgACgCACgCABEBAAsCf0EBIQICQAJAAkACQAJAIAAoAhQiA0HIAWsOCwABBAICAgICAgMCAwsgACAAKALMAygCBBEBACAAIAAoAhgoAggRAQAgAEHJATYCFAsgACAAKALMAygCABEAACICQQFHDQIgACgCJCICIQUCQAJAAkACQCACQQFrDgQDAgABAgsgACgC2AEiAygCsAEhBEECIQUgAygCACIGQQFHIgIgAygCWCIDQQJHciAEQQNHckUEQEEDIQIMAwsgAiADQSJHckUEQEEHIQIgBEEjRg0DCyAGQdIARyADQccAR3IgBEHCAEdyRQRAQQIhAgwDCyAGQfIARyADQecAR3JFBEBBBiECIARB4gBGDQMLIAAoApwCBEBBAyECDAMLIAAoAqgCBEBBAiECAkACQCAALQCsAiIDDgIFAAELQQMhAgwECyAAKAIAIgIgAzYCGCACQfQANgIUIABBfyAAKAIAKAIEEQIAQQMhAgwDCyAAKAIAIgIgBjYCGCACQfEANgIUIAIgBDYCICACIAM2AhwgAEEBIAIoAgQRAgBBAyECDAILQQQhBSAAKAKoAkUEQEEEIQIMAgtBBCECAkACQCAALQCsAiIDDgMDAQABC0EFIQIMAgsgACgCACICIAM2AhggAkH0ADYCFCAAQX8gACgCACgCBBECAEEFIQIMAQtBACECQQAhBQsgACAFNgIsIAAgAjYCKCAAQQA2AogBIABBgAI2AmAgAEKCgICAEDcDWCAAQgE3A1AgAEKAgICAEDcDSCAAQgA3A0AgAEKAgICAgICA+D83AzggAEEANgJsIABCADcCZCAAQcoBNgIUIAAgACgCrAMiAjYCNCAAIAI2AjBBAQwDCyAAIAAoAswDKAIAEQAADAILIAAoAgAiAiADNgIYIAJBFTYCFCAAIAAoAgAoAgARAQBBACECCyACCyICQQJGBEAgAQRAIAAoAgAiAUE1NgIUIAAgASgCABEBAAsgABC6BQsgAgsHACAAELkFC6IHAQF/IABBADYCBCABQdoARwRAIAAoAgBCjYCAgKALNwIUIAAoAgAgATYCHCAAIAAoAgAoAgARAQALIAJB6ANHBEAgACgCAEKWgICAgD03AhQgACgCACACNgIcIAAgACgCACgCABEBAAsgACgCACEBIAAoAgwhAiAAQQRqQQBB5AMQORogAEEBNgIQIAAgAjYCDCAAIAE2AgAjAEEQayICJAAgAEEANgIEIAJBADYCDEHUABA3IgFFBEAgACgCAEI4NwIUIAAgACgCACgCABEBAAsgAUGAlOvcAzYCMCABQd8BNgIoIAFB4AE2AiQgAUHhATYCICABQeIBNgIcIAFB4wE2AhggAUHkATYCFCABQeUBNgIQIAFB5gE2AgwgAUHnATYCCCABQegBNgIEIAFB6QE2AgAgAUIANwI0IAFBADYCLCABQdQANgJMIAFCADcCPCABQgA3AkQgACABNgIEAkBBn5cCEI0DIgNFDQAgAkH4ADoACyACIAJBDGo2AgAgAiACQQtqNgIEIANBxpACIAIQpQFBAEwNACACKAIMIQMgAi0AC0HfAXFBzQBGBEAgAiADQegHbCIDNgIMCyABIANB6AdsNgIsCyACQRBqJAAgAEEANgK4AiAAQQA2AhggAEEANgIIIABCADcCpAEgAEIANwKsASAAQgA3ArQBIABCADcCvAEgAEIANwLEASAAQgA3AswBIAAgAEEAQawBIAAoAgQoAgARBAAiATYC0AMgAUIANwJgIAFB/AA2AhwgAUH9ADYCCCABQf4ANgIEIAFB/wA2AgAgAUEANgJoIAFB/AA2AiQgAUH8ADYCKCABQgA3AmwgAUH8ADYCLCABQfwANgIwIAFCADcCdCABQfwANgI0IAFB/AA2AjggAUIANwJ8IAFB/AA2AjwgAUEANgKEASABQUBrQfwANgIAIAFCADcCiAEgAUH8ADYCRCABQfwANgJIIAFB/AA2AkwgAUH8ADYCUCABQgA3ApABIAFB/AA2AlQgAUIANwKYASABQQA2AqABIAFB/AA2AlwgAUGAATYCICABQYABNgJYIABBADYCuAMgAEEANgKQASAAQQA2AtgBIAAoAtADIgFBADYCpAEgAUEANgIYIAFCADcCDCAAIABBAEEcIAAoAgQoAgARBAAiATYCzAMgAUEBNgIYIAFCADcCECABQfgANgIMIAFB+QA2AgggAUH6ADYCBCABQfsANgIAIABByAE2AhQLIgEBfUF/IAAqAgAgASoCAJMiAkMAAAAAXiACQwAAAABdGwsQACABIAIgAyAAKAIAEQQACz4BAn8jAEEQayIEJAAgBEEIaiIDIAEgAiAAKAIAEQYAIAMoAgAQKSADKAIAIQAgAygCABAoIARBEGokACAAC1EBAn8jAEEQayICJAAgACgCACEDIAIgACgCBCIAQQF1IAFqIgEgAEEBcQR/IAEoAgAgA2ooAgAFIAMLEQAANgIMIAIoAgwhACACQRBqJAAgAAs5AQF/IAAoAgQiBEEBdSABaiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRBgALNwEBfyAAKAIEIgNBAXUgAWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxECAAsHACAAERAACwsAIAEgAiAAETQACwsAIAEgAiAAEQIACysCAX8BfCMAQRBrIgIkACACIAEgABEaADkDCCACKwMIIQMgAkEQaiQAIAMLCwAgASACIAARFAALJwEBfyMAQRBrIgEkACABIAAREAA2AgwgASgCDCEAIAFBEGokACAACwkAIAEgABEBAAsPACABIAAoAgBqIAI2AgALDQAgASAAKAIAaigCAAsRACAAKAIAQYQBakEBEPUEAAsYAQF/QRAQWyIAQgA3AwAgAEIANwMIIAALKAEBfyMAQRBrIgMkACADIAEgAiAAEQYAIAMQwAUhACADQRBqJAAgAAs1AQF/IwBBEGsiAiQAIAIgARC/BSACIAIgABEAADYCDCACKAIMIQAgAhA4GiACQRBqJAAgAAsrAQF/IwBBEGsiAyQAIAMgASACIAARAwA2AgwgAygCDCEAIANBEGokACAACzcBAX8jAEEQayIDJAAgAyACEL8FIAMgASADIAARAwA2AgwgAygCDCEAIAMQOBogA0EQaiQAIAALKQEBfyMAQRBrIgIkACACIAEgABEAADYCDCACKAIMIQAgAkEQaiQAIAALLQEBfyMAQRBrIgQkACAEIAEgAiADIAARBAA2AgwgBCgCDCEAIARBEGokACAACx8AIAAgARDHBSIAIAIpAgg3AgggACACKQIANwIAQQELdwECfyABELgBIAJLBEAgASACEMcFIQMjAEEQayICJAAjAEEQayIBJAAgASACQQhqIgQ2AgwgAxDABSEDIAEoAgwgAzYCACABIAEoAgxBCGo2AgwgAUEQaiQAIABBqLICIAQQJzYCACACQRBqJAAPCyAAQQEQdxoLgAMBBH8gASAAELgBIgNLBEAjAEEgayIGJAACQCABIANrIgQgABAyKAIAIAAoAgRrQQR1TQRAIwBBEGsiBSQAIAUgACAEEMIFIgMoAgQhASADKAIIIQQDQCABIARGBEAgAxByIAVBEGokAAUgABAyIAEgAhCWAyADIAFBEGoiATYCBAwBCwsMAQsgABAyIQEgBkEIaiAAIAAQuAEgBGoQxgUgABC4ASABEMUFIQMjAEEQayIBJAAgASADKAIINgIAIAMoAgghBSABIANBCGo2AgggASAFIARBBHRqNgIEIAEoAgAhBANAIAEoAgQgBEcEQCADKAIQIAEoAgAgAhCWAyABIAEoAgBB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CwtB0JUEIAE2AgBBzJUEEDIaQcyVBCgCACEAQcyVBBC6ARogABAxCwsJACAAQQRqEEALCQAgABCyBhAxCwkAIAAQhgQQMQsMACAAEIcEGiAAEDELBwAgACgCCAsHACAAKAIECyUAIAEgAiADIAQgBSAGrSAHrUIghoQgCK0gCa1CIIaEIAARHgALIwAgASACIAMgBCAFrSAGrUIghoQgB60gCK1CIIaEIAARHwALGQAgASACIAMgBCAFrSAGrUIghoQgABEWAAsZACABIAIgA60gBK1CIIaEIAUgBiAAES0ACyIBAX4gASACrSADrUIghoQgBCAAERMAIgVCIIinJAEgBacLBgAgACQACwQAIwALBgBByPwBCwYAQbOQAgsGAEHf+QELGwAgAEUEQEEADwsgAEHw7wNBgPEDEKkBQQBHCxsAIAAgASgCCCAFEHgEQCABIAIgAyAEEKoECws4ACAAIAEoAgggBRB4BEAgASACIAMgBBCqBA8LIAAoAggiACABIAIgAyAEIAUgACgCACgCFBELAAugAgEHfyAAIAEoAgggBRB4BEAgASACIAMgBBCqBA8LIAEtADUhBiAAKAIMIQggAUEAOgA1IAEtADQhByABQQA6ADQgAEEQaiIMIAEgAiADIAQgBRCoBCAGIAEtADUiCnIhBiAHIAEtADQiC3IhBwJAIABBGGoiCSAMIAhBA3RqIghPDQADQCAHQQFxIQcgBkEBcSEGIAEtADYNAQJAIAsEQCABKAIYQQFGDQMgAC0ACEECcQ0BDAMLIApFDQAgAC0ACEEBcUUNAgsgAUEAOwE0IAkgASACIAMgBCAFEKgEIAEtADUiCiAGciEGIAEtADQiCyAHciEHIAlBCGoiCSAISQ0ACwsgASAGQf8BcUEARzoANSABIAdB/wFxQQBHOgA0C5IBACAAIAEoAgggBBB4BEAgASACIAMQqQQPCwJAIAAgASgCACAEEHhFDQACQCACIAEoAhBHBEAgASgCFCACRw0BCyADQQFHDQEgAUEBNgIgDwsgASACNgIUIAEgAzYCICABIAEoAihBAWo2AigCQCABKAIkQQFHDQAgASgCGEECRw0AIAFBAToANgsgAUEENgIsCwvzAQAgACABKAIIIAQQeARAIAEgAiADEKkEDwsCQCAAIAEoAgAgBBB4BEACQCACIAEoAhBHBEAg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AQwBCxB1AAsLEQAgACABIAIgAyAEQQAQ7gYLEQAgACABIAIgAyAEQQAQ7wYLEQAgACABIAIgAyAEQQEQ7gYLEQAgACABIAIgAyAEQQEQ7wYL0QEBAX8jAEEwayIFJAAgBSABNgIoAkAgAigCBEEBcUUEQCAAIAEgAiADIAQgACgCACgCGBEKACECDAELIAVBGGoiACACEE4gABDLAiEBIAAQRQJAIAQEQCAFQRhqIAEQwQEMAQsgBUEYaiABEMABCyAFIAVBGGoQrAE2AhADQCAFIAVBGGoQ+gE2AgggBUEQaiAFQQhqEH0EQCAFQShqIAVBEGoiACgCACwAABDNAyAAEPUCDAEFIAUoAighAiAFQRhqEDgaCwsLIAVBMGokACACC/UCAQF/IwBB4AJrIgAkACAAIAI2AtACIAAgATYC2AIgAEHQAWoQRCEGIABBEGoiAiADEE4gAhCRAUHguANB+rgDIABB4AFqEOUBIAIQRSAAQcABahBEIgMgAxBUED8gACADQQAQQSIBNgK8ASAAIAI2AgwgAEEANgIIA0ACQCAAQdgCaiAAQdACahCLAUUNACAAKAK8ASADEDUgAWpGBEAgAxA1IQIgAyADEDVBAXQQPyADIAMQVBA/IAAgAiADQQAQQSIBajYCvAELIABB2AJqEGhBECABIABBvAFqIABBCGpBACAGIABBEGogAEEMaiAAQeABahDIAg0AIABB2AJqEHoaDAELCyADIAAoArwBIAFrED8gAxBAIQIQXCEBIAAgBTYCACACIAEgABDCB0EBRwRAIARBBDYCAAsgAEHYAmogAEHQAmoQcwRAIAQgBCgCAEECcjYCAAsgACgC2AIhASADEDgaIAYQOBogAEHgAmokACABC9QDAQF+IwBBgANrIgAkACAAIAI2AvACIAAgATYC+AIgAEHYAWogAyAAQfABaiAAQewBaiAAQegBahC8BCAAQcgBahBEIgEgARBUED8gACABQQAQQSICNgLEASAAIABBIGo2AhwgAEEANgIYIABBAToAFyAAQcUAOgAWA0ACQCAAQfgCaiAAQfACahCLAUUNACAAKALEASABEDUgAmpGBEAgARA1IQMgASABEDVBAXQQPyABIAEQVBA/IAAgAyABQQAQQSICajYCxAELIABB+AJqEGggAEEXaiAAQRZqIAIgAEHEAWogACgC7AEgACgC6AEgAEHYAWogAEEgaiAAQRxqIABBGGogAEHwAWoQuwQNACAAQfgCahB6GgwBCwsCQCAAQdgBahA1RQ0AIAAtABdFDQAgACgCHCIDIABBIGprQZ8BSg0AIAAgA0EEajYCHCADIAAoAhg2AgALIAAgAiAAKALEASAEEMQHIAApAwAhBiAFIAApAwg3AwggBSAGNwMAIABB2AFqIABBIGogACgCHCAEEIoBIABB+AJqIABB8AJqEHMEQCAEIAQoAgBBAnI2AgALIAAoAvgCIQIgARA4GiAAQdgBahA4GiAAQYADaiQAIAILvQMAIwBB8AJrIgAkACAAIAI2AuACIAAgATYC6AIgAEHIAWogAyAAQeABaiAAQdwBaiAAQdgBahC8BCAAQbgBahBEIgEgARBUED8gACABQQAQQSICNgK0ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGA0ACQCAAQegCaiAAQeACahCLAUUNACAAKAK0ASABEDUgAmpGBEAgARA1IQMgASABEDVBAXQQPyABIAEQVBA/IAAgAyABQQAQQSICajYCtAELIABB6AJqEGggAEEHaiAAQQZqIAIgAEG0AWogACgC3AEgACgC2AEgAEHIAWogAEEQaiAAQQxqIABBCGogAEHgAWoQuwQNACAAQegCahB6GgwBCwsCQCAAQcgBahA1RQ0AIAAtAAdFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK0ASAEEMUHOQMAIABByAFqIABBEGogACgCDCAEEIoBIABB6AJqIABB4AJqEHMEQCAEIAQoAgBBAnI2AgALIAAoAugCIQIgARA4GiAAQcgBahA4GiAAQfACaiQAIAILvQMAIwBB8AJrIgAkACAAIAI2AuACIAAgATYC6AIgAEHIAWogAyAAQeABaiAAQdwBaiAAQdgBahC8BCAAQbgBahBEIgEgARBUED8gACABQQAQQSICNgK0ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGA0ACQCAAQegCaiAAQeACahCLAUUNACAAKAK0ASABEDUgAmpGBEAgARA1IQMgASABEDVBAXQQPyABIAEQVBA/IAAgAyABQQAQQSICajYCtAELIABB6AJqEGggAEEHaiAA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IS4gErIhMANAIAIgLkYNCUEBIQQgArMhMSAGIAJBAWsiCRBMISAgBiACEEwhFCAGIAJBAWoiBRBMIRcgCiAJEEwhFSAKIAIQTCEhIAogBRBMIRYgByAJEEwhGSAHIAIQTCEbIAcgBRBMIRgDQCAEICRGBEAgBSECDAIFAkAgISAEQQJ0IgJqIgkqAgAQbiA1XQ0AAkACQCAJKgIAIi8gICAEQQFrQQJ0IglqKgIAIjJeRQ0AIC8gAiAgaioCAF5FDQAgLyAgIARBAWpBAnQiDWoqAgBeRQ0AIC8gCSAUaioCAF5FDQAgLyACIBRqKgIAXkUNACAvIA0gFGoqAgBeRQ0AIC8gCSAXaioCAF5FDQAgLyACIBdqKgIAXkUNACAvIA0gF2oqAgBeRQ0AIC8gCSAVaioCAF5FDQAgLyACIBVqKgIAXkUNACAvIA0gFWoqAgBeRQ0AIC8gCSAhaioCAF5FDQAgLyANICFqKgIAXkUNACAvIAkgFmoqAgBeRQ0AIC8gAiAWaioCAF5FDQAgLyANIBZqKgIAXkUNACAvIAkgGWoqAgBeRQ0AIC8gAiAZaioCAF5FDQAgLyANIBlqKgIAXkUNACAvIAkgG2oqAgBeRQ0AIC8gAiAbaioCAF5FDQAgLyANIBtqKgIAXkUNACAvIAkgGGoqAgBeRQ0AIC8gAiAYaioCAF5FDQAgLyANIBhqKgIAXg0BCyAvIDJdRQ0BIC8gAiAgaioCAF1FDQEgLyAgIARBAWpBAnQiDWoqAgBdRQ0BIC8gCSAUaioCAF1FDQEgLyACIBRqKgIAXUUNASAvIA0gFGoqAgBdRQ0BIC8gCSAXaioCAF1FDQEgLyACIBdqKgIAXUUNASAvIA0gF2oqAgBdRQ0BIC8gCSAVaioCAF1FDQEgLyACIBVqKgIAXUUNASAvIA0gFWoqAgBdRQ0BIC8gCSAhaioCAF1FDQEgLyANICFqKgIAXUUNASAvIAkgFmoqAgBdRQ0BIC8gAiAWaioCAF1FDQEgLyANIBZqKgIAXUUNASAvIAkgGWoqAgBdRQ0BIC8gAiAZaioCAF1FDQEgLyANIBlqKgIAXUUNASAvIAkgG2oqAgBdRQ0BIC8gAiAbaioCAF1FDQEgLyANIBtqKgIAXUUNASAvIAkgGGoqAgBdRQ0BIC8gAiAYaioCAF1FDQEgLyANIBhqKgIA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AkEgaiADIA1BEGoQWiACQShqIAMgDUEYahBaIAJBMGogAyANQSBqEFogAkE4aiADIA1BKGoQWiAIIAJBDGoiAyACQQhqIgUgLyA2lBCFAiAGIAggAioCECACKgIUIAIoAgwgAigCCBBYOAIAIAYgCCACKgIYIAIqAhwgAigCDCACKAIIEFg4AgQgBiAIIAIqAiAgAioCJCACKAIMIAIoAggQWDgCCCAGIAggAioCKCACKgIsIAIoAgwgAigCCBBYOAIMIAYgCCACKgIwIAIqAjQgAigCDCACKAIIEFg4AhAgBiAIIAIqAjggAioCPCACKAIMIAIoAggQWDgCFCAIIAMgBSAvIDOUEIUCIAYgCCACKgJAIAIqAkQgAigCDCACKAIIEFg4AhggBiAIIAIqAkggAioCTCACKAIMIAIoAggQWDgCHCAGIAggAioCUCACKgJUIAIoAgwgAigCCBBYOAIgIAYgCCACKgJYIAIqAlwgAigCDCACKAIIEFg4AiQgBiAIIAIqAmAgAioCZCACKAIMIAIoAggQWDgCKCAGIAggAioCaCACKgJsIAIoAgwgAigCCBBYOAIsIAggAyAFIC8gNZQQhQIgBiAIIAIqAnAgAioCdCACKAIMIAIoAggQWDgCMCAGIAggAioCeCACKgJ8IAIoAgwgAigCCBBYOAI0IAYgCCACKgKAASACKgKEASACKAIMIAIoAggQWDgCOCAGIAggAioCiAEgAioCjAEgAigCDCACKAIIEFg4AjwgBiAIIAIqApABIAIqApQBIAIoAgwgAigCCBBYOAJAIAYgCCACKgKYASACKgKcASACKAIMIAIoAggQWDgCRCAIIAMgBSAvIDSUEIUCIAYgCCACKgKgASACKgKkASACKAIMIAIoAggQWDgCSCAGIAggAioCqAEgAioCrAEgAigCDCACKAIIEFg4AkwgBiAIIAIqArABIAIqArQBIAIoAgwgAigCCBBYOAJQIAYgCCACKgK4ASACKgK8ASACKAIMIAIoAggQWDgCVCAGIAggAioCwAEgAioCxAEgAigCDCACKAIIEFg4AlggBiAIIAIqAsgBIAIqAswBIAIoAgwgAigCCBBYOAJcIAggAyAFIC8gMpQQhQIgBiAIIAIqAtABIAIqAtQBIAIoAgwgAigCCBBYOAJgIAYgCCACKgLYASACKgLcASAC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ZyB3b3JrIG92ZXJmbG93LgoAIyMjIEZlYXR1cmUgY2FuZGlkYXRlcyBmb3IgdHJhY2tpbmcgYXJlIG92ZXJmbG93LgoAYXJnbENhbWVyYUZydXN0dW1SSCgpOiBhclBhcmFtRGVjb21wTWF0KCkgaW5kaWNhdGVkIHBhcmFtZXRlciBlcnJvci4KAGFyVmlkZW9PcGVuOiBFcnJvciwgdmlkZW8gZGV2aWNlIGFscmVhZHkgb3Blbi4KAGtwbURlbGV0ZVJlZkRhdGFTZXQoKTogTlVMTCByZWZEYXRhU2V0UHRyL3JlZkltYWdlLgoAU3RhcnQgdHJhY2tpbmdfdGhyZWFkICMlZC4KAE91dCBvZiBtZW1vcnkhIQoARGF0YSBudW0gZXJyb3IhIQoAdwBJRCBhbHJlYWR5IGV4aXN0cwAlcyVzACVzLiVzAHZlY3RvcgAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvb3JpZW50YXRpb25fYXNzaWdubWVudC5jcHAAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZnJhbWV3b3JrL3RpbWVycy5jcHAAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZGV0ZWN0b3JzL2hhcnJpcy5jcHAAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZGV0ZWN0b3JzL0RvR19zY2FsZV9pbnZhcmlhbnRfZGV0ZWN0b3IuY3BwAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL21hdGNoZXJzL2hvdWdoX3NpbWlsYXJpdHlfdm90aW5nLmNwcAAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9mcmFtZXdvcmsvaW1hZ2UuY3BwAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9nYXVzc2lhbl9zY2FsZV9zcGFjZV9weXJhbWlkLmNwcAAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvcHlyYW1pZC5jcHAAaW5mbwBFcnJvcjogaWNwR2V0Sl9VX1hjAHdiAHJiAEFSX1BJWEVMX0ZPUk1BVF9SR0IAUGF0dGVybiBleHRyYWN0aW9uIGZhaWxlZC4AQXNzZXJ0aW9uIGBweXJhbWlkYCBmYWlsZWQgaW4gAFRyYWNraW5nIHRocmVhZCA9ICVkCgBTSVpFID0gJWQsICVkCgBFcnJvciAyOiBpY3BHZXRJbml0WHcyWGMKAD8/PyAyCgBFcnJvcjogdW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0LgoAYXJWaWRlb09wZW5Bc3luYzogRXJyb3IsIHZpZGVvIGRldmljZSBhbHJlYWR5IG9wZW4uCgBVbmtub3duIG9yIHVuc3VwcG9ydGVkIGxhYmVsaW5nIHRocmVzaG9sZCBtb2RlIHJlcXVlc3RlZC4gU2V0IHRvIG1hbnVhbC4KAGtwbURlbGV0ZVJlZkRhdGFTZXQoKTogMCB4c2l6ZS95c2l6ZS9kcGkuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gb3BlbiBjYW1lcmEgcGFyYW1ldGVycyBmaWxlICIlcyIgZm9yIHdyaXRpbmcuCgBFcnJvcjogTlVMTCBwYXR0SGFuZGxlLgoARW5kIHRyYWNraW5nX3RocmVhZCAjJWQuCgBFcnJvcjogdW5hYmxlIHRvIG9wZW4gbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJy4KAE91dCBvZiBtZW1vcnkhIQoAcgAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9tYXRjaGVycy9mcmVhay5oAHdhcm5pbmcAICUxMGcAQnVpbGQgUHlyYW1pZAAlNGQAd2IAcmIAQVJfUElYRUxfRk9STUFUX0JHUgBNQU5VQUwAQVJfUElYRUxfRk9STUFUX1JHQgBHZW5lcmljIGVycm9yIGR1cmluZyBtYXRjaGluZyBwaGFzZS4AIGxpbmUgACVzJXMKAEZpbGUgb3BlbiBlcnJvci4gJXMKAERpc3RvcnRpb24gZmFjdG9yOiBrMT0lMS4xMGYsIGsyPSUxLjEwZiwgcDE9JTEuMTBmLCBwMj0lMS4xMGYKAEVycm9yOiBtYWxsb2MKAEVycm9yIDM6IGljcEdldEluaXRYdzJYYwoARXJyb3IgaWNwR2V0Sl9VX1MKAD09PT09PSAlcyA9PT09PT09PQoAPz8/IDMKAEVycm9yOiBjYW4ndCBsb2FkIHBhdHRlcm4gZnJvbSBOVUxMIGJ1ZmZlci4KAGtwbVNldFJlZkRhdGFTZXQoKTogTlVMTCBrcG1IYW5kbGUvZmlsZW5hbWUuCgBFcnJvciBzYXZpbmcgZmVhdHVyZSBtYXA6IGVycm9yIHdyaXRpbmcgZGF0YS4KAE91dCBvZiBtZW1vcnkhIQoAZXJyb3IARnJlYWsgZmVhdHVyZXMgLSAlZAByYgBBUl9QSVhFTF9GT1JNQVRfQkdSAEFVVE9fTUVESUFOAEFSX1BJWEVMX0ZPUk1BVF9SR0JBAEluc3VmZmljaWVudCBjb250cmFzdCBkdXJpbmcgbWF0Y2hpbmcuACU3LjVmIAAgbGluZSAARXJyb3Igb3BlbmluZyBmaWxlICclcyc6IAAgICAgICAgICAgICAgICAgICBmeD0lZiwgZnk9JWYsIHgwPSVmLCB5MD0lZiwgcz0lZgoARXJyb3IgNDogaWNwR2V0SW5pdFh3MlhjCgBFcnJvciBpY3BHZXRVX2Zyb21fWF9ieV9NYXRYMlUKAEVycm9yIGFsbG9jYXRpbmcgbWVtb3J5LgoARXJyb3I6IG91dCBvZiBtZW1vcnkuCgBFcnJvcjogVW5hYmxlIHRvIG9wZW4gZmlsZSAnJXMnIGZvciB3cml0aW5nLgoARXJyb3I6IHVuYWJsZSB0byBvcGVuIGZpbGUgJyVzJXMnIGZvciByZWFkaW5nLgoAT3V0IG9mIG1lbW9yeSEhCgBTdGVwIHNpemUgbXVzdCBiZSBlcXVhbCB0byB3aWR0aCBmb3Igbm93AEV4dHJhY3QgRmVhdHVyZXMAJXMAV2lkdGggY2Fubm90IGJlIHplcm8AU291cmNlIHdpZHRoIG11c3QgYmUgZXZlbgBJbWFnZSBpcyB0b28gc21hbGwAeCBvdXQgb2YgcmFuZ2UAQ2xvY2sgaGFzIG5vdCBiZWVuIHN0YXJ0ZWQAUHlyYW1pZCBpcyBub3QgYWxsb2NhdGVkACVkAHJiAEFVVE9fT1RTVQBBUl9QSVhFTF9GT1JNQVRfQkdSQQBBUl9QSVhFTF9GT1JNQVRfUkdCQQB3cCBtdXN0IGJlIGF0IGxlYXN0IDEAQmFyY29kZSBtYXRjaGluZyBjb3VsZCBub3QgZmluZCBjb3JyZWN0IGJhcmNvZGUgbG9jYXRvciBwYXR0ZXJuLgBbJXNdIAA6IAAlcyVzCgBEaXN0b3J0aW9uIGZhY3RvciA9ICVmICVmICVmICVmICVmICVmCgBFcnJvciA1OiBpY3BHZXRJbml0WHcyWGMKAEVycm9yIGljcEdldFhjX2Zyb21fWHdfYnlfTWF0WHcyWGMKAEVycm9yIHJlYWRpbmcgaW1hZ2VTZXQuCgBFcnJvciB3aGlsZSBhZGRpbmcgcmVmZXJlbmNlIGRhdGEgc2V0OiBrcG1HZW5SZWZEYXRhU2V0KCkgZmFpbGVkLgoARXJyb3Igb3BlbmluZyAnJXMnLgoAQ2FuJ3Qgb3BlbiBKUEVHIGZpbGUgJyVzJwoAT3V0IG9mIG1lbW9yeSEhCgBQYXR0ZXJuIERhdGEgcmVhZCBlcnJvciEhCgBSZWFkIGVycm9yISEKAFslc10gWyVzXSBbJXNdIDogRm91bmQgJWQgZmVhdHVyZXMAJWYAd2IAQVJfUElYRUxfRk9STUFUX0FCR1IAUHlyYW1pZCBpcyBOVUxMAEFVVE9fQURBUFRJVkUAQVJfUElYRUxfRk9STUFUX0JHUkEAQmFyY29kZSBtYXRjaGluZyBlcnJvciBkZXRlY3Rpb24vY29ycmVjdGlvbiBmb3VuZCB1bnJlY292ZXJhYmxlIGVycm9yLgBFcnJvciBjcmVhdGluZyBmdWxsIGZpbGUgcGF0aCBmcm9tICclcycgYW5kICclcycAQXNzZXJ0aW9uIGB4IDwgbU1heFhgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBoZWlnaHQgPj0gNWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGhlaWdodCA+PSAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaGVpZ2h0ID4gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYG1JbWFnZXMuc2l6ZSgpID4gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYHggPj0gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYG1TdG9wVGltZSA+PSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0ICE9IDBgIGZhaWxlZCBpbiAAJXMlcwoARGlzdG9ydGlvbiBmYWN0b3IgPSAlZiAlZiAlZiAlZiAlZgoARXJyb3IgPSAlZgoARXJyb3IgNjogaWNwR2V0SW5pdFh3MlhjCgAgICAgICAgICBJbWFnZVNpemUgPSAlN2RbcGl4ZWxdCgA9PT09PT09PT0gJWQgPT09PT09PT09PT0KAEltYWdlc2V0IGNvbnRhaW5zICVkIGltYWdlcy4KAEVycm9yOiBVbmFibGUgdG8gb3BlbiBmaWxlICclcycgZm9yIHJlYWRpbmcuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gb3BlbiBjYW1lcmEgcGFyYW1ldGVycyBmaWxlICIlcyIgZm9yIHJlYWRpbmcuCgBFcnJvciBwcm9jZXNzaW5nIG11bHRpbWFya2VyIGNvbmZpZyBmaWxlICclcyc6IEZpcnN0IGxpbmUgbXVzdCBiZSBudW1iZXIgb2YgbWFya2VyIGNvbmZpZ3MgdG8gcmVhZC4KAEVycm9yIHJlYWRpbmcgcGF0dGVybiBmaWxlICclcycuCgBIZWlnaHQgY2Fubm90IGJlIHplcm8AJWYgJWYgJWYgJWYAeCBtdXN0IGJlIHBvc2l0aXZlAExhcGxhY2lhbiBweXJhbWlkIGhhcyBub3QgYmVlbiBhbGxvY2F0ZWQAQ2xvY2sgaGFzIG5vdCBiZWVuIHN0b3BwZWQAQVJfUElYRUxfRk9STUFUX0FCR1IAQVJfUElYRUxfRk9STUFUX01PTk8ARGVzdGluYXRpb24gaXMgTlVMTABBVVRPX0JSQUNLRVRJTkcAaHAgbXVzdCBiZSBhdCBsZWFzdCAxAEVycm9yICglZCk6IHVuYWJsZSB0byBkZXRlcm1pbmUgZmlsZSBsZW5ndGguAE1hdGNoaW5nIGNvbmZpZGVuY2UgY3V0b2ZmIHZhbHVlIG5vdCByZWFjaGVkLgBBc3NlcnRpb24gYHkgPj0gbU1pbllgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbWFnZS50eXBlKCkgPT0gSU1BR0VfVUlOVDhgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBzdG9yZS5zaXplKCkgPT0gcG9pbnRzLnNpemUoKWAgZmFpbGVkIGluIAAgSU5GTyAgACVzJXMKAERpc3RvcnRpb24gZmFjdG9yID0gJWYgJWYgJWYgJWYKAEVycm9yIDc6IGljcEdldEluaXRYdzJYYwoARXh0cmFjdGVkIGZlYXR1cmVzID0gJTdkW3BpeGVsXQoARXJyb3IgaWNwMkdldFRTCgBGYWxsaW5nIGJhY2sgdG8gcmVhZGluZyAnJXMlcycgaW4gQVJUb29sS2l0IHY0LnggZm9ybWF0LgoARXJyb3IgaW4gb3BlbmluZyAnJXMnIGluIHppcGZpbGUuCgBFcnJvciByZWFkaW5nIEpQRUcgZmlsZS4KAEVycm9yIHdoaWxlIGFkZGluZyByZWZlcmVuY2UgZGF0YSBzZXQ6IGtwbU1lcmdlUmVmRGF0YVNldCgpIGZhaWxlZC4KAEVycm9yIHNhdmluZyBmZWF0dXJlIHNldDogZXJyb3Igd3JpdGluZyBkYXRhLgoAT3V0IG9mIG1lbW9yeSEhCgAAAAAAAEAOAAAEEAAAShIAAF0UAABpGAAAQnVpbGQgSW5kZXgAWyVzXSBbJXNdIFslc10gOiAlczogJWYgbXMASW1hZ2UgbXVzdCBiZSBncmF5c2NhbGUAeSBvdXQgb2YgcmFuZ2UARmVhdHVyZSBzdG9yZSBoYXMgbm90IGJlZW4gYWxsb2NhdGVkACVkACVsbHUlYwB3YgBBUl9QSVhFTF9GT1JNQVRfTU9OTwBBUl9QSVhFTF9GT1JNQVRfQVJHQgBNYXhpbXVtIGFsbG93YWJsZSBwb3NlIGVycm9yIGV4Y2VlZGVkLgBBc3NlcnRpb24gYHN0ZXAgPj0gd2lkdGhgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpKzErY2h1bmtfc2l6ZSA8IHdpZHRoYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgcHlyYW1pZC0+bnVtT2N0YXZlcygpID4gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYHNyYyAhPSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeCA8IG1HcmFkaWVudHNbb2N0YXZlKm1OdW1TY2FsZXNQZXJPY3RhdmUrc2NhbGVdLndpZHRoKClgIGZhaWxlZCBpbiAARXJyb3IgaW4gb3BlbmluZyAnJXMnIGZvciByZWFkaW5nCgAgRmlsdGVyZWQgZmVhdHVyZXMgPSAlN2RbcGl4ZWxdCgBMYWJlbGluZyB0aHJlc2hvbGQgbW9kZSBzZXQgdG8gJXMuCgBFcnJvciByZWFkaW5nIEpQRUcgZmlsZSBoZWFkZXIuCgBFcnJvcjogc3VwcGxpZWQgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gQVJUb29sS2l0IGNhbWVyYSBwYXJhbWV0ZXIgZmlsZS4KAGtwbURlbGV0ZVJlZkRhdGFTZXQoKTogTlVMTCByZWZEYXRhU2V0UHRyMS9yZWZEYXRhU2V0UHRyMi4KAENhbid0IHJlYWQgSlBFRyBmaWxlICclcycKAEFSX1BJWEVMX0ZPUk1BVF8ydnV5AFB5cmFtaWQgZG9lcyBub3QgY29udGFpbiBhbnkgbGV2ZWxzAFN0ZXAgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdGhlIHdpZHRoAHggbXVzdCBiZSBsZXNzIHRoYW4gdGhlIGltYWdlIHdpZHRoAEV4dGVuZGluZyBiZXlvbmQgdGhlIHdpZHRoIG9mIHRoZSBpbWFnZQBTb3VyY2UgaXMgTlVMTABBUl9QSVhFTF9GT1JNQVRfQVJHQgBFcnJvciAoJWQpOiB1bmFibGUgdG8gcmVhZCBmcm9tIGZpbGUuAE11bHRpLW1hcmtlciBwb3NlIGVycm9yIHZhbHVlIGV4Y2VlZGVkLgANJTRkLyU0ZC4AQXNzZXJ0aW9uIGBweXJhbWlkYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeSA8IG1NYXhZYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW1hZ2UuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbnVtX3BvaW50cyA9PSBwb2ludHMuc2l6ZSgpYCBmYWlsZWQgaW4gACU3LjVmIAAgSU5GTyAgAGtwbVNldFJlZkRhdGFTZXQoKTogTlVMTCBrcG1IYW5kbGUvcmVmRGF0YVNldC4KAGtwbURlbGV0ZVJlZkRhdGFTZXQoKTogTlVMTCByZWZEYXRhU2V0UHRyLgoARXJyb3I6IHVuYWJsZSB0byBvcGVuIGZpbGUgJyVzJyBmb3Igd3JpdGluZy4KAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJzogcGF0dGVybiAnJXMnIHNwZWNpZmllZCBpbiBtdWx0aW1hcmtlciBjb25maWd1cmF0aW9uIHdoaWxlIGluIGJhcmNvZGUtb25seSBtb2RlLgoARXJyb3I6IFVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdCAoJWQpIHJlcXVlc3RlZC4KAEVycm9yIGluIHJlYWRpbmcgJyVzJy4KAAojIyMgU3VyZmFjZSBOby4lZCAjIyMKAEFSX1BJWEVMX0ZPUk1BVF8ydnV5AEFSX1BJWEVMX0ZPUk1BVF95dXZzACVzAEltYWdlIG11c3QgaGF2ZSAxIGNoYW5uZWwAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvdmlzdWFsX2RhdGFiYXNlLmgAU2hvdWxkIGJlIHNhbWUgc2l6ZQBSZWplY3RlZCBmcmVxdWVudGx5IG1pc3JlY29nbmlzZWQgbWF0cml4IG1hcmtlci4AQXNzZXJ0aW9uIGBidWNrZXRbMF0uZmlyc3QgPj0gYnVja2V0W25dLmZpcnN0YCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgYW5nbGUgPiAtUElgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBjaGFubmVscyA+IDBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBzcmNfd2lkdGggPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeSA+PSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHluYW1pY19jYXN0PGNvbnN0IEJpbm9taWFsUHlyYW1pZDMyZio+KHB5cmFtaWQpYCBmYWlsZWQgaW4gAGtwbVNhdmVSZWZEYXRhU2V0KCk6IE5VTEwgZmlsZW5hbWUvcmVmRGF0YVNldC4KAGtwbVNldFJlZkRhdGFTZXQoKTogcmVmRGF0YVNldC4KAEVycm9yOiBzdXBwbGllZCBidWZmZXIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIEFSVG9vbEtpdCBjYW1lcmEgcGFyYW1ldGVycy4KAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJzogVW5hYmxlIHRvIGRldGVybWluZSBkaXJlY3RvcnkgbmFtZS4KAEVycm9yIGluIHdyaXRpbmcgJyVzJyBpbiB0aGUgemlwZmlsZS4KAEVycm9yIHNhdmluZyBpbWFnZSBzZXQ6IGVycm9yIHdyaXRpbmcgZGF0YS4KAEFSX1BJWEVMX0ZPUk1BVF95dXZzAE51bWJlciBvZiBjaGFubmVscyBjYW5ub3QgYmUgemVybwB5IG11c3QgYmUgcG9zaXRpdmUAV2lkdGggbXVzdCBiZSBwb3NpdGl2ZQBhbmdsZSBvdXQgb2YgcmFuZ2UAT25seSBiaW5vbWlhbCBweXJhbWlkIGlzIHN1cHBvcnRlZABudGhfZWxlbWVudCBmYWlsZWQAQVJfUElYRUxfRk9STUFUX1JHQl81NjUAQXNzZXJ0aW9uIGBtUHlyYW1pZC5zaXplKCkgPT0gbU51bU9jdGF2ZXMqbU51bVNjYWxlc1Blck9jdGF2ZWAgZmFpbGVkIGluIAAgbGluZSAARmllbGQtb2YtdmlldyB2ZXJ0aWNhbCA9ICUuMWYsIGhvcml6b250YWwgPSAlLjFmIGRlZ3JlZXMsIGFzcGVjdCByYXRpbyA9ICUuM2YKAE1heCBmZWF0dXJlID0gJWQKACAgUmVhZCBJbWFnZVNldC4KAEVycm9yIHNhdmluZyBLUE0gZGF0YTogdW5hYmxlIHRvIG9wZW4gZmlsZSAnJXMlcyVzJyBmb3Igd3JpdGluZy4KAEVycm9yICglZCk6IHVuYWJsZSB0byBvcGVuIGV4dGVybmFsIHBhcmFtZXRlcnMgZmlsZSAiJXMiIGZvciB3cml0aW5nLgoARXJyb3IgaW4gY2xvc2luZyAlcyBpbiB0aGUgemlwZmlsZS4KAEF1dG8gdGhyZXNob2xkIChicmFja2V0KSBtYXJrZXIgY291bnRzIC1bJTNkOiAlM2RdIFslM2Q6ICUzZF0gWyUzZDogJTNkXSsuCgBFcnJvciBwcm9jZXNzaW5nIG11bHRpbWFya2VyIGNvbmZpZyBmaWxlICclcyc6IFVuYWJsZSB0byBsb2FkIHBhdHRlcm4gJyVzJy4KAE91dCBvZiBtZW1vcnkhIQoAUHlyYW1pZCBoYXMgbm90IGJlZW4gYWxsb2NhdGVkIHlldAAlbGYAQVJfUElYRUxfRk9STUFUX1JHQl81NjUAQVJfUElYRUxfRk9STUFUX1JHQkFfNTU1MQAuAEFzc2VydGlvbiBgcFswXSA+IHBtMVstMV1gIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBhbmdsZSA8PSBQSWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGQudHlwZSgpID09IElNQUdFX0YzMmAgZmFpbGVkIGluIABBc3NlcnRpb24gYHNyY19oZWlnaHQgPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgb2N0YXZlID49IDBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB5IDwgbUdyYWRpZW50c1tvY3RhdmUqbU51bVNjYWxlc1Blck9jdGF2ZStzY2FsZV0uaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBtRGF0YS5nZXQoKWAgZmFpbGVkIGluIAA6IAAlM2Q6ICglM2QsJTNkKSA6ICVmIG1pbj0lZiBtYXg9JWYsIHNkPSVmCgBwb2ludHMtJWQKAEVycm9yICglZCk6IHVuYWJsZSB0byBvcGVuIGV4dGVybmFsIHBhcmFtZXRlcnMgZmlsZSAiJXMiIGZvciByZWFkaW5nLgoAQXV0byB0aHJlc2hvbGQgKGJyYWNrZXQpIGFkanVzdGVkIHRocmVzaG9sZCB0byAlZC4KAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMuaXNldCcuCgBFcnJvciBpbiBjbG9zaW5nICclcycuCgB5IG11c3QgYmUgbGVzcyB0aGFuIHRoZSBpbWFnZSBoZWlnaHQAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZGV0ZWN0b3JzL2dhdXNzaWFuX3NjYWxlX3NwYWNlX3B5cmFtaWQuaABIZWlnaHQgbXVzdCBiZSBwb3NpdGl2ZQBPbmx5IEYzMiBpbWFnZXMgc3VwcG9ydGVkAFNob3VsZCBiZSBtYXhpbWEARGF0YSBwb2ludGVyIGlzIE5VTEwAUHlyYW1pZCBpcyBOVUxMAEFSX1BJWEVMX0ZPUk1BVF9SR0JBXzQ0NDQAQVJfUElYRUxfRk9STUFUX1JHQkFfNTU1MQBBc3NlcnRpb24gYHNjYWxlID49IG1NaW5TY2FsZWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGltYWdlLndpZHRoKCkgPT0gbVB5cmFtaWRbMF0ud2lkdGgoKWAgZmFpbGVkIGluIABbJSAuM2YgJSAuM2YgJSAuM2ZdIFslIDYuMWZdCgBFcnJvciBwcm9jZXNzaW5nIG11bHRpbWFya2VyIGNvbmZpZyBmaWxlICclcycsIG1hcmtlciBkZWZpbml0aW9uICUzZDogRmlyc3QgbGluZSBtdXN0IGJlIHBhdHRlcm4gd2lkdGguCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gb3BlbiBvcHRpY2FsIHBhcmFtZXRlcnMgZmlsZSAiJXMiIGZvciB3cml0aW5nLgoAa3BtU2V0UmVmRGF0YVNldEZpbGUoKTogTlVMTCBrcG1IYW5kbGUvZmlsZW5hbWUuCgAgICAgZW5kLgoAQXV0byB0aHJlc2hvbGQgKCVzKSBhZGp1c3RlZCB0aHJlc2hvbGQgdG8gJWQuCgAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KAEFSX1BJWEVMX0ZPUk1BVF80MjB2AG1lZGlhbgAlbGYgJWxmICVsZiAlbGYAT2N0YXZlIG11c3QgYmUgcG9zaXRpdmUAc2NhbGUgb3V0IG9mIHJhbmdlAEltYWdlIG9mIHdyb25nIHNpemUgZm9yIHB5cmFtaWQAVW5hYmxlIHRvIGFsbG9jYXRlIGltYWdlIGRhdGEAQVJfUElYRUxfRk9STUFUX1JHQkFfNDQ0NABBc3NlcnRpb24gYGRldGVjdG9yYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgcFswXSA+IHBtMVswXWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGltMS50eXBlKCkgPT0gSU1BR0VfRjMyYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZy5jaGFubmVscygpID09IDJgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBzcmNfc3RlcCA+IDBgIGZhaWxlZCBpbiAAJTNkLCAlM2Q6IG1heF9zaW0gPSAlZgoAICBSZWFkIEZlYXR1cmVTZXQuCgBDYW5ub3QgZmluZCB0aGUgcGFnZSBmb3Igc2tpcHBpbmcuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gb3BlbiBvcHRpY2FsIHBhcmFtZXRlcnMgZmlsZSAiJXMiIGZvciByZWFkaW5nLgoARXJyb3Igc2F2aW5nIEtQTSBkYXRhOiBlcnJvciB3cml0aW5nIGRhdGEuCgBBUl9QSVhFTF9GT1JNQVRfNDIwdgBPdHN1AEFSX1BJWEVMX0ZPUk1BVF80MjBmACVmICVmAFN0ZXAgbXVzdCBiZSBwb3NpdGl2ZQBJbnZhbGlkIGltYWdlIHR5cGUARGV0ZWN0b3IgaXMgTlVMTABOdW1iZXIgb2YgY2hhbm5lbHMgc2hvdWxkIGJlIDIAQXNzZXJ0aW9uIGBvY3RhdmUgPCBtTnVtT2N0YXZlc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYHNjYWxlIDwgbU1heFNj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AAAAWAAAAD0AAABuAAAAGgAAACQAAABqAAAAXQAAADQAAABLAAAAKQAAAEgAAABVAAAAUAAAAGYAAAA8AAAAfAAAAGkAAAAZAAAAKAAAADMAAABlAAAAVAAAABgAAAB7AAAAUwAAADIAAAAxAAAAegAAAHgAAAB5AAAAT2N0YXZlIG11c3QgYmUgbGVzcyB0aGFuIG51bWJlciBvZiBvY3RhdmVzAEFSX1BJWEVMX0ZPUk1BVF80MjBmAEFSX1BJWEVMX0ZPUk1BVF9OVjIxAEFzc2VydGlvbiBgcFswXSA+IHBbLTFdYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0LnR5cGUoKSA9PSBJTUFHRV9GMzJgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBkLmNoYW5uZWxzKCkgPT0gMWAgZmFpbGVkIGluIABBc3NlcnRpb24gYG1heF9oZWlnaHQgPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0X3dpZHRoID4gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYHNpemUgPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKCkuc2l6ZSgpID4gMGAgZmFpbGVkIGluIABQYWdlWyVkXSAgcHJlOiUzZCwgYWZ0OiUzZCwgZXJyb3IgPSAlZgoAJTNkLCAlM2Q6IG1heF9zaW0gPSAlZiwgKG1heCxtaW4pID0gJWYsICVmLCBzZCA9ICVmCgAgIFJlYWQgTWFya2VyU2V0LgoARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnLCBtYXJrZXIgZGVmaW5pdGlvbiAlM2Q6IExpbmVzIDIgLSA0IG11c3QgYmUgbWFya2VyIHRyYW5zZm9ybS4KAEVycm9yIGxvYWRpbmcgS1BNIGRhdGE6IHVuYWJsZSB0byBvcGVuIGZpbGUgJyVzJXMlcycgZm9yIHJlYWRpbmcuCgBQeXJhbWlkIGlzIGVtcHR5AERlc3RpbmF0aW9uIGltYWdlIHNob3VsZCBiZSBhIGZsb2F0AG1yawBzaXplIG11c3QgYmUgcG9zaXRpdmUATWF4aW11bSBiaW4gc2hvdWxkIGJlIHBvc2l0aXZlAE9ubHkgc2luZ2xlIGNoYW5uZWwgaW1hZ2VzIHN1cHBvcnRlZABBUl9QSVhFTF9GT1JNQVRfTlYyMQBBc3NlcnRpb24gYHBbMF0gPiBwWzFdYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0X3N0ZXAgPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgc2NhbGUgPj0gMGAgZmFpbGVkIGluIABKUEVHIGZpbGUgaGFzIHVuc3VwcG9ydGVkICVkLWNvbXBvbmVudCBwaXhlbHMKAEVycm9yIGxvYWRpbmcgS1BNIGRhdGE6IGVycm9yIHJlYWRpbmcgZGF0YS4KAGFyVXRpbEdldFBpeGVsRm9ybWF0TmFtZTogRXJyb3IsIHVucmVjb2duaXNlZCBwaXhlbCBmb3JtYXQgKCVkKS4KAFNjYWxlIG11c3QgYmUgcG9zaXRpdmUAVW5rbm93biBpbWFnZSB0eXBlAEFzc2VydGlvbiBgcFswXSA+IHBwMVstMV1gIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBoaXN0ICE9IE5VTExgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoc3JjX3dpZHRoJTIpID09IDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTEuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbVJlZkltYWdlV2lkdGggPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKClbMF0ud2lkdGgoKSA9PSBkZXRlY3Rvci0+d2lkdGgoKWAgZmFpbGVkIGluIABPdXQgb2YgbWVtb3J5LgoAa3BtQ2hhbmdlUGFnZU5vT2ZSZWZEYXRhU2V0KCk6IE5VTEwgcmVmRGF0YVNldC4KAGFyVmlkZW9VdGlsR2V0UGl4ZWxGb3JtYXROYW1lOiBFcnJvciwgdW5yZWNvZ25pc2VkIHBpeGVsIGZvcm1hdCAoJWQpLgoARXJyb3Igb3BlbmluZyBmaWxlICclcy5tcmsnLgoAJSUlMDJ4AHZlY3RvcgBQeXJhbWlkIGFuZCBkZXRlY3RvciBzaXplIG1pc21hdGNoAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9vcmllbnRhdGlvbl9hc3NpZ25tZW50LmgAJWYgJWYgJWYgJWYAd2lkdGggbXVzdCBiZSBwb3NpdGl2ZQBVbnN1cHBvcnRlZCBpbWFnZSB0eXBlAFNvdXJjZSB3aWR0aCBtdXN0IGJlIG9kZABBc3NlcnRpb24gYHNjYWxlIDwgbU51bVNjYWxlc1Blck9jdGF2ZWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHBbMF0gPiBwcDFbMF1gIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTIuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAC9wcm9jL3NlbGYvZXhlAFNjYWxlIG11c3QgYmUgbGVzcyB0aGFuIG51bWJlciBvZiBzY2FsZSBwZXIgb2N0YXZlAEhpc3RvZ3JhbSBwb2ludGVyIGlzIE5VTEwAQXNzZXJ0aW9uIGBwWzBdID4gcHAxWzFdYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGNodW5rX3NpemUlMik9PTBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBtUmVmSW1hZ2VIZWlnaHQgPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKClbMF0uaGVpZ2h0KCkgPT0gZGV0ZWN0b3ItPmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZC53aWR0aCgpID09IGltMi53aWR0aCgpYCBmYWlsZWQgaW4gAFRyYW5zZm9ybWF0aW9uIG1hdHJpeCByZWFkIGVycm9yISEKAHZlY3RvcgBJbWFnZXMgbXVzdCBoYXZlIHRoZSBzYW1lIHdpZHRoAGpwZwBVbnRlc3RlZCBiZWhhdmlvciBmb3Igb2RkIGNodW5rIHNpemUAaGVpZ2h0IG11c3QgYmUgcG9zaXRpdmUAT2N0YXZlIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYChmYmluKzAuNWYpID4gMCAmJiAoZmJpbi0wLjVmKSA8IG51bV9iaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgYXNzaWdubWVudC5zaXplKCkgPT0gbnVtX2luZGljZXNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAhaXNpbmYodVswXSlgIGZhaWxlZCBpbiAAJXMlcwoAV2lkdGggaXMgemVybwAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9tYXRjaGVycy9ob3VnaF9zaW1pbGFyaXR5X3ZvdGluZy5oAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL21hdGNoZXJzL2JpbmFyeV9oaWVyYXJjaGljYWxfY2x1c3RlcmluZy5oAERlY2ltYWwgYmluIHBvc2l0aW9uIGluZGV4IG91dCBvZiByYW5nZQBTY2FsZSBvdXQgb2YgcmFuZ2UASU5GAEFzc2VydGlvbiBgZC5oZWlnaHQoKSA9PSBpbTIuaGVpZ2h0KClgIGZhaWxlZCBpbiAASW1hZ2VzIG11c3QgaGF2ZSB0aGUgc2FtZSBoZWlnaHQALy4uL3NoYXJlLyVzAEhlaWdodCBpcyB6ZXJvAEFzc2lnbm1lbnQgc2l6ZSB3cm9uZwBBc3NlcnRpb24gYChpbnQpc3RkOjpmbG9vcih4KSA9PSAoaW50KXhgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbmRleCA+PSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbWFnbml0dWRlID49IDBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAhaXNpbmYodVsxXSlgIGZhaWxlZCBpbiAAU3RlcCBpcyB6ZXJvAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9pbnRlcnBvbGF0ZS5oAE1hZ25pdHVkZSBjYW5ub3QgYmUgbmVnYXRpdmUAaW5kZXggb3V0IG9mIHJhbmdlAEhPTUUAQXNzZXJ0aW9uIGBhc3NpZ25tZW50W2ldICE9IC0xYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW0xLndpZHRoKCkgPT0gaW0yLndpZHRoKClgIGZhaWxlZCBpbiAAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZGV0ZWN0b3JzL2hhcnJpcy1pbmxpbmUuaAAvcHJvYy9zZWxmL2NtZGxpbmUAZmxvb3IoKSBhbmQgY2FzdCBub3QgdGhlIHNhbWUAQXNzaWdubWVudCBpcyBpbnZhbGlkAEFzc2VydGlvbiBgbnVtX2JpbnMgPj0gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpblggPj0gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYChpPj4xKSA8IHN0ZDo6Y2VpbCgoc3JjX2hlaWdodC0xKS8yLmYpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW0xLmhlaWdodCgpID09IGltMi5oZWlnaHQoKWAgZmFpbGVkIGluIABJbmRleCBpcyBvdXQgb2YgYm91bmRzAE51bWJlciBiaW5zIG11c3QgYmUgcG9zaXRpdmUAYmluWCBvdXQgb2YgcmFuZ2UAT3V0IG9mIHJhbmdlAERvRyBQeXJhbWlkAHJiAEFzc2VydGlvbiBgKGludClzdGQ6OmZsb29yKHkpID09IChpbnQpeWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGFzc2lnbm1lbnRbaV0gPCBudW1faW5kaWNlc2AgZmFpbGVkIGluIABOb24tbWF4IHN1cHByZXNzaW9uAEFzc2lnbm1lbnQgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgeXAgPj0gMCAmJiB5cCA8IGhlaWdodGAgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpblggPCBtTnVtWEJpbnNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbWFnZS50eXBlKCkgPT0gSU1BR0VfVUlOVDhgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB3MSA+PSAwYCBmYWlsZWQgaW4gACVzOiAlcwoAeXAgb3V0IG9mIGJvdW5kcwBTdWJwaXhlbAB3MSBtdXN0IGJlIHBvc2l0aXZlAFVuYWJsZSB0byBkZXRlcm1pbmUgcHJvY2VzcyBuYW1lAE9ubHkgZ3JheSBzY2FsZSBpbWFnZXMgYXJlIHN1cHBvcnRlZABBc3NlcnRpb24gYGluZGljZXNbYXNzaWdubWVudFtpXV0gPCBudW1fZmVhdHVyZXNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBiaW5ZID49IDBgIGZhaWxlZCBpbiAAcHJ1bmVGZWF0dXJlcwAlcyVzAGJpblkgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgeXBfcGx1c18xID49IDAgJiYgeXBfcGx1c18xIDwgaGVpZ2h0YCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgb2N0YXZlIDwgbU51bU9jdGF2ZXNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB3MiA+PSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaXQtPnNlY29uZC5zaXplKCkgIT0gMGAgZmFpbGVkIGluIABGaW5kIE9yaWVudGF0aW9ucwB5cF9wbHVzXzEgb3V0IG9mIGJvdW5kcwAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvZ2F1c3NpYW5fc2NhbGVfc3BhY2VfcHlyYW1pZC5oAHcyIG11c3QgYmUgcG9zaXRpdmUAQ2x1c3RlciBtdXN0IGhhdmUgYXRsZWFzZXQgMSBmZWF0dXJlAC92YXIvY2FjaGUAQXNzZXJ0aW9uIGBiaW5ZIDwgbU51bVlCaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0W2ldID49IC0yNTgwNjRgIGZhaWxlZCBpbiAALy5jYWNoZQBPY3RhdmUgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYjEgPj0gMCAmJiBiMSA8IG51bV9iaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeHAgPj0gMCAmJiB4cCA8IHdpZHRoYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0W2ldIDw9IDI1ODA2NGAgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpbkFuZ2xlID49IDBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTAuaGVpZ2h0KCkgPT0gaW0xLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbUsgPT0gbUNlbnRlcnMuc2l6ZSgpYCBmYWlsZWQgaW4gAEhlaWdodCBpcyBpbmNvbnNpc3RlbnQAeHAgb3V0IG9mIGJvdW5kcwAlcy8lcwAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9tYXRjaGVycy9rbWVkb2lkcy5oAGIxIGJpbiBpbmRleCBvdXQgb2YgcmFuZ2UAYmluQW5nbGUgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgc2NhbGUgPCBtTnVtU2NhbGVzUGVyT2N0YXZlYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0W2ldIDw9IDQxMjkwMjRgIGZhaWxlZCBpbiAAayBzaG91bGQgbWF0Y2ggdGhlIG51bWJlciBvZiBjbHVzdGVyIGNlbnRlcnMAU2NhbGUgb3V0IG9mIHJhbmdlAC92YXIvbGliAEFzc2VydGlvbiBgYjIgPj0gMCAmJiBiMiA8IG51bV9iaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgYmluQW5nbGUgPCBtTnVtQW5nbGVCaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeHBfcGx1c18xID49IDAgJiYgeHBfcGx1c18xIDwgd2lkdGhgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBkc3RbaV0gPj0gLTQxMjkwMjRgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTAuaGVpZ2h0KCkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAHhwX3BsdXNfMSBvdXQgb2YgYm91bmRzAC8uY29uZmlnAGIyIGJpbiBpbmRleCBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBudW1fZmVhdHVyZXMgPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgYmluU2NhbGUgPj0gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYChpbTEuaGVpZ2h0KCk+PjEpID09IGltMi5oZWlnaHQoKWAgZmFpbGVkIGluIAB2ZWN0b3IATnVtYmVyIG9mIGZlYXR1cmVzIG11c3QgYmUgcG9zaXRpdmUAYmluU2NhbGUgb3V0IG9mIHJhbmdlAFRNUERJUgBBc3NlcnRpb24gYGd4eCA8PSA0MTI5MDI0YCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgdzAgPj0gMCAmJiB3MCA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoaW0wLmhlaWdodCgpPj4xKSA9PSBpbTEuaGVpZ2h0KClgIGZhaWxlZCBpbiAAdmVjdG9yAC90bXAAT3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluU2NhbGUgPCBtTnVtU2NhbGVCaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbnVtX2luZGljZXMgPD0gbnVtX2ZlYXR1cmVzYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZ3h4ID49IDBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoaW0wLmhlaWdodCgpPj4xKSA9PSBpbTIuaGVpZ2h0KClgIGZhaWxlZCBpbiAATW9yZSBpbmRpY2VzIHRoYW4gZmVhdHVyZXMARXJyb3IgbG9va2luZyBmb3IgcmVzb3VyY2VzIGRpcmVjdG9yeSBwYXRoAEFzc2VydGlvbiBgcm93IDwgbUhlaWdodGAgZmFpbGVkIGluIABBc3NlcnRpb24gYG1CdWNrZXRzLnNpemUoKSA9PSBtTnVtQnVja2V0c1hgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBneXkgPD0gNDEyOTAyNGAgZmFpbGVkIGluIABBc3NlcnRpb24gYHcxID49IDAgJiYgdzEgPD0gMS4wMDAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW5kZXggPD0gKGJpblggKyBiaW5ZKm1OdW1YQmlucyArIGJpbkFuZ2xlKm1OdW1YQmlucyptTnVtWUJpbnMgKyBiaW5TY2FsZSptTnVtWEJpbnMqbU51bVlCaW5zKm1OdW1BbmdsZUJpbnMpYCBmYWlsZWQgaW4gAEVycm9yIGNyZWF0aW5nIHJlc291cmNlcyBkaXJlY3RvcnkgcGF0aAAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9mcmFtZXdvcmsvaW1hZ2UuaABCdWNrZXRzIGFyZSBub3QgYWxsb2NhdGVkAEFzc2VydGlvbiBgbnVtX2luZGljZXMgPj0gbUtgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB3MiA+PSAwICYmIHcyIDw9IDEuMDAwMWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGd5eSA+PSAwYCBmYWlsZWQgaW4gAE5vdCBlbm91Z2ggZmVhdHVyZXMAcm93IG91dCBvZiBib3VuZHMAdmVjdG9yAEFzc2VydGlvbiBgbUJ1Y2tldHNbMF0uc2l6ZSgpID09IG1OdW1CdWNrZXRzWWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGd4eSA8PSA0MTI5MDI0YCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgdzMgPj0gMCAmJiB3MyA8PSAxLjAwMDFgIGZhaWxlZCBpbiAARXJyb3I6IFVuYWJsZSB0byBjaGFuZ2Ugd29ya2luZyBkaXJlY3RvcnkgdG8gJyVzJy4KAEFzc2lnbm1lbnQgc2l6ZSBpcyBpbmNvcnJlY3QAQXNzZXJ0aW9uIGBtRmVhdHVyZVBvaW50cy5zaXplKCkgPD0gbU1heE51bUZlYXR1cmVQb2ludHNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBneHkgPj0gLTQxMjkwMjRgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAodzArdzErdzIrdzMpIDw9IDEuMDAwMWAgZmFpbGVkIGluIABBc3NlcnRpb24gYG4gPiAwYCBmYWlsZWQgaW4gAFslIC4zZiAlIC4zZiAlIC4zZl0gWyUgNi4xZl0KAAADAAAAAwAAAAQAAAAEAAAABAAAAAEAAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAQYCtAQunMgQAAACIAAAABQAAAJAAAAAGAAAAmAAAAAkAAACwAAAAGAQAAFMLAAAGDgAA0w8AAC5pc2V0AHJiAE42dmlzaW9uMjVHYXVzc2lhblNjYWxlU3BhY2VQeXJhbWlkRQAAABT6AAC5VgAAVG9vIG1hbnkgZmVhdHVyZSBwb2ludHMAdmVjdG9yAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL3V0aWxzL3BhcnRpYWxfc29ydC5oAEFzc2VydGlvbiBgcG9zID09IDY2NmAgZmFpbGVkIGluIABBc3NlcnRpb24gYG51bV9jZW50ZXJzID4gMGAgZmFpbGVkIGluIABUaGVyZSBtdXN0IGJlIGF0IGxlYXN0IDEgY2VudGVyAG4gbXVzdCBiZSBwb3NpdGl2ZQBQb3NpdGlvbiBpcyBub3Qgd2l0aGluIHJhbmdlAEFzc2VydGlvbiBga3Auc2NhbGUgPCBtTGFwbGFjaWFuUHlyYW1pZC5udW1TY2FsZVBlck9jdGF2ZSgpYCBmYWlsZWQgaW4gAFslc10gWyVzXSBbJXNdIDogRm91bmQgJWQgZmVhdHVyZXMgaW4gcXVlcnkARmVhdHVyZSBwb2ludCBzY2FsZSBpcyBvdXQgb2YgYm91bmRzAEFzc2VydGlvbiBgayA+IDBgIGZhaWxlZCBpbiAAayBtdXN0IGJlIHBvc2l0aXZlAEZpbmQgTWF0Y2hlcyAoMSkAQXNzZXJ0aW9uIGBrcC5zY29yZSA9PSBsYXAxLmdldDxmbG9hdD4oeSlbeF1gIGZhaWxlZCBpbiAAU2NvcmUgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgRG9HIGltYWdlAEhvdWdoIFZvdGluZyAoMSkARmluZCBIb3VnaCBNYXRjaGVzICgxKQBBc3NlcnRpb24gYGJ1Y2tldFswXS5maXJzdCA+PSBidWNrZXRbbl0uZmlyc3RgIGZhaWxlZCBpbiAAbnRoX2VsZW1lbnQgZmFpbGVkAEVzdGltYXRlIEhvbW9ncmFwaHkgKDEpAEZpbmQgSW5saWVycyAoMSkAQXNzZXJ0aW9uIGBvY3RhdmUgPCBtTnVtT2N0YXZlc2AgZmFpbGVkIGluIAAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvZ2F1c3NpYW5fc2NhbGVfc3BhY2VfcHlyYW1pZC5oAEZpbmQgTWF0Y2hlcyAoMikAT2N0YXZlIG91dCBvZiByYW5nZQBIb3VnaCBWb3RpbmcgKDIpAEZpbmQgSG91Z2ggTWF0Y2hlcyAoMikAQXNzZXJ0aW9uIGBzY2FsZSA8IG1OdW1TY2FsZXNQZXJPY3RhdmVgIGZhaWxlZCBpbiAAU2NhbGUgb3V0IG9mIHJhbmdlAEVzdGltYXRlIEhvbW9ncmFwaHkgKDIpAEZpbmQgSW5saWVycyAoMikAQXNzZXJ0aW9uIGBpbmRleCA8IG1JbWFnZXMuc2l6ZSgpYCBmYWlsZWQgaW4gAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9Eb0dfc2NhbGVfaW52YXJpYW50X2RldGVjdG9yLmgAQXNzZXJ0aW9uIGBiZXN0X2luZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KClgIGZhaWxlZCBpbiAAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvZmVhdHVyZV9tYXRjaGVyLWlubGluZS5oAEluZGV4IGlzIG91dCBvZiByYW5nZQBTb21ldGhpbmcgc3RyYW5nZQBBc3NlcnRpb24gYHNjYWxlID49IDBgIGZhaWxlZCBpbiAAU2NhbGUgbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYG1NYXRjaGVzLnNpemUoKSA8PSBmZWF0dXJlczEtPnNpemUoKWAgZmFpbGVkIGluIABOdW1iZXIgb2YgbWF0Y2hlcyBzaG91bGQgYmUgbG93ZXIAU2NhbGUgbXVzdCBiZSBsZXNzIHRoYW4gbnVtYmVyIG9mIHNjYWxlIHBlciBvY3RhdmUAQXNzZXJ0aW9uIGBsYXAwLmhlaWdodCgpID09IGxhcDEuaGVpZ2h0KCkgPT0gbGFwMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYG1Sb290LmdldCgpYCBmYWlsZWQgaW4gAFdpZHRoL2hlaWdodCBhcmUgbm90IGNvbnNpc3RlbnQAUm9vdCBjYW5ub3QgYmUgTlVMTABBc3NlcnRpb24gYG1pbmkgIT0gLTFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAobGFwMC5oZWlnaHQoKSA9PSBsYXAxLmhlaWdodCgpKSAmJiAoKGxhcDEuaGVpZ2h0KCk+PjEpID09IGxhcDIuaGVpZ2h0KCkpYCBmYWlsZWQgaW4gAE1pbmltdW0gaW5kZXggbm90IHNldABBc3NlcnRpb24gYCgobGFwMC53aWR0aCgpPj4xKSA9PSBsYXAxLndpZHRoKCkpICYmIChsYXAxLndpZHRoKCkgPT0gbGFwMi53aWR0aCgpKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYDBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBuIDw9IGluX21hdGNoZXMuc2l6ZSgpYCBmYWlsZWQgaW4gAEltYWdlIHNpemVzIGFyZSBpbmNvbnNpc3RlbnQAU2hvdWxkIGJlIHRoZSBzYW1lAEFzc2VydGlvbiBgYmluWCA+PSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKHgtMSkgPj0gMCAmJiAoeCsxKSA8IGxhcDEud2lkdGgoKWAgZmFpbGVkIGluIAB4IG91dCBvZiBib3VuZHMAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvaG91Z2hfc2ltaWxhcml0eV92b3RpbmcuaABiaW5YIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYCh5LTEpID49IDAgJiYgKHkrMSkgPCBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAHkgb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYGJpblggPCBtTnVtWEJpbnNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBiaW5ZID49IDBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBsYXAwLndpZHRoKCkgPT0gbGFwMS53aWR0aCgpYCBmYWlsZWQgaW4gAEltYWdlIGRpbWVuc2lvbnMgaW5jb25zaXN0ZW50AGJpblkgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluWSA8IG1OdW1ZQmluc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYGxhcDAud2lkdGgoKSA9PSBsYXAyLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBiaW5BbmdsZSA+PSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbGFwMC5oZWlnaHQoKSA9PSBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAGJpbkFuZ2xlIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGxhcDAuaGVpZ2h0KCkgPT0gbGFwMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpbkFuZ2xlIDwgbU51bUFuZ2xlQmluc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYCh4LTEpID49IDAgJiYgKHgrMSkgPCBpbS53aWR0aCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgYmluU2NhbGUgPj0gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYCh5LTEpID49IDAgJiYgKHkrMSkgPCBpbS5oZWlnaHQoKWAgZmFpbGVkIGluIABiaW5TY2FsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGAobGFwMC53aWR0aCgpPj4xKSA9PSBsYXAyLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBiaW5TY2FsZSA8IG1OdW1TY2FsZUJpbnNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAobGFwMC5oZWlnaHQoKT4+MSkgPT0gbGFwMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHhfZGl2XzItMC41ZiA+PSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZGlzdEJpbkFuZ2xlID49IDBgIGZhaWxlZCBpbiAAeF9kaXZfMiBvdXQgb2YgYm91bmRzIG91dCBvZiBib3VuZHMgZm9yIGludGVycG9sYXRpb24AZGlzdEJpbkFuZ2xlIG11c3Qgbm90IGJlIG5lZ2F0aXZlAEFzc2VydGlvbiBgaHlwLnNpemUoKSA+PSA5Km1heF9udW1faHlwb3RoZXNlc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYHlfZGl2XzItMC41ZiA+PSAwYCBmYWlsZWQgaW4gAHlfZGl2XzIgb3V0IG9mIGJvdW5kcyBvdXQgb2YgYm91bmRzIGZvciBpbnRlcnBvbGF0aW9uAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2hvbW9ncmFwaHlfZXN0aW1hdGlvbi9yb2J1c3RfaG9tb2dyYXBoeS5oAGh5cCB2ZWN0b3Igc2hvdWxkIGJlIG9mIHNpemUgOSptYXhfbnVtX2h5cG90aGVzZXMAQXNzZXJ0aW9uIGB4X2Rpdl8yKzAuNWYgPCBsYXAyLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB0bXBfaS5zaXplKCkgPj0gbnVtX3BvaW50c2AgZmFpbGVkIGluIABBc3NlcnRpb24gYHlfZGl2XzIrMC41ZiA8IGxhcDIuaGVpZ2h0KClgIGZhaWxlZCBpbiAAdG1wX2kgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIG51bV9wb2ludHMAQXNzZXJ0aW9uIGAobGFwMC53aWR0aCgpPj4xKSA9PSBsYXAxLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBoeXBfY29zdHMuc2l6ZSgpID49IG1heF9udW1faHlwb3RoZXNlc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYChsYXAwLmhlaWdodCgpPj4xKSA9PSBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAHZlY3RvcgBBc3NlcnRpb24gYG4gPiAwYCBmYWlsZWQgaW4gAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL3V0aWxzL3BhcnRpYWxfc29ydC5oAEFzc2VydGlvbiBgcm93IDwgbUhlaWdodGAgZmFpbGVkIGluIAAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9mcmFtZXdvcmsvaW1hZ2UuaABuIG11c3QgYmUgcG9zaXRpdmUAcm93IG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGBrID4gMGAgZmFpbGVkIGluIABrIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGAoaW50KXN0ZDo6Zmxvb3IoeCkgPT0gKGludCl4YCBmYWlsZWQgaW4gAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9pbnRlcnBvbGF0ZS5oAEFzc2VydGlvbiBgMGAgZmFpbGVkIGluIABGYWlsZWQgdG8gY29tcHV0ZSBtYXRyaXggaW52ZXJzZQBmbG9vcigpIGFuZCBjYXN0IG5vdCB0aGUgc2FtZQBBc3NlcnRpb24gYChpbnQpc3RkOjpmbG9vcih5KSA9PSAoaW50KXlgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB5cCA+PSAwICYmIHlwIDwgaGVpZ2h0YCBmYWlsZWQgaW4gAHlwIG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGB5cF9wbHVzXzEgPj0gMCAmJiB5cF9wbHVzXzEgPCBoZWlnaHRgIGZhaWxlZCBpbiAAeXBfcGx1c18xIG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGB4cCA+PSAwICYmIHhwIDwgd2lkdGhgIGZhaWxlZCBpbiAAeHAgb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYHhwX3BsdXNfMSA+PSAwICYmIHhwX3BsdXNfMSA8IHdpZHRoYCBmYWlsZWQgaW4gAHhwX3BsdXNfMSBvdXQgb2YgYm91bmRzAEFzc2VydGlvbiBgdzAgPj0gMCAmJiB3MCA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAT3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgdzEgPj0gMCAmJiB3MSA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB3MiA+PSAwICYmIHcyIDw9IDEuMDAwMWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHczID49IDAgJiYgdzMgPD0gMS4wMDAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKHcwK3cxK3cyK3czKSA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAAAAAAADgVgAAEQAAABIAAAAAAAAAJG0AABMAAAAUAAAATjZ2aXNpb245RXhjZXB0aW9uRQA8+gAA5GwAAFT7AABONnZpc2lvbjE4Qmlub21pYWxQeXJhbWlkMzJmRQAAADz6AAAEbQAA4FYAAAAAAAD4bAAADwAAABUAAAAWAAAAuVKMPo5a5z65Uow+AAAAAAAAAAD4bQAAFwAAABgAAAAZAAAAGgAAABsAAABOU3QzX18yMjBfX3NoYXJlZF9wdHJfcG9pbnRlcklQTjZ2aXNpb244S2V5ZnJhbWVJTGk5NkVFRU5TXzEwc2hhcmVkX3B0cklTM19FMjdfX3NoYXJlZF9wdHJfZGVmYXVsdF9kZWxldGVJUzNfUzNfRUVOU185YWxsb2NhdG9ySVMzX0VFRUUAPPoAAHBtAAC09wAATlN0M19fMjEwc2hhcmVkX3B0cklONnZpc2lvbjhLZXlmcmFtZUlMaTk2RUVFRTI3X19zaGFyZWRfcHRyX2RlZmF1bHRfZGVsZXRlSVMzX1MzX0VFAGJvb2wgdmlzaW9uOjpWaXN1YWxEYXRhYmFzZTx2aXNpb246OkZSRUFLRXh0cmFjdG9yLCB2aXNpb246OkJpbmFyeUZlYXR1cmVTdG9yZSwgdmlzaW9uOjpCaW5hcnlGZWF0dXJlTWF0Y2hlcjw5Nj4+OjpxdWVyeShjb25zdCBHYXVzc2lhblNjYWxlU3BhY2VQeXJhbWlkICopIFtGRUFUVVJFX0VYVFJBQ1RPUiA9IHZpc2lvbjo6RlJFQUtFeHRyYWN0b3IsIFNUT1JFID0gdmlzaW9uOjpCaW5hcnlGZWF0dXJlU3RvcmUsIE1BVENIRVIgPSB2aXNpb246OkJpbmFyeUZlYXR1cmVNYXRjaGVyPDk2Pl0AaHlwX2Nvc3RzIHZlY3RvciBzaG91bGQgYmUgb2Ygc2l6ZSBtYXhfbnVtX2h5cG90aGVzZXMAQbTfAQvfULK+uT4S3KC+kL45PhLcoL6Qvjm+AAAAgLK+ub4S3KA+kL45vhLcoD6Qvjk+0nIYvwAAAADScpi+OgYEv9JymD46BgS/0nIYPwAAAIDScpg+OgYEP9JymL46BgQ/AAAAgFa4Pb9mTSQ/Vri9vmZNJD9WuL0+AAAAAFa4PT9mTSS/Vri9PmZNJL9WuL2+DOlYPwAAAIAM6dg+mdk7Pwzp2L6Z2Ts/DOlYvwAAAAAM6di+mdk7vwzp2D6Z2Tu/AAAAAPxTbj/xZU6/DVTuPvFlTr8NVO6+AAAAgPxTbr/xZU4/DVTuvvFlTj8NVO4+AACAvwAAAAAAAAC/0LNdvwAAAD/Qs12/AACAPwAAAIAAAAA/0LNdPwAAAL/Qs10/AAAAADhxAAAXAAAAHAAAAB0AAAAeAAAAHwAAAE5TdDNfXzIyMF9fc2hhcmVkX3B0cl9wb2ludGVySVBoMTZOdWxsQXJyYXlEZWxldGVySWhFTlNfOWFsbG9jYXRvckloRUVFRQAAAAA8+gAA7HAAALT3AAAxNk51bGxBcnJheURlbGV0ZXJJaEUAAAAAAAAA4HEAABcAAAAgAAAAIQAAACIAAAAjAAAATlN0M19fMjIwX19zaGFyZWRfcHRyX3BvaW50ZXJJUGhOU18xMHNoYXJlZF9wdHJJaEUyN19fc2hhcmVkX3B0cl9kZWZhdWx0X2RlbGV0ZUloaEVFTlNfOWFsbG9jYXRvckloRUVFRQA8+gAAeHEAALT3AABOU3QzX18yMTBzaGFyZWRfcHRySWhFMjdfX3NoYXJlZF9wdHJfZGVmYXVsdF9kZWxldGVJaGhFRQB2aXNpb246OlNjb3BlZFRpbWVyOjp+U2NvcGVkVGltZXIoKQBpbmZpbml0eQBNaXNzaW5nIEh1ZmZtYW4gY29kZSB0YWJsZSBlbnRyeQBGZWJydWFyeQBKYW51YXJ5AEp1bHkAVGh1cnNkYXkAVHVlc2RheQBXZWRuZXNkYXkAU2F0dXJkYXkAU3VuZGF5AE1vbmRheQBGcmlkYXkATWF5ACVtLyVkLyV5AE1BWF9BTExPQ19DSFVOSyBpcyB3cm9uZywgcGxlYXNlIGZpeABBTElHTl9UWVBFIGlzIHdyb25nLCBwbGVhc2UgZml4AHNldE1hcmtlckluZm9WZXJ0ZXgATm90IGEgSlBFRyBmaWxlOiBzdGFydHMgd2l0aCAweCUwMnggMHglMDJ4AENvcnJ1cHQgSlBFRyBkYXRhOiAldSBleHRyYW5lb3VzIGJ5dGVzIGJlZm9yZSBtYXJrZXIgMHglMDJ4AFVuZXhwZWN0ZWQgbWFya2VyIDB4JTAyeABVbnN1cHBvcnRlZCBtYXJrZXIgdHlwZSAweCUwMngAVW5zdXBwb3J0ZWQgSlBFRyBwcm9jZXNzOiBTT0YgdHlwZSAweCUwMngARGVmaW5lIEh1ZmZtYW4gVGFibGUgMHglMDJ4AERlZmluZSBBcml0aG1ldGljIFRhYmxlIDB4JTAyeDogMHglMDJ4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAQm9ndXMgREFDIHZhbHVlIDB4JXgAX19uZXh0X3ByaW1lIG92ZXJmbG93AEh1ZmZtYW4gY29kZSBzaXplIHRhYmxlIG92ZXJmbG93AE5vdgBUaHUAICAgICAgICAlNHUgJTR1ICU0dSAlNHUgJTR1ICU0dSAlNHUgJTR1AEpQRUcgcGFyYW1ldGVyIHN0cnVjdCBtaXNtYXRjaDogbGlicmFyeSB0aGlua3Mgc2l6ZSBpcyAldSwgY2FsbGVyIGV4cGVjdHMgJXUARGVmaW5lIFJlc3RhcnQgSW50ZXJ2YWwgJXUAV2FybmluZzogdGh1bWJuYWlsIGltYWdlIHNpemUgZG9lcyBub3QgbWF0Y2ggZGF0YSBsZW5ndGggJXUATWlzY2VsbGFuZW91cyBtYXJrZXIgMHglMDJ4LCBsZW5ndGggJXUASkZJRiBleHRlbnNpb24gbWFya2VyOiB0eXBlIDB4JTAyeCwgbGVuZ3RoICV1AEpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogcGFsZXR0ZSB0aHVtYm5haWwgaW1hZ2UsIGxlbmd0aCAldQBKRklGIGV4dGVuc2lvbiBtYXJrZXI6IEpQRUctY29tcHJlc3NlZCB0aHVtYm5haWwgaW1hZ2UsIGxlbmd0aCAldQBKRklGIGV4dGVuc2lvbiBtYXJrZXI6IFJHQiB0aHVtYm5haWwgaW1hZ2UsIGxlbmd0aCAldQBVbmtub3duIEFQUDE0IG1hcmtlciAobm90IEFkb2JlKSwgbGVuZ3RoICV1AFVua25vd24gQVBQMCBtYXJrZXIgKG5vdCBKRklGKSwgbGVuZ3RoICV1AE9idGFpbmVkIFhNUyBoYW5kbGUgJXUARnJlZWQgWE1TIGhhbmRsZSAldQBPYnRhaW5lZCBFTVMgaGFuZGxlICV1AEZyZWVkIEVNUyBoYW5kbGUgJXUAdW5zdXBwb3J0ZWQgbG9jYWxlIGZvciBzdGFuZGFyZCBpbnB1dABBdWd1c3QAZ2V0VHJhbnNNYXRNdWx0aVNxdWFyZVJvYnVzdABJbnZhbGlkIGNyb3AgcmVxdWVzdABVbnN1cHBvcnRlZCBjb2xvciBjb252ZXJzaW9uIHJlcXVlc3QAdW5zaWduZWQgc2hvcnQAZ2V0TXVsdGlNYXJrZXJDb3VudABnZXRUcmFuc01hdFNxdWFyZUNvbnQAdW5zaWduZWQgaW50AENvcnJ1cHQgSlBFRyBkYXRhOiBwcmVtYXR1cmUgZW5kIG9mIGRhdGEgc2VnbWVudABoZWlnaHQARnJhY3Rpb25hbCBzYW1wbGluZyBub3QgaW1wbGVtZW50ZWQgeWV0AENDSVI2MDEgc2FtcGxpbmcgbm90IGltcGxlbWVudGVkIHlldABOb3QgaW1wbGVtZW50ZWQgeWV0AGZzZXQAZ2V0AE9jdABmbG9hdABTYXQAdWludDY0X3QAQ2Fubm90IHF1YW50aXplIG1vcmUgdGhhbiAlZCBjb2xvciBjb21wb25lbnRzAFN0YXJ0IE9mIFNjYW46ICVkIGNvbXBvbmVudHMAQm9ndXMgdmlydHVhbCBhcnJheSBhY2Nlc3MAQm9ndXMgc2FtcGxpbmcgZmFjdG9ycwBRdWFudGl6aW5nIHRvICVkID0gJWQqJWQqJWQgY29sb3JzAFF1YW50aXppbmcgdG8gJWQgY29sb3JzAENhbm5vdCBxdWFudGl6ZSB0byBmZXdlciB0aGFuICVkIGNvbG9ycwBDYW5ub3QgcXVhbnRpemUgdG8gbW9yZSB0aGFuICVkIGNvbG9ycwBJbnZhbGlkIEpQRUcgZmlsZSBzdHJ1Y3R1cmU6IHR3byBTT0kgbWFya2VycwBJbnZhbGlkIEpQRUcgZmlsZSBzdHJ1Y3R1cmU6IHR3byBTT0YgbWFya2VycwBuZnRNYXJrZXJzAFNtb290aGluZyBub3Qgc3VwcG9ydGVkIHdpdGggbm9uc3RhbmRhcmQgc2FtcGxpbmcgcmF0aW9zAE1heGltdW0gc3VwcG9ydGVkIGltYWdlIGRpbWVuc2lvbiBpcyAldSBwaXhlbHMAQXBwbGljYXRpb24gdHJhbnNmZXJyZWQgdG9vIG1hbnkgc2NhbmxpbmVzAEFwcGxpY2F0aW9uIHRyYW5zZmVycmVkIHRvbyBmZXcgc2NhbmxpbmVzAEZhaWxlZCB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgJXMAQ2xvc2VkIHRlbXBvcmFyeSBmaWxlICVzAE9wZW5lZCB0ZW1wb3JhcnkgZmlsZSAlcwBBcHIAdmVjdG9yAElucHV0IGZpbGUgcmVhZCBlcnJvcgBzZXRNYXJrZXJJbmZvRGlyAEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogbWlzc2luZyBTT1MgbWFya2VyAG5mdE1hcmtlcgBnZXRNYXJrZXIAZGV0ZWN0TWFya2VyAF9hZGRNdWx0aU1hcmtlcgBnZXRNdWx0aUVhY2hNYXJrZXIAX2FkZE1hcmtlcgBnZXRORlRNYXJrZXIAZGV0ZWN0TkZUTWFya2VyAF9hZGRORlRNYXJrZXIAT2N0b2JlcgBOb3ZlbWJlcgBTZXB0ZW1iZXIARGVjZW1iZXIAdW5zaWduZWQgY2hhcgBpb3NfYmFzZTo6Y2xlYXIATWFyAFVucmVjb2duaXplZCBjb21wb25lbnQgSURzICVkICVkICVkLCBhc3N1bWluZyBZQ2JDcgBzZXR1cABWaXJ0dWFsIGFycmF5IGNvbnRyb2xsZXIgbWVzc2VkIHVwAFNlcAAlSTolTTolUyAlcABzZXRQYXR0UmF0aW8AZ2V0UGF0dFJhdGlvAHRlYXJkb3duAFN1bgBKdW4Ac3RkOjpleGNlcHRpb24AQm9ndXMgSHVmZm1hbiB0YWJsZSBkZWZpbml0aW9uAFNlbGVjdGVkICVkIGNvbG9ycyBmb3IgcXVhbnRpemF0aW9uAEltYWdlIHRvbyB3aWRlIGZvciB0aGlzIGltcGxlbWVudGF0aW9uAE1vbgBuYW4ARGlkbid0IGV4cGVjdCBtb3JlIHRoYW4gb25lIHNjYW4AU2FtcGxpbmcgZmFjdG9ycyB0b28gbGFyZ2UgZm9yIGludGVybGVhdmVkIHNjYW4ASmFuAGdldE1hcmtlck51bQBnZXRNdWx0aU1hcmtlck51bQBKdWwAYm9vbABCdWZmZXIgcGFzc2VkIHRvIEpQRUcgbGlicmFyeSBpcyB0b28gc21hbGwAQXByaWwAc2V0TG9nTGV2ZWwAZ2V0TG9nTGV2ZWwAZW1zY3JpcHRlbjo6dmFsAHB1c2hfYmFjawBGcmkAZHBpAGJhZF9hcnJheV9uZXdfbGVuZ3RoAEJvZ3VzIG1hcmtlciBsZW5ndGgAd2lkdGgATWFyY2gAQXVnAHVuc2lnbmVkIGxvbmcAc3RkOjp3c3RyaW5nAGJhc2ljX3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBDb3B5cmlnaHQgKEMpIDIwMTgsIFRob21hcyBHLiBMYW5lLCBHdWlkbyBWb2xsYmVkaW5nAGluZgAlLjBMZgAlTGYAcmVzaXplAHRydWUAVHVlAGZhbHNlAFN1c3BlbnNpb24gbm90IGFsbG93ZWQgaGVyZQBnZXRUcmFuc01hdFNxdWFyZQBnZXRUcmFuc01hdE11bHRpU3F1YXJlAHNldE1hdHJpeENvZGVUeXBlAGdldE1hdHJpeENvZGVUeXBlAEp1bmUAc2V0UHJvamVjdGlvbk5lYXJQbGFuZQBnZXRQcm9qZWN0aW9uTmVhclBsYW5lAHNldFByb2plY3Rpb25GYXJQbGFuZQBnZXRQcm9qZWN0aW9uRmFyUGxhbmUAUmVxdWVzdGVkIGZlYXR1cmUgd2FzIG9taXR0ZWQgYXQgY29tcGlsZSB0aW1lAFNlZWsgZmFpbGVkIG9uIHRlbXBvcmFyeSBmaWxlAFJlYWQgZmFpbGVkIG9uIHRlbXBvcmFyeSBmaWxlAEVtcHR5IGlucHV0IGZpbGUAUHJlbWF0dXJlIGVuZCBvZiBpbnB1dCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgSlBFRyBmaWxlAHNldENhbWVyYSgpOiBFcnJvciBjcmVhdGluZyAzRCBoYW5kbGUAZG91YmxlAERDVCBjb2VmZmljaWVudCBvdXQgb2YgcmFuZ2UASW52YWxpZCBjb2xvciBxdWFudGl6YXRpb24gbW9kZSBjaGFuZ2UASlBFRyBkYXRhc3RyZWFtIGNvbnRhaW5zIG5vIGltYWdlACAgICB3aXRoICVkIHggJWQgdGh1bWJuYWlsIGltYWdlAGdldFByb2Nlc3NpbmdJbWFnZQBTdGFydCBvZiBJbWFnZQBFbmQgT2YgSW1hZ2UAQm9ndXMgYnVmZmVyIGNvbnRyb2wgbW9kZQBDb3JydXB0IEpQRUcgZGF0YTogYmFkIEh1ZmZtYW4gY29kZQBDb3JydXB0IEpQRUcgZGF0YTogYmFkIGFyaXRobWV0aWMgY29kZQBzZXRQYXR0ZXJuRGV0ZWN0aW9uTW9kZQBnZXRQYXR0ZXJuRGV0ZWN0aW9uTW9kZQBzZXREZWJ1Z01vZGUAZ2V0RGVidWdNb2RlAHNldExhYmVsaW5nTW9kZQBnZXRMYWJlbGluZ01vZGUAc2V0VGhyZXNob2xkTW9kZQBnZXRUaHJlc2hvbGRNb2RlAHNldEltYWdlUHJvY01vZGUAZ2V0SW1hZ2VQcm9jTW9kZQBCb2d1cyBpbnB1dCBjb2xvcnNwYWNlAEJvZ3VzIEpQRUcgY29sb3JzcGFjZQBzZXRUaHJlc2hvbGQAZ2V0VGhyZXNob2xkAHZvaWQAQmFja2luZyBzdG9yZSBub3Qgc3VwcG9ydGVkAERDVCBzY2FsZWQgYmxvY2sgc2l6ZSAlZHglZCBub3Qgc3VwcG9ydGVkAFF1YW50aXphdGlvbiB0YWJsZSAweCUwMnggd2FzIG5vdCBkZWZpbmVkAEh1ZmZtYW4gdGFibGUgMHglMDJ4IHdhcyBub3QgZGVmaW5lZABBcml0aG1ldGljIHRhYmxlIDB4JTAyeCB3YXMgbm90IGRlZmluZWQAV3JpdGUgdG8gWE1TIGZhaWxlZABSZWFkIGZyb20gWE1TIGZhaWxlZABXcml0ZSB0byBFTVMgZmFpbGVkAFJlYWQgZnJvbSBFTVMgZmFpbGVkAFdlZAAgICAgICAgICUzZCAlM2QgJTNkICUzZCAlM2QgJTNkICUzZCAlM2QAV2FybmluZzogdW5rbm93biBKRklGIHJldmlzaW9uIG51bWJlciAlZC4lMDJkAENvcnJ1cHQgSlBFRyBkYXRhOiBmb3VuZCBtYXJrZXIgMHglMDJ4IGluc3RlYWQgb2YgUlNUJWQAU3RhcnQgT2YgRnJhbWUgMHglMDJ4OiB3aWR0aD0ldSwgaGVpZ2h0PSV1LCBjb21wb25lbnRzPSVkACAgICBDb21wb25lbnQgJWQ6ICVkaHglZHYgcT0lZABJbnZhbGlkIHByb2dyZXNzaXZlIHBhcmFtZXRlcnMgU3M9JWQgU2U9JWQgQWg9JWQgQWw9JWQAICBTcz0lZCwgU2U9JWQsIEFoPSVkLCBBbD0lZAAgICAgQ29tcG9uZW50ICVkOiBkYz0lZCBhYz0lZABJbnZhbGlkIHByb2dyZXNzaXZlIHBhcmFtZXRlcnMgYXQgc2NhbiBzY3JpcHQgZW50cnkgJWQASW52YWxpZCBzY2FuIHNjcmlwdCBhdCBlbnRyeSAlZABCb2d1cyBEUVQgaW5kZXggJWQAQm9ndXMgREhUIGluZGV4ICVkAEJvZ3VzIERBQyBpbmRleCAlZABUb28gbWFueSBjb2xvciBjb21wb25lbnRzOiAlZCwgbWF4ICVkAEluY29uc2lzdGVudCBwcm9ncmVzc2lvbiBzZXF1ZW5jZSBmb3IgY29tcG9uZW50ICVkIGNvZWZmaWNpZW50ICVkAFdyb25nIEpQRUcgbGlicmFyeSB2ZXJzaW9uOiBsaWJyYXJ5IGlzICVkLCBjYWxsZXIgZXhwZWN0cyAlZABBdCBtYXJrZXIgMHglMDJ4LCByZWNvdmVyeSBhY3Rpb24gJWQAVW5zdXBwb3J0ZWQgSlBFRyBkYXRhIHByZWNpc2lvbiAlZABEZWZpbmUgUXVhbnRpemF0aW9uIFRhYmxlICVkICBwcmVjaXNpb24gJWQAQWRvYmUgQVBQMTQgbWFya2VyOiB2ZXJzaW9uICVkLCBmbGFncyAweCUwNHggMHglMDR4LCB0cmFuc2Zvcm0gJWQASW1wcm9wZXIgY2FsbCB0byBKUEVHIGxpYnJhcnkgaW4gc3RhdGUgJWQAQ2Fubm90IHRyYW5zY29kZSBkdWUgdG8gbXVsdGlwbGUgdXNlIG9mIHF1YW50aXphdGlvbiB0YWJsZSAlZABVbmtub3duIEFkb2JlIGNvbG9yIHRyYW5zZm9ybSBjb2RlICVkAEludmFsaWQgbWVtb3J5IHBvb2wgY29kZSAlZABCb2d1cyBtZXNzYWdlIGNvZGUgJWQASkZJRiBBUFAwIG1hcmtlcjogdmVyc2lvbiAlZC4lMDJkLCBkZW5zaXR5ICVkeCVkICAlZABzdGQ6OmJhZF9hbGxvYwBEZWMAJWxkJWMAQ29tcG9uZW50IGluZGV4ICVkOiBtaXNtYXRjaGluZyBzYW1wbGluZyByYXRpbyAlZDolZCwgJWQ6JWQsICVjAEZlYgByd2EAU2NhbiBzY3JpcHQgZG9lcyBub3QgdHJhbnNtaXQgYWxsIGRhdGEAZ2V0TkZURGF0YQBfbG9hZENhbWVyYQBBUl9VU0VfVFJBQ0tJTkdfSElTVE9SWQBBUl9OT1VTRV9UUkFDS0lOR19ISVNUT1JZACVhICViICVkICVIOiVNOiVTICVZAFBPU0lYAEFSX1RFTVBMQVRFX01BVENISU5HX0NPTE9SX0FORF9NQVRSSVgAQVJfVEVNUExBVEVfTUFUQ0hJTkdfTU9OT19BTkRfTUFUUklYAEFSX0xBQkVMSU5HX1RIUkVTSF9NT0RFX0FVVE9fT1RTVQBBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfTUFUQ0hfQ09OVFJBU1QAQVJfTUFYX0xPT1BfQ09VTlQASW52YWxpZCBjb21wb25lbnQgSUQgJWQgaW4gU09TAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9IRVVSSVNUSUNfVFJPVUJMRVNPTUVfTUFUUklYX0NPREVTAEVSUk9SX01BUktFUl9JTkRFWF9PVVRfT0ZfQk9VTkRTACVIOiVNOiVTAEFSX0xPR19MRVZFTF9FUlJPUgBBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfUE9TRV9FUlJPUgBBUl9URU1QTEFURV9NQVRDSElOR19DT0xPUgBBUl9URU1QTEFURV9NQVRDSElOR19NT05PAEFSX0xPR19MRVZFTF9JTkZPAEFSX0xPR19MRVZFTF9SRUxfSU5GTwBBUl9MT0dfTEVWRUxfV0FSTgBBUl9NQVRSSVhfQ09ERV9ERVRFQ1RJT04AQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX1BBVFRFUk5fRVhUUkFDVElPTgBBUl9MQUJFTElOR19CTEFDS19SRUdJT04AQVJfTEFCRUxJTkdfV0hJVEVfUkVHSU9OAE5BTgBBUl9MQUJFTElOR19USFJFU0hfTU9ERV9BVVRPX01FRElBTgBQTQBKUEVHTUVNAEFNAExDX0FMTABBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfTUFUQ0hfQkFSQ09ERV9FRENfRkFJTABBUl9MQUJFTElOR19USFJFU0hfTU9ERV9NQU5VQUwAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX1BPU0VfRVJST1JfTVVMVEkAQVJfTE9PUF9CUkVBS19USFJFU0gAQVJfREVGQVVMVF9MQUJFTElOR19USFJFU0gAQVJfTE9HX0xFVkVMX0RFQlVHAExBTkcASW52YWxpZCBTT1MgcGFyYW1ldGVycyBmb3Igc2VxdWVudGlhbCBKUEVHAENhdXRpb246IHF1YW50aXphdGlvbiB0YWJsZXMgYXJlIHRvbyBjb2Fyc2UgZm9yIGJhc2VsaW5lIEpQRUcASW52YWxpZCBKUEVHIGZpbGUgc3RydWN0dXJlOiAlcyBiZWZvcmUgU09GAElORgBBUl9MQUJFTElOR19USFJFU0hfTU9ERV9BVVRPX0FEQVBUSVZFAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9OT05FAEFSX0RFQlVHX0RJU0FCTEUAQVJfREVCVUdfRU5BQkxFAEFSX0lNQUdFX1BST0NfRlJBTUVfSU1BR0UAQVJfSU1BR0VfUFJPQ19GSUVMRF9JTUFHRQBBUl9ERUZBVUxUX1BBVFRFUk5fREVURUNUSU9OX01PREUAQVJfREVGQVVMVF9NQVJLRVJfRVhUUkFDVElPTl9NT0RFAEFSX0RFRkFVTFRfREVCVUdfTU9ERQBBUl9ERUZBVUxUX0xBQkVMSU5HX01PREUAQVJfREVGQVVMVF9JTUFHRV9QUk9DX01PREUAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX01BVENIX0NPTkZJREVOQ0UARVJST1JfQVJDT05UUk9MTEVSX05PVF9GT1VORABFUlJPUl9NVUxUSU1BUktFUl9OT1RfRk9VTkQAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX01BVENIX0JBUkNPREVfTk9UX0ZPVU5EAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9NQVRDSF9HRU5FUklDAE91dHB1dCBmaWxlIHdyaXRlIGVycm9yIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8AV3JpdGUgZmFpbGVkIG9uIHRlbXBvcmFyeSBmaWxlIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZmxvYXQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgAwMTIzNDU2Nzg5ADljICAxNC1KYW4tMjAxOABDLlVURi04AEFSX01BVFJJWF9DT0RFXzV4NV9CQ0hfMjJfN183AEFSX01BVFJJWF9DT0RFXzZ4NgBBUl9NQVRSSVhfQ09ERV81eDUAQVJfTUFUUklYX0NPREVfNHg0X0JDSF8xM181XzUAQVJfTUFUUklYX0NPREVfNXg1X0JDSF8yMl8xMl81AEFSX01BVFJJWF9DT0RFXzN4M19QQVJJVFk2NQBBUl9NQVRSSVhfQ09ERV80eDQAQVJfTUFUUklYX0NPREVfM3gzAGZzZXQzAEFSX01BVFJJWF9DT0RFXzR4NF9CQ0hfMTNfOV8zAEFSX01BVFJJWF9DT0RFXzN4M19IQU1NSU5HNjMAQVJfVVNFX1RSQUNLSU5HX0hJU1RPUllfVjIAc2V0dXBBUjIAb24uAG9mZi4AKG51bGwpAEVtcHR5IEpQRUcgaW1hZ2UgKEROTCBub3Qgc3VwcG9ydGVkKQBJbnN1ZmZpY2llbnQgbWVtb3J5IChjYXNlICVkKQBQdXJlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbGVkIQBFcnJvciByZWFkaW5nIGRhdGEgZnJvbSAlcy5mc2V0CgBSZWFkaW5nICVzLmZzZXQKAEVycm9yOiBrcG1TZXRSZWZEYXRhU2V0CgBFcnJvcjoga3BtQ2hhbmdlUGFnZU5vT2ZSZWZEYXRhU2V0CgBFcnJvcjoga3BtTWVyZ2VSZWZEYXRhU2V0CgBEZWJ1ZyBtb2RlIHNldCB0byAlcwoATkZUIG1hcmtlciBoZWlnaHQ6ICVpCgBORlQgbnVtLiBvZiBJbWFnZVNldDogJWkKAE5GVCBtYXJrZXIgZHBpOiAlaQoATkZUIG1hcmtlciB3aWR0aDogJWkKAExhYmVsaW5nIG1vZGUgc2V0IHRvICVkCgBUaHJlc2hvbGQgbW9kZSBzZXQgdG8gJWQKAFRocmVzaG9sZCBzZXQgdG8gJWQKAEFsbG9jYXRlZCB2aWRlb0ZyYW1lU2l6ZSAlZAoAVHJhY2tpbmcgbG9zdC4gJWQKAEVycm9yOiBtYWxsb2MKAEVycm9yIHJlYWRpbmcgS1BNIGRhdGEgZnJvbSAlcy5mc2V0MwoAUmVhZGluZyAlcy5mc2V0MwoAIyMjIEZlYXR1cmUgY2FuZGlkYXRlcyBmb3IgdHJhY2tpbmcgYXJlIG92ZXJmbG93LgoAbG9hZE1hcmtlcigpOiBFcnJvciBsb2FkaW5nIHBhdHRlcm4gZmlsZSAlcy4KAEFSVG9vbEtpdEpTKCk6IFVuYWJsZSB0byBzZXQgdXAgQVIgbXVsdGltYXJrZXIuCgBBUlRvb2xLaXRKUygpOiBVbmFibGUgdG8gc2V0IHVwIE5GVCBtYXJrZXIuCgBBUlRvb2xLaXRKUygpOiBVbmFibGUgdG8gc2V0IHVwIEFSIG1hcmtlci4KAFBhdHRlcm4gcmF0aW8gc2l6ZSBzZXQgdG8gJWYuCgBMb2FkaW5nIG9mIE5GVCBkYXRhIGNvbXBsZXRlLgoAc2V0Q2FtZXJhKCk6IEVycm9yOiBhclBhcmFtTFRDcmVhdGUuCgAgIERvbmUuCgBzZXR1cCgpOiBFcnJvcjogYXJQYXR0Q3JlYXRlSGFuZGxlLgoAc2V0Q2FtZXJhKCk6IEVycm9yOiBhckNyZWF0ZUhhbmRsZS4KAEVycm9yOiBhcjJDcmVhdGVIYW5kbGUuCgBQYXR0ZXJuIGRldGVjdGlvbiBtb2RlIHNldCB0byAlZC4KAEltYWdlIHByb2MuIG1vZGUgc2V0IHRvICVkLgoAICBBc3NpZ25lZCBwYWdlIG5vLiAlZC4KAGxvYWRDYW1lcmEoKTogRXJyb3IgbG9hZGluZyBwYXJhbWV0ZXIgZmlsZSAlcyBmb3IgY2FtZXJhLgoAVHJhY2tlZCBwYWdlICVkIChtYXggJWQpLgoAKioqIENhbWVyYSBQYXJhbWV0ZXIgcmVzaXplZCBmcm9tICVkLCAlZC4gKioqCgBPdXQgb2YgbWVtb3J5ISEKAGNvbmZpZyBkYXRhIGxvYWQgZXJyb3IgISEKAGlkZGRkZGRkZGRkZGRkAGkAaWlpZABBoLACC5QCaWlpaWlpaWRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRpAGlpaWlpaQBOU3QzX18yNnZlY3Rvckk5bmZ0TWFya2VyTlNfOWFsbG9jYXRvcklTMV9FRUVFABT6AABJmAAAUE5TdDNfXzI2dmVjdG9ySTluZnRNYXJrZXJOU185YWxsb2NhdG9ySVMxX0VFRUUA9PoAAICYAAAAAAAAeJgAAFBLTlN0M19fMjZ2ZWN0b3JJOW5mdE1hcmtlck5TXzlhbGxvY2F0b3JJUzFfRUVFRQAAAAD0+gAAwJgAAAEAAAB4mAAAaWkAdgB2aQCwmAAAUPkAALCYAAAomQAAOW5mdE1hcmtlcgAAFPoAAByZAAB2aWlpAEHAsgILUFD5AACwmAAA1PkAACiZAAB2aWlpaQAAANT5AAD0mAAAaWlpAISZAAB4mAAA1PkAAE4xMGVtc2NyaXB0ZW4zdmFsRQAAFPoAAHCZAABpaWlpAEGgswILFWj5AAB4mAAA1PkAACiZAABpaWlpaQBBwLMCC6sFsPkA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AAAAGQAAABIAAAALAAAAEwAAABoAAAAbAAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAAAAAAABAAAACAAAABAAAAAJAAAAAgAAAAoAAAARAAAAEgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AQfTSAgvMBgEAAAAIAAAACQAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAABOU3QzX18yMTJiYXNpY19zdHJpbmdJaE5TXzExY2hhcl90cmFpdHNJaEVFTlNfOWFsbG9jYXRvckloRUVFRQAAFPoAAMCpAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAFPoAAAiqAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAABT6AABQqgAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAAAU+gAAnKoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAFPoAAOiqAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAABT6AAAQqwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAAAU+gAAOKsAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAFPoAAGCrAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAABT6AACIqwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAAAU+gAAsKsAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAFPoAANirAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAABT6AAAArAAATjEwZW1zY3JpcHRl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ZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBNdWx0aWhvcCBhdHRlbXB0ZWQAQZKGAwuWAaUCWwDwAbUFjAUlAYMGHQOUBP8AxwMxAwsGvAGPAX8DygQrANoGrwBCA04D3AEOBBUAoQYNAZQCCwI4BmQCvAL/Al0D5wQLB88CywXvBdsF4QIeBkUChQCCAmwDbwTxAPMDGAXZANoDTAZUAnsBnQO9BAAAUQAVArsAswNtAP8BhQQvBfkEOABlAUYBnwC3BqgBcwJTAQBB2IcDCwwhBAAAAAAAAAAALwIAQfiHAwsGNQRHBFYEAEGOiAMLAqAEAEGiiAMLX0YFYAVuBWEGAADPAQAAAAAAAAAAyQbpBvkGAAAAABkACgAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQARChkZGQMKBwABAAkLGAAACQYLAAALAAYZAAAAGRkZAEGRiQMLIQ4AAAAAAAAAABkACg0ZGRkADQAAAgAJDgAAAAkADgAADgBBy4kDCwEMAEHXiQMLFRMAAAAAEwAAAAAJDAAAAAAADAAADABBhYoDCwEQAEGRigMLFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABBv4oDCwESAEHLigMLHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBgosDCw4aAAAAGhoaAAAAAAAACQBBs4sDCwEUAEG/iwMLFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABB7YsDCwEWAEH5iwMLJxUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgBBxIwDCwICAQBB7IwDCwj//////////wBBsI0DC4MS0XSeAFedvSqAcFIP//8+JwoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFGAAAADUAAABxAAAAa////877//+Sv///AAAAAAAAAAD/////////////////////////////////////////////////////////////////AAECAwQFBgcICf////////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wABAgQHAwYFAAAAAAAAAAIAAMADAADABAAAwAUAAMAGAADABwAAwAgAAMAJAADACgAAwAsAAMAMAADADQAAwA4AAMAPAADAEAAAwBEAAMASAADAEwAAwBQAAMAVAADAFgAAwBcAAMAYAADAGQAAwBoAAMAbAADAHAAAwB0AAMAeAADAHwAAwAAAALMBAADDAgAAwwMAAMMEAADDBQAAwwYAAMMHAADDCAAAwwkAAMMKAADDCwAAwwwAAMMNAADTDgAAww8AAMMAAAy7AQAMwwIADMMDAAzDBAAM2wAAAAAAAAAAAgAAAAMAAAAFAAAABwAAAAsAAAANAAAAEQAAABMAAAAXAAAAHQAAAB8AAAAlAAAAKQAAACsAAAAvAAAANQAAADsAAAA9AAAAQwAAAEcAAABJAAAATwAAAFMAAABZAAAAYQAAAGUAAABnAAAAawAAAG0AAABxAAAAfwAAAIMAAACJAAAAiwAAAJUAAACXAAAAnQAAAKMAAACnAAAArQAAALMAAAC1AAAAvwAAAMEAAADFAAAAxwAAANMAAAABAAAACwAAAA0AAAAR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")||(DI=Ns,Ns=eA.locateFile?eA.locateFile(DI,zt):zt+DI);var no={65056:function(){var w=arguments,L=0;artoolkit.NFTMarkerInfo||(artoolkit.NFTMarkerInfo={id:0,error:-1,found:0,pose:[0,0,0,0,0,0,0,0,0,0,0,0]});var AA=artoolkit.NFTMarkerInfo;AA.id=w[L++],AA.error=w[L++],AA.found=1,AA.pose[0]=w[L++],AA.pose[1]=w[L++],AA.pose[2]=w[L++],AA.pose[3]=w[L++],AA.pose[4]=w[L++],AA.pose[5]=w[L++],AA.pose[6]=w[L++],AA.pose[7]=w[L++],AA.pose[8]=w[L++],AA.pose[9]=w[L++],AA.pose[10]=w[L++],AA.pose[11]=w[L++]},65753:function(){var w=arguments,L=0;artoolkit.NFTMarkerInfo||(artoolkit.NFTMarkerInfo={id:0,error:-1,found:0,pose:[0,0,0,0,0,0,0,0,0,0,0,0]});var AA=artoolkit.NFTMarkerInfo;AA.id=w[L++],AA.error=-1,AA.found=0,AA.pose[0]=0,AA.pose[1]=0,AA.pose[2]=0,AA.pose[3]=0,AA.pose[4]=0,AA.pose[5]=0,AA.pose[6]=0,AA.pose[7]=0,AA.pose[8]=0,AA.pose[9]=0,AA.pose[10]=0,AA.pose[11]=0},66373:function(w,L,AA,EA){artoolkit.multiEachMarkerInfo||(artoolkit.multiEachMarkerInfo={});var GA=artoolkit.multiEachMarkerInfo;GA.visible=w,GA.pattId=L,GA.pattType=AA,GA.width=EA},66647:function(w,L,AA,EA,GA,qA,de,E,J,F,sA,MA){var dA=arguments,PA=12;artoolkit.markerInfo||(artoolkit.markerInfo={pos:[0,0],line:[[0,0,0],[0,0,0],[0,0,0],[0,0,0]],vertex:[[0,0],[0,0],[0,0],[0,0]]});var OA=artoolkit.markerInfo;OA.area=w,OA.id=L,OA.idPatt=AA,OA.idMatrix=EA,OA.dir=GA,OA.dirPatt=qA,OA.dirMatrix=de,OA.cf=E,OA.cfPatt=J,OA.cfMatrix=F,OA.pos[0]=sA,OA.pos[1]=MA,OA.line[0][0]=dA[PA++],OA.line[0][1]=dA[PA++],OA.line[0][2]=dA[PA++],OA.line[1][0]=dA[PA++],OA.line[1][1]=dA[PA++],OA.line[1][2]=dA[PA++],OA.line[2][0]=dA[PA++],OA.line[2][1]=dA[PA++],OA.line[2][2]=dA[PA++],OA.line[3][0]=dA[PA++],OA.line[3][1]=dA[PA++],OA.line[3][2]=dA[PA++],OA.vertex[0][0]=dA[PA++],OA.vertex[0][1]=dA[PA++],OA.vertex[1][0]=dA[PA++],OA.vertex[1][1]=dA[PA++],OA.vertex[2][0]=dA[PA++],OA.vertex[2][1]=dA[PA++],OA.vertex[3][0]=dA[PA++],OA.vertex[3][1]=dA[PA++],OA.errorCorrected=dA[PA++]},67982:function(w,L,AA,EA,GA,qA){artoolkit.frameMalloc||(artoolkit.frameMalloc={});var de=artoolkit.frameMalloc;de.framepointer=L,de.framesize=AA,de.camera=EA,de.transform=GA,de.videoLumaPointer=qA}};function aI(w){this.name="ExitStatus",this.message="Program terminated with exit("+w+")",this.status=w}function wI(w){for(;w.length>0;)w.shift()(eA)}function rC(w){this.excPtr=w,this.ptr=w-24,this.set_type=function(L){fo[this.ptr+4>>2]=L},this.get_type=function(){return fo[this.ptr+4>>2]},this.set_destructor=function(L){fo[this.ptr+8>>2]=L},this.get_destructor=function(){return fo[this.ptr+8>>2]},this.set_refcount=function(L){vi[this.ptr>>2]=L},this.set_caught=function(L){L=L?1:0,xr[this.ptr+12|0]=L},this.get_caught=function(){return xr[this.ptr+12|0]!=0},this.set_rethrown=function(L){L=L?1:0,xr[this.ptr+13|0]=L},this.get_rethrown=function(){return xr[this.ptr+13|0]!=0},this.init=function(L,AA){this.set_adjusted_ptr(0),this.set_type(L),this.set_destructor(AA),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var L=vi[this.ptr>>2];vi[this.ptr>>2]=L+1},this.release_ref=function(){var L=vi[this.ptr>>2];return vi[this.ptr>>2]=L-1,L===1},this.set_adjusted_ptr=function(L){fo[this.ptr+16>>2]=L},this.get_adjusted_ptr=function(){return fo[this.ptr+16>>2]},this.get_exception_ptr=function(){if(WI(this.get_type()))return fo[this.excPtr>>2];var L=this.get_adjusted_ptr();return L!==0?L:this.excPtr}}var Lo={isAbs:function(w){return w.charAt(0)==="/"},splitPath:function(w){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(w).slice(1)},normalizeArray:function(w,L){for(var AA=0,EA=w.length-1;EA>=0;EA--){var GA=w[EA];GA==="."?w.splice(EA,1):GA===".."?(w.splice(EA,1),AA++):AA&&(w.splice(EA,1),AA--)}if(L)for(;AA;AA--)w.unshift("..");return w},normalize:function(w){var L=Lo.isAbs(w),AA=w.substr(-1)==="/";return(w=Lo.normalizeArray(w.split("/").filter(function(EA){return!!EA}),!L).join("/"))||L||(w="."),w&&AA&&(w+="/"),(L?"/":"")+w},dirname:function(w){var L=Lo.splitPath(w),AA=L[0],EA=L[1];return AA||EA?(EA&&(EA=EA.substr(0,EA.length-1)),AA+EA):"."},basename:function(w){if(w==="/")return"/";var L=(w=(w=Lo.normalize(w)).replace(/\/$/,"")).lastIndexOf("/");return L===-1?w:w.substr(L+1)},join:function(){var w=Array.prototype.slice.call(arguments);return Lo.normalize(w.join("/"))},join2:function(w,L){return Lo.normalize(w+"/"+L)}},Aa={resolve:function(){for(var w="",L=!1,AA=arguments.length-1;AA>=-1&&!L;AA--){var EA=AA>=0?arguments[AA]:fA.cwd();if(typeof EA!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!EA)return"";w=EA+"/"+w,L=Lo.isAbs(EA)}return(L?"/":"")+(w=Lo.normalizeArray(w.split("/").filter(function(GA){return!!GA}),!L).join("/"))||"."},relative:function(w,L){function AA(F){for(var sA=0;sA<F.length&&F[sA]==="";sA++);for(var MA=F.length-1;MA>=0&&F[MA]==="";MA--);return sA>MA?[]:F.slice(sA,MA-sA+1)}w=Aa.resolve(w).substr(1),L=Aa.resolve(L).substr(1);for(var EA=AA(w.split("/")),GA=AA(L.split("/")),qA=Math.min(EA.length,GA.length),de=qA,E=0;E<qA;E++)if(EA[E]!==GA[E]){de=E;break}var J=[];for(E=de;E<EA.length;E++)J.push("..");return(J=J.concat(GA.slice(de))).join("/")}};function II(w,L,AA){var EA=Ra(w)+1,GA=new Array(EA),qA=Ca(w,GA,0,GA.length);return L&&(GA.length=qA),GA}var Fa={ttys:[],init:function(){},shutdown:function(){},register:function(w,L){Fa.ttys[w]={input:[],output:[],ops:L},fA.registerDevice(w,Fa.stream_ops)},stream_ops:{open:function(w){var L=Fa.ttys[w.node.rdev];if(!L)throw new fA.ErrnoError(43);w.tty=L,w.seekable=!1},close:function(w){w.tty.ops.fsync(w.tty)},fsync:function(w){w.tty.ops.fsync(w.tty)},read:function(w,L,AA,EA,GA){if(!w.tty||!w.tty.ops.get_char)throw new fA.ErrnoError(60);for(var qA=0,de=0;de<EA;de++){var E;try{E=w.tty.ops.get_char(w.tty)}catch{throw new fA.ErrnoError(29)}if(E===void 0&&qA===0)throw new fA.ErrnoError(6);if(E==null)break;qA++,L[AA+de]=E}return qA&&(w.node.timestamp=Date.now()),qA},write:function(w,L,AA,EA,GA){if(!w.tty||!w.tty.ops.put_char)throw new fA.ErrnoError(60);try{for(var qA=0;qA<EA;qA++)w.tty.ops.put_char(w.tty,L[AA+qA])}catch{throw new fA.ErrnoError(29)}return EA&&(w.node.timestamp=Date.now()),qA}},default_tty_ops:{get_char:function(w){if(!w.input.length){var L=null;if(Qi){var AA=Buffer.alloc(256),EA=0;try{EA=Ue.readSync(process.stdin.fd,AA,0,256,-1)}catch(GA){if(!GA.toString().includes("EOF"))throw GA;EA=0}L=EA>0?AA.slice(0,EA).toString("utf-8"):null}else typeof window<"u"&&typeof window.prompt=="function"?(L=window.prompt("Input: "))!==null&&(L+=`
`):typeof readline=="function"&&(L=readline())!==null&&(L+=`
`);if(!L)return null;w.input=II(L,!0)}return w.input.shift()},put_char:function(w,L){L===null||L===10?(Fo(zg(w.output,0)),w.output=[]):L!=0&&w.output.push(L)},fsync:function(w){w.output&&w.output.length>0&&(Fo(zg(w.output,0)),w.output=[])}},default_tty1_ops:{put_char:function(w,L){L===null||L===10?(Io(zg(w.output,0)),w.output=[]):L!=0&&w.output.push(L)},fsync:function(w){w.output&&w.output.length>0&&(Io(zg(w.output,0)),w.output=[])}}};function OI(w){ss()}var Dn={ops_table:null,mount:function(w){return Dn.createNode(null,"/",16895,0)},createNode:function(w,L,AA,EA){if(fA.isBlkdev(AA)||fA.isFIFO(AA))throw new fA.ErrnoError(63);Dn.ops_table||(Dn.ops_table={dir:{node:{getattr:Dn.node_ops.getattr,setattr:Dn.node_ops.setattr,lookup:Dn.node_ops.lookup,mknod:Dn.node_ops.mknod,rename:Dn.node_ops.rename,unlink:Dn.node_ops.unlink,rmdir:Dn.node_ops.rmdir,readdir:Dn.node_ops.readdir,symlink:Dn.node_ops.symlink},stream:{llseek:Dn.stream_ops.llseek}},file:{node:{getattr:Dn.node_ops.getattr,setattr:Dn.node_ops.setattr},stream:{llseek:Dn.stream_ops.llseek,read:Dn.stream_ops.read,write:Dn.stream_ops.write,allocate:Dn.stream_ops.allocate,mmap:Dn.stream_ops.mmap,msync:Dn.stream_ops.msync}},link:{node:{getattr:Dn.node_ops.getattr,setattr:Dn.node_ops.setattr,readlink:Dn.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Dn.node_ops.getattr,setattr:Dn.node_ops.setattr},stream:fA.chrdev_stream_ops}});var GA=fA.createNode(w,L,AA,EA);return fA.isDir(GA.mode)?(GA.node_ops=Dn.ops_table.dir.node,GA.stream_ops=Dn.ops_table.dir.stream,GA.contents={}):fA.isFile(GA.mode)?(GA.node_ops=Dn.ops_table.file.node,GA.stream_ops=Dn.ops_table.file.stream,GA.usedBytes=0,GA.contents=null):fA.isLink(GA.mode)?(GA.node_ops=Dn.ops_table.link.node,GA.stream_ops=Dn.ops_table.link.stream):fA.isChrdev(GA.mode)&&(GA.node_ops=Dn.ops_table.chrdev.node,GA.stream_ops=Dn.ops_table.chrdev.stream),GA.timestamp=Date.now(),w&&(w.contents[L]=GA,w.timestamp=GA.timestamp),GA},getFileDataAsTypedArray:function(w){return w.contents?w.contents.subarray?w.contents.subarray(0,w.usedBytes):new Uint8Array(w.contents):new Uint8Array(0)},expandFileStorage:function(w,L){var AA=w.contents?w.contents.length:0;if(!(AA>=L)){L=Math.max(L,AA*(AA<1048576?2:1.125)>>>0),AA!=0&&(L=Math.max(L,256));var EA=w.contents;w.contents=new Uint8Array(L),w.usedBytes>0&&w.contents.set(EA.subarray(0,w.usedBytes),0)}},resizeFileStorage:function(w,L){if(w.usedBytes!=L)if(L==0)w.contents=null,w.usedBytes=0;else{var AA=w.contents;w.contents=new Uint8Array(L),AA&&w.contents.set(AA.subarray(0,Math.min(L,w.usedBytes))),w.usedBytes=L}},node_ops:{getattr:function(w){var L={};return L.dev=fA.isChrdev(w.mode)?w.id:1,L.ino=w.id,L.mode=w.mode,L.nlink=1,L.uid=0,L.gid=0,L.rdev=w.rdev,fA.isDir(w.mode)?L.size=4096:fA.isFile(w.mode)?L.size=w.usedBytes:fA.isLink(w.mode)?L.size=w.link.length:L.size=0,L.atime=new Date(w.timestamp),L.mtime=new Date(w.timestamp),L.ctime=new Date(w.timestamp),L.blksize=4096,L.blocks=Math.ceil(L.size/L.blksize),L},setattr:function(w,L){L.mode!==void 0&&(w.mode=L.mode),L.timestamp!==void 0&&(w.timestamp=L.timestamp),L.size!==void 0&&Dn.resizeFileStorage(w,L.size)},lookup:function(w,L){throw fA.genericErrors[44]},mknod:function(w,L,AA,EA){return Dn.createNode(w,L,AA,EA)},rename:function(w,L,AA){if(fA.isDir(w.mode)){var EA;try{EA=fA.lookupNode(L,AA)}catch{}if(EA)for(var GA in EA.contents)throw new fA.ErrnoError(55)}delete w.parent.contents[w.name],w.parent.timestamp=Date.now(),w.name=AA,L.contents[AA]=w,L.timestamp=w.parent.timestamp,w.parent=L},unlink:function(w,L){delete w.contents[L],w.timestamp=Date.now()},rmdir:function(w,L){var AA=fA.lookupNode(w,L);for(var EA in AA.contents)throw new fA.ErrnoError(55);delete w.contents[L],w.timestamp=Date.now()},readdir:function(w){var L=[".",".."];for(var AA in w.contents)w.contents.hasOwnProperty(AA)&&L.push(AA);return L},symlink:function(w,L,AA){var EA=Dn.createNode(w,L,41471,0);return EA.link=AA,EA},readlink:function(w){if(!fA.isLink(w.mode))throw new fA.ErrnoError(28);return w.link}},stream_ops:{read:function(w,L,AA,EA,GA){var qA=w.node.contents;if(GA>=w.node.usedBytes)return 0;var de=Math.min(w.node.usedBytes-GA,EA);if(de>8&&qA.subarray)L.set(qA.subarray(GA,GA+de),AA);else for(var E=0;E<de;E++)L[AA+E]=qA[GA+E];return de},write:function(w,L,AA,EA,GA,qA){if(L.buffer===xr.buffer&&(qA=!1),!EA)return 0;var de=w.node;if(de.timestamp=Date.now(),L.subarray&&(!de.contents||de.contents.subarray)){if(qA)return de.contents=L.subarray(AA,AA+EA),de.usedBytes=EA,EA;if(de.usedBytes===0&&GA===0)return de.contents=L.slice(AA,AA+EA),de.usedBytes=EA,EA;if(GA+EA<=de.usedBytes)return de.contents.set(L.subarray(AA,AA+EA),GA),EA}if(Dn.expandFileStorage(de,GA+EA),de.contents.subarray&&L.subarray)de.contents.set(L.subarray(AA,AA+EA),GA);else for(var E=0;E<EA;E++)de.contents[GA+E]=L[AA+E];return de.usedBytes=Math.max(de.usedBytes,GA+EA),EA},llseek:function(w,L,AA){var EA=L;if(AA===1?EA+=w.position:AA===2&&fA.isFile(w.node.mode)&&(EA+=w.node.usedBytes),EA<0)throw new fA.ErrnoError(28);return EA},allocate:function(w,L,AA){Dn.expandFileStorage(w.node,L+AA),w.node.usedBytes=Math.max(w.node.usedBytes,L+AA)},mmap:function(w,L,AA,EA,GA){if(!fA.isFile(w.node.mode))throw new fA.ErrnoError(43);var qA,de,E=w.node.contents;if(2&GA||E.buffer!==Pr){if((AA>0||AA+L<E.length)&&(E=E.subarray?E.subarray(AA,AA+L):Array.prototype.slice.call(E,AA,AA+L)),de=!0,!(qA=OI()))throw new fA.ErrnoError(48);xr.set(E,qA)}else de=!1,qA=E.byteOffset;return{ptr:qA,allocated:de}},msync:function(w,L,AA,EA,GA){if(!fA.isFile(w.node.mode))throw new fA.ErrnoError(43);return 2&GA||Dn.stream_ops.write(w,L,0,EA,AA,!1),0}}},fA={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(w){var L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(!(w=Aa.resolve(fA.cwd(),w)))return{path:"",node:null};if((L=Object.assign({follow_mount:!0,recurse_count:0},L)).recurse_count>8)throw new fA.ErrnoError(32);for(var AA=Lo.normalizeArray(w.split("/").filter(function(F){return!!F}),!1),EA=fA.root,GA="/",qA=0;qA<AA.length;qA++){var de=qA===AA.length-1;if(de&&L.parent)break;if(EA=fA.lookupNode(EA,AA[qA]),GA=Lo.join2(GA,AA[qA]),fA.isMountpoint(EA)&&(!de||de&&L.follow_mount)&&(EA=EA.mounted.root),!de||L.follow)for(var E=0;fA.isLink(EA.mode);){var J=fA.readlink(GA);if(GA=Aa.resolve(Lo.dirname(GA),J),EA=fA.lookupPath(GA,{recurse_count:L.recurse_count+1}).node,E++>40)throw new fA.ErrnoError(32)}}return{path:GA,node:EA}},getPath:function(w){for(var L;;){if(fA.isRoot(w)){var AA=w.mount.mountpoint;return L?AA[AA.length-1]!=="/"?AA+"/"+L:AA+L:AA}L=L?w.name+"/"+L:w.name,w=w.parent}},hashName:function(w,L){for(var AA=0,EA=0;EA<L.length;EA++)AA=(AA<<5)-AA+L.charCodeAt(EA)|0;return(w+AA>>>0)%fA.nameTable.length},hashAddNode:function(w){var L=fA.hashName(w.parent.id,w.name);w.name_next=fA.nameTable[L],fA.nameTable[L]=w},hashRemoveNode:function(w){var L=fA.hashName(w.parent.id,w.name);if(fA.nameTable[L]===w)fA.nameTable[L]=w.name_next;else for(var AA=fA.nameTable[L];AA;){if(AA.name_next===w){AA.name_next=w.name_next;break}AA=AA.name_next}},lookupNode:function(w,L){var AA=fA.mayLookup(w);if(AA)throw new fA.ErrnoError(AA,w);for(var EA=fA.hashName(w.id,L),GA=fA.nameTable[EA];GA;GA=GA.name_next){var qA=GA.name;if(GA.parent.id===w.id&&qA===L)return GA}return fA.lookup(w,L)},createNode:function(w,L,AA,EA){var GA=new fA.FSNode(w,L,AA,EA);return fA.hashAddNode(GA),GA},destroyNode:function(w){fA.hashRemoveNode(w)},isRoot:function(w){return w===w.parent},isMountpoint:function(w){return!!w.mounted},isFile:function(w){return(61440&w)==32768},isDir:function(w){return(61440&w)==16384},isLink:function(w){return(61440&w)==40960},isChrdev:function(w){return(61440&w)==8192},isBlkdev:function(w){return(61440&w)==24576},isFIFO:function(w){return(61440&w)==4096},isSocket:function(w){return!(49152&~w)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(w){var L=fA.flagModes[w];if(L===void 0)throw new Error("Unknown file open mode: "+w);return L},flagsToPermissionString:function(w){var L=["r","w","rw"][3&w];return 512&w&&(L+="w"),L},nodePermissions:function(w,L){return fA.ignorePermissions||(!L.includes("r")||292&w.mode)&&(!L.includes("w")||146&w.mode)&&(!L.includes("x")||73&w.mode)?0:2},mayLookup:function(w){return fA.nodePermissions(w,"x")||(w.node_ops.lookup?0:2)},mayCreate:function(w,L){try{return fA.lookupNode(w,L),20}catch{}return fA.nodePermissions(w,"wx")},mayDelete:function(w,L,AA){var EA;try{EA=fA.lookupNode(w,L)}catch(qA){return qA.errno}var GA=fA.nodePermissions(w,"wx");if(GA)return GA;if(AA){if(!fA.isDir(EA.mode))return 54;if(fA.isRoot(EA)||fA.getPath(EA)===fA.cwd())return 10}else if(fA.isDir(EA.mode))return 31;return 0},mayOpen:function(w,L){return w?fA.isLink(w.mode)?32:fA.isDir(w.mode)&&(fA.flagsToPermissionString(L)!=="r"||512&L)?31:fA.nodePermissions(w,fA.flagsToPermissionString(L)):44},MAX_OPEN_FDS:4096,nextfd:function(){for(var w=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,L=arguments.length>1&&arguments[1]!==void 0?arguments[1]:fA.MAX_OPEN_FDS,AA=w;AA<=L;AA++)if(!fA.streams[AA])return AA;throw new fA.ErrnoError(33)},getStream:function(w){return fA.streams[w]},createStream:function(w,L,AA){fA.FSStream||(fA.FSStream=function(){this.shared={}},fA.FSStream.prototype={},Object.defineProperties(fA.FSStream.prototype,{object:{get:function(){return this.node},set:function(GA){this.node=GA}},isRead:{get:function(){return(2097155&this.flags)!=1}},isWrite:{get:function(){return!!(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(GA){this.shared.flags=GA}},position:{get:function(){return this.shared.position},set:function(GA){this.shared.position=GA}}})),w=Object.assign(new fA.FSStream,w);var EA=fA.nextfd(L,AA);return w.fd=EA,fA.streams[EA]=w,w},closeStream:function(w){fA.streams[w]=null},chrdev_stream_ops:{open:function(w){var L=fA.getDevice(w.node.rdev);w.stream_ops=L.stream_ops,w.stream_ops.open&&w.stream_ops.open(w)},llseek:function(){throw new fA.ErrnoError(70)}},major:function(w){return w>>8},minor:function(w){return 255&w},makedev:function(w,L){return w<<8|L},registerDevice:function(w,L){fA.devices[w]={stream_ops:L}},getDevice:function(w){return fA.devices[w]},getMounts:function(w){for(var L=[],AA=[w];AA.length;){var EA=AA.pop();L.push(EA),AA.push.apply(AA,EA.mounts)}return L},syncfs:function(w,L){typeof w=="function"&&(L=w,w=!1),fA.syncFSRequests++,fA.syncFSRequests>1&&Io("warning: "+fA.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var AA=fA.getMounts(fA.root.mount),EA=0;function GA(de){return fA.syncFSRequests--,L(de)}function qA(de){if(de)return qA.errored?void 0:(qA.errored=!0,GA(de));++EA>=AA.length&&GA(null)}AA.forEach(function(de){if(!de.type.syncfs)return qA(null);de.type.syncfs(de,w,qA)})},mount:function(w,L,AA){var EA,GA=AA==="/",qA=!AA;if(GA&&fA.root)throw new fA.ErrnoError(10);if(!GA&&!qA){var de=fA.lookupPath(AA,{follow_mount:!1});if(AA=de.path,EA=de.node,fA.isMountpoint(EA))throw new fA.ErrnoError(10);if(!fA.isDir(EA.mode))throw new fA.ErrnoError(54)}var E={type:w,opts:L,mountpoint:AA,mounts:[]},J=w.mount(E);return J.mount=E,E.root=J,GA?fA.root=J:EA&&(EA.mounted=E,EA.mount&&EA.mount.mounts.push(E)),J},unmount:function(w){var L=fA.lookupPath(w,{follow_mount:!1});if(!fA.isMountpoint(L.node))throw new fA.ErrnoError(28);var AA=L.node,EA=AA.mounted,GA=fA.getMounts(EA);Object.keys(fA.nameTable).forEach(function(de){for(var E=fA.nameTable[de];E;){var J=E.name_next;GA.includes(E.mount)&&fA.destroyNode(E),E=J}}),AA.mounted=null;var qA=AA.mount.mounts.indexOf(EA);AA.mount.mounts.splice(qA,1)},lookup:function(w,L){return w.node_ops.lookup(w,L)},mknod:function(w,L,AA){var EA=fA.lookupPath(w,{parent:!0}).node,GA=Lo.basename(w);if(!GA||GA==="."||GA==="..")throw new fA.ErrnoError(28);var qA=fA.mayCreate(EA,GA);if(qA)throw new fA.ErrnoError(qA);if(!EA.node_ops.mknod)throw new fA.ErrnoError(63);return EA.node_ops.mknod(EA,GA,L,AA)},create:function(w,L){return L=L!==void 0?L:438,L&=4095,L|=32768,fA.mknod(w,L,0)},mkdir:function(w,L){return L=L!==void 0?L:511,L&=1023,L|=16384,fA.mknod(w,L,0)},mkdirTree:function(w,L){for(var AA=w.split("/"),EA="",GA=0;GA<AA.length;++GA)if(AA[GA]){EA+="/"+AA[GA];try{fA.mkdir(EA,L)}catch(qA){if(qA.errno!=20)throw qA}}},mkdev:function(w,L,AA){return AA===void 0&&(AA=L,L=438),L|=8192,fA.mknod(w,L,AA)},symlink:function(w,L){if(!Aa.resolve(w))throw new fA.ErrnoError(44);var AA=fA.lookupPath(L,{parent:!0}).node;if(!AA)throw new fA.ErrnoError(44);var EA=Lo.basename(L),GA=fA.mayCreate(AA,EA);if(GA)throw new fA.ErrnoError(GA);if(!AA.node_ops.symlink)throw new fA.ErrnoError(63);return AA.node_ops.symlink(AA,EA,w)},rename:function(w,L){var AA,EA,GA=Lo.dirname(w),qA=Lo.dirname(L),de=Lo.basename(w),E=Lo.basename(L);if(AA=fA.lookupPath(w,{parent:!0}).node,EA=fA.lookupPath(L,{parent:!0}).node,!AA||!EA)throw new fA.ErrnoError(44);if(AA.mount!==EA.mount)throw new fA.ErrnoError(75);var J,F=fA.lookupNode(AA,de),sA=Aa.relative(w,qA);if(sA.charAt(0)!==".")throw new fA.ErrnoError(28);if((sA=Aa.relative(L,GA)).charAt(0)!==".")throw new fA.ErrnoError(55);try{J=fA.lookupNode(EA,E)}catch{}if(F!==J){var MA=fA.isDir(F.mode),dA=fA.mayDelete(AA,de,MA);if(dA)throw new fA.ErrnoError(dA);if(dA=J?fA.mayDelete(EA,E,MA):fA.mayCreate(EA,E))throw new fA.ErrnoError(dA);if(!AA.node_ops.rename)throw new fA.ErrnoError(63);if(fA.isMountpoint(F)||J&&fA.isMountpoint(J))throw new fA.ErrnoError(10);if(EA!==AA&&(dA=fA.nodePermissions(AA,"w")))throw new fA.ErrnoError(dA);fA.hashRemoveNode(F);try{AA.node_ops.rename(F,EA,E)}catch(PA){throw PA}finally{fA.hashAddNode(F)}}},rmdir:function(w){var L=fA.lookupPath(w,{parent:!0}).node,AA=Lo.basename(w),EA=fA.lookupNode(L,AA),GA=fA.mayDelete(L,AA,!0);if(GA)throw new fA.ErrnoError(GA);if(!L.node_ops.rmdir)throw new fA.ErrnoError(63);if(fA.isMountpoint(EA))throw new fA.ErrnoError(10);L.node_ops.rmdir(L,AA),fA.destroyNode(EA)},readdir:function(w){var L=fA.lookupPath(w,{follow:!0}).node;if(!L.node_ops.readdir)throw new fA.ErrnoError(54);return L.node_ops.readdir(L)},unlink:function(w){var L=fA.lookupPath(w,{parent:!0}).node;if(!L)throw new fA.ErrnoError(44);var AA=Lo.basename(w),EA=fA.lookupNode(L,AA),GA=fA.mayDelete(L,AA,!1);if(GA)throw new fA.ErrnoError(GA);if(!L.node_ops.unlink)throw new fA.ErrnoError(63);if(fA.isMountpoint(EA))throw new fA.ErrnoError(10);L.node_ops.unlink(L,AA),fA.destroyNode(EA)},readlink:function(w){var L=fA.lookupPath(w).node;if(!L)throw new fA.ErrnoError(44);if(!L.node_ops.readlink)throw new fA.ErrnoError(28);return Aa.resolve(fA.getPath(L.parent),L.node_ops.readlink(L))},stat:function(w,L){var AA=fA.lookupPath(w,{follow:!L}).node;if(!AA)throw new fA.ErrnoError(44);if(!AA.node_ops.getattr)throw new fA.ErrnoError(63);return AA.node_ops.getattr(AA)},lstat:function(w){return fA.stat(w,!0)},chmod:function(w,L,AA){var EA;if(!(EA=typeof w=="string"?fA.lookupPath(w,{follow:!AA}).node:w).node_ops.setattr)throw new fA.ErrnoError(63);EA.node_ops.setattr(EA,{mode:4095&L|-4096&EA.mode,timestamp:Date.now()})},lchmod:function(w,L){fA.chmod(w,L,!0)},fchmod:function(w,L){var AA=fA.getStream(w);if(!AA)throw new fA.ErrnoError(8);fA.chmod(AA.node,L)},chown:function(w,L,AA,EA){var GA;if(!(GA=typeof w=="string"?fA.lookupPath(w,{follow:!EA}).node:w).node_ops.setattr)throw new fA.ErrnoError(63);GA.node_ops.setattr(GA,{timestamp:Date.now()})},lchown:function(w,L,AA){fA.chown(w,L,AA,!0)},fchown:function(w,L,AA){var EA=fA.getStream(w);if(!EA)throw new fA.ErrnoError(8);fA.chown(EA.node,L,AA)},truncate:function(w,L){if(L<0)throw new fA.ErrnoError(28);var AA;if(!(AA=typeof w=="string"?fA.lookupPath(w,{follow:!0}).node:w).node_ops.setattr)throw new fA.ErrnoError(63);if(fA.isDir(AA.mode))throw new fA.ErrnoError(31);if(!fA.isFile(AA.mode))throw new fA.ErrnoError(28);var EA=fA.nodePermissions(AA,"w");if(EA)throw new fA.ErrnoError(EA);AA.node_ops.setattr(AA,{size:L,timestamp:Date.now()})},ftruncate:function(w,L){var AA=fA.getStream(w);if(!AA)throw new fA.ErrnoError(8);if(!(2097155&AA.flags))throw new fA.ErrnoError(28);fA.truncate(AA.node,L)},utime:function(w,L,AA){var EA=fA.lookupPath(w,{follow:!0}).node;EA.node_ops.setattr(EA,{timestamp:Math.max(L,AA)})},open:function(w,L,AA){if(w==="")throw new fA.ErrnoError(44);var EA;if(AA=AA===void 0?438:AA,AA=64&(L=typeof L=="string"?fA.modeStringToFlags(L):L)?4095&AA|32768:0,u(w)=="object")EA=w;else{w=Lo.normalize(w);try{EA=fA.lookupPath(w,{follow:!(131072&L)}).node}catch{}}var GA=!1;if(64&L)if(EA){if(128&L)throw new fA.ErrnoError(20)}else EA=fA.mknod(w,AA,0),GA=!0;if(!EA)throw new fA.ErrnoError(44);if(fA.isChrdev(EA.mode)&&(L&=-513),65536&L&&!fA.isDir(EA.mode))throw new fA.ErrnoError(54);if(!GA){var qA=fA.mayOpen(EA,L);if(qA)throw new fA.ErrnoError(qA)}512&L&&!GA&&fA.truncate(EA,0),L&=-131713;var de=fA.createStream({node:EA,path:fA.getPath(EA),flags:L,seekable:!0,position:0,stream_ops:EA.stream_ops,ungotten:[],error:!1});return de.stream_ops.open&&de.stream_ops.open(de),!eA.logReadFiles||1&L||(fA.readFiles||(fA.readFiles={}),w in fA.readFiles||(fA.readFiles[w]=1)),de},close:function(w){if(fA.isClosed(w))throw new fA.ErrnoError(8);w.getdents&&(w.getdents=null);try{w.stream_ops.close&&w.stream_ops.close(w)}catch(L){throw L}finally{fA.closeStream(w.fd)}w.fd=null},isClosed:function(w){return w.fd===null},llseek:function(w,L,AA){if(fA.isClosed(w))throw new fA.ErrnoError(8);if(!w.seekable||!w.stream_ops.llseek)throw new fA.ErrnoError(70);if(AA!=0&&AA!=1&&AA!=2)throw new fA.ErrnoError(28);return w.position=w.stream_ops.llseek(w,L,AA),w.ungotten=[],w.position},read:function(w,L,AA,EA,GA){if(EA<0||GA<0)throw new fA.ErrnoError(28);if(fA.isClosed(w))throw new fA.ErrnoError(8);if((2097155&w.flags)==1)throw new fA.ErrnoError(8);if(fA.isDir(w.node.mode))throw new fA.ErrnoError(31);if(!w.stream_ops.read)throw new fA.ErrnoError(28);var qA=GA!==void 0;if(qA){if(!w.seekable)throw new fA.ErrnoError(70)}else GA=w.position;var de=w.stream_ops.read(w,L,AA,EA,GA);return qA||(w.position+=de),de},write:function(w,L,AA,EA,GA,qA){if(EA<0||GA<0)throw new fA.ErrnoError(28);if(fA.isClosed(w))throw new fA.ErrnoError(8);if(!(2097155&w.flags))throw new fA.ErrnoError(8);if(fA.isDir(w.node.mode))throw new fA.ErrnoError(31);if(!w.stream_ops.write)throw new fA.ErrnoError(28);w.seekable&&1024&w.flags&&fA.llseek(w,0,2);var de=GA!==void 0;if(de){if(!w.seekable)throw new fA.ErrnoError(70)}else GA=w.position;var E=w.stream_ops.write(w,L,AA,EA,GA,qA);return de||(w.position+=E),E},allocate:function(w,L,AA){if(fA.isClosed(w))throw new fA.ErrnoError(8);if(L<0||AA<=0)throw new fA.ErrnoError(28);if(!(2097155&w.flags))throw new fA.ErrnoError(8);if(!fA.isFile(w.node.mode)&&!fA.isDir(w.node.mode))throw new fA.ErrnoError(43);if(!w.stream_ops.allocate)throw new fA.ErrnoError(138);w.stream_ops.allocate(w,L,AA)},mmap:function(w,L,AA,EA,GA){if(2&EA&&!(2&GA)&&(2097155&w.flags)!=2)throw new fA.ErrnoError(2);if((2097155&w.flags)==1)throw new fA.ErrnoError(2);if(!w.stream_ops.mmap)throw new fA.ErrnoError(43);return w.stream_ops.mmap(w,L,AA,EA,GA)},msync:function(w,L,AA,EA,GA){return w&&w.stream_ops.msync?w.stream_ops.msync(w,L,AA,EA,GA):0},munmap:function(w){return 0},ioctl:function(w,L,AA){if(!w.stream_ops.ioctl)throw new fA.ErrnoError(59);return w.stream_ops.ioctl(w,L,AA)},readFile:function(w){var L,AA=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(AA.flags=AA.flags||0,AA.encoding=AA.encoding||"binary",AA.encoding!=="utf8"&&AA.encoding!=="binary")throw new Error('Invalid encoding type "'+AA.encoding+'"');var EA=fA.open(w,AA.flags),GA=fA.stat(w).size,qA=new Uint8Array(GA);return fA.read(EA,qA,0,GA,0),AA.encoding==="utf8"?L=zg(qA,0):AA.encoding==="binary"&&(L=qA),fA.close(EA),L},writeFile:function(w,L){var AA=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};AA.flags=AA.flags||577;var EA=fA.open(w,AA.flags,AA.mode);if(typeof L=="string"){var GA=new Uint8Array(Ra(L)+1),qA=Ca(L,GA,0,GA.length);fA.write(EA,GA,0,qA,void 0,AA.canOwn)}else{if(!ArrayBuffer.isView(L))throw new Error("Unsupported data type");fA.write(EA,L,0,L.byteLength,void 0,AA.canOwn)}fA.close(EA)},cwd:function(){return fA.currentPath},chdir:function(w){var L=fA.lookupPath(w,{follow:!0});if(L.node===null)throw new fA.ErrnoError(44);if(!fA.isDir(L.node.mode))throw new fA.ErrnoError(54);var AA=fA.nodePermissions(L.node,"x");if(AA)throw new fA.ErrnoError(AA);fA.currentPath=L.path},createDefaultDirectories:function(){fA.mkdir("/tmp"),fA.mkdir("/home"),fA.mkdir("/home/web_user")},createDefaultDevices:function(){fA.mkdir("/dev"),fA.registerDevice(fA.makedev(1,3),{read:function(){return 0},write:function(L,AA,EA,GA,qA){return GA}}),fA.mkdev("/dev/null",fA.makedev(1,3)),Fa.register(fA.makedev(5,0),Fa.default_tty_ops),Fa.register(fA.makedev(6,0),Fa.default_tty1_ops),fA.mkdev("/dev/tty",fA.makedev(5,0)),fA.mkdev("/dev/tty1",fA.makedev(6,0));var w=function(){if((typeof crypto>"u"?"undefined":u(crypto))=="object"&&typeof crypto.getRandomValues=="function"){var L=new Uint8Array(1);return function(){return crypto.getRandomValues(L),L[0]}}if(Qi)try{var AA=T(902);return function(){return AA.randomBytes(1)[0]}}catch{}return function(){return ss("randomDevice")}}();fA.createDevice("/dev","random",w),fA.createDevice("/dev","urandom",w),fA.mkdir("/dev/shm"),fA.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){fA.mkdir("/proc");var w=fA.mkdir("/proc/self");fA.mkdir("/proc/self/fd"),fA.mount({mount:function(){var L=fA.createNode(w,"fd",16895,73);return L.node_ops={lookup:function(AA,EA){var GA=+EA,qA=fA.getStream(GA);if(!qA)throw new fA.ErrnoError(8);var de={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return qA.path}}};return de.parent=de,de}},L}},{},"/proc/self/fd")},createStandardStreams:function(){eA.stdin?fA.createDevice("/dev","stdin",eA.stdin):fA.symlink("/dev/tty","/dev/stdin"),eA.stdout?fA.createDevice("/dev","stdout",null,eA.stdout):fA.symlink("/dev/tty","/dev/stdout"),eA.stderr?fA.createDevice("/dev","stderr",null,eA.stderr):fA.symlink("/dev/tty1","/dev/stderr"),fA.open("/dev/stdin",0),fA.open("/dev/stdout",1),fA.open("/dev/stderr",1)},ensureErrnoError:function(){fA.ErrnoError||(fA.ErrnoError=function(w,L){this.node=L,this.setErrno=function(AA){this.errno=AA},this.setErrno(w),this.message="FS error"},fA.ErrnoError.prototype=new Error,fA.ErrnoError.prototype.constructor=fA.ErrnoError,[44].forEach(function(w){fA.genericErrors[w]=new fA.ErrnoError(w),fA.genericErrors[w].stack="<generic error, no stack>"}))},staticInit:function(){fA.ensureErrnoError(),fA.nameTable=new Array(4096),fA.mount(Dn,{},"/"),fA.createDefaultDirectories(),fA.createDefaultDevices(),fA.createSpecialDirectories(),fA.filesystems={MEMFS:Dn}},init:function(w,L,AA){fA.init.initialized=!0,fA.ensureErrnoError(),eA.stdin=w||eA.stdin,eA.stdout=L||eA.stdout,eA.stderr=AA||eA.stderr,fA.createStandardStreams()},quit:function(){fA.init.initialized=!1;for(var w=0;w<fA.streams.length;w++){var L=fA.streams[w];L&&fA.close(L)}},getMode:function(w,L){var AA=0;return w&&(AA|=365),L&&(AA|=146),AA},findObject:function(w,L){var AA=fA.analyzePath(w,L);return AA.exists?AA.object:null},analyzePath:function(w,L){try{w=(EA=fA.lookupPath(w,{follow:!L})).path}catch{}var AA={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var EA=fA.lookupPath(w,{parent:!0});AA.parentExists=!0,AA.parentPath=EA.path,AA.parentObject=EA.node,AA.name=Lo.basename(w),EA=fA.lookupPath(w,{follow:!L}),AA.exists=!0,AA.path=EA.path,AA.object=EA.node,AA.name=EA.node.name,AA.isRoot=EA.path==="/"}catch(GA){AA.error=GA.errno}return AA},createPath:function(w,L,AA,EA){w=typeof w=="string"?w:fA.getPath(w);for(var GA=L.split("/").reverse();GA.length;){var qA=GA.pop();if(qA){var de=Lo.join2(w,qA);try{fA.mkdir(de)}catch{}w=de}}return de},createFile:function(w,L,AA,EA,GA){var qA=Lo.join2(typeof w=="string"?w:fA.getPath(w),L),de=fA.getMode(EA,GA);return fA.create(qA,de)},createDataFile:function(w,L,AA,EA,GA,qA){var de=L;w&&(w=typeof w=="string"?w:fA.getPath(w),de=L?Lo.join2(w,L):w);var E=fA.getMode(EA,GA),J=fA.create(de,E);if(AA){if(typeof AA=="string"){for(var F=new Array(AA.length),sA=0,MA=AA.length;sA<MA;++sA)F[sA]=AA.charCodeAt(sA);AA=F}fA.chmod(J,146|E);var dA=fA.open(J,577);fA.write(dA,AA,0,AA.length,0,qA),fA.close(dA),fA.chmod(J,E)}return J},createDevice:function(w,L,AA,EA){var GA=Lo.join2(typeof w=="string"?w:fA.getPath(w),L),qA=fA.getMode(!!AA,!!EA);fA.createDevice.major||(fA.createDevice.major=64);var de=fA.makedev(fA.createDevice.major++,0);return fA.registerDevice(de,{open:function(E){E.seekable=!1},close:function(E){EA&&EA.buffer&&EA.buffer.length&&EA(10)},read:function(E,J,F,sA,MA){for(var dA=0,PA=0;PA<sA;PA++){var OA;try{OA=AA()}catch{throw new fA.ErrnoError(29)}if(OA===void 0&&dA===0)throw new fA.ErrnoError(6);if(OA==null)break;dA++,J[F+PA]=OA}return dA&&(E.node.timestamp=Date.now()),dA},write:function(E,J,F,sA,MA){for(var dA=0;dA<sA;dA++)try{EA(J[F+dA])}catch{throw new fA.ErrnoError(29)}return sA&&(E.node.timestamp=Date.now()),dA}}),fA.mkdev(GA,qA,de)},forceLoadFile:function(w){if(w.isDevice||w.isFolder||w.link||w.contents)return!0;if(typeof XMLHttpRequest<"u")throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!re)throw new Error("Cannot load without read() or XMLHttpRequest.");try{w.contents=II(re(w.url),!0),w.usedBytes=w.contents.length}catch{throw new fA.ErrnoError(29)}},createLazyFile:function(w,L,AA,EA,GA){function qA(){this.lengthKnown=!1,this.chunks=[]}if(qA.prototype.get=function(MA){if(!(MA>this.length-1||MA<0)){var dA=MA%this.chunkSize,PA=MA/this.chunkSize|0;return this.getter(PA)[dA]}},qA.prototype.setDataGetter=function(MA){this.getter=MA},qA.prototype.cacheLength=function(){var MA=new XMLHttpRequest;if(MA.open("HEAD",AA,!1),MA.send(null),!(MA.status>=200&&MA.status<300||MA.status===304))throw new Error("Couldn't load "+AA+". Status: "+MA.status);var dA,PA=Number(MA.getResponseHeader("Content-length")),OA=(dA=MA.getResponseHeader("Accept-Ranges"))&&dA==="bytes",Xe=(dA=MA.getResponseHeader("Content-Encoding"))&&dA==="gzip",Le=1048576;OA||(Le=PA);var be=this;be.setDataGetter(function(se){var Ge=se*Le,je=(se+1)*Le-1;if(je=Math.min(je,PA-1),be.chunks[se]===void 0&&(be.chunks[se]=function(ve,Ve){if(ve>Ve)throw new Error("invalid range ("+ve+", "+Ve+") or no bytes requested!");if(Ve>PA-1)throw new Error("only "+PA+" bytes available! programmer error!");var Ae=new XMLHttpRequest;if(Ae.open("GET",AA,!1),PA!==Le&&Ae.setRequestHeader("Range","bytes="+ve+"-"+Ve),Ae.responseType="arraybuffer",Ae.overrideMimeType&&Ae.overrideMimeType("text/plain; charset=x-user-defined"),Ae.send(null),!(Ae.status>=200&&Ae.status<300||Ae.status===304))throw new Error("Couldn't load "+AA+". Status: "+Ae.status);return Ae.response!==void 0?new Uint8Array(Ae.response||[]):II(Ae.responseText||"",!0)}(Ge,je)),be.chunks[se]===void 0)throw new Error("doXHR failed!");return be.chunks[se]}),!Xe&&PA||(Le=PA=1,PA=this.getter(0).length,Le=PA,Fo("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=PA,this._chunkSize=Le,this.lengthKnown=!0},typeof XMLHttpRequest<"u"){if(!Ft)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var de=new qA;Object.defineProperties(de,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var E={isDevice:!1,contents:de}}else E={isDevice:!1,url:AA};var J=fA.createFile(w,L,E,EA,GA);E.contents?J.contents=E.contents:E.url&&(J.contents=null,J.url=E.url),Object.defineProperties(J,{usedBytes:{get:function(){return this.contents.length}}});var F={};function sA(MA,dA,PA,OA,Xe){var Le=MA.node.contents;if(Xe>=Le.length)return 0;var be=Math.min(Le.length-Xe,OA);if(Le.slice)for(var se=0;se<be;se++)dA[PA+se]=Le[Xe+se];else for(se=0;se<be;se++)dA[PA+se]=Le.get(Xe+se);return be}return Object.keys(J.stream_ops).forEach(function(MA){var dA=J.stream_ops[MA];F[MA]=function(){return fA.forceLoadFile(J),dA.apply(null,arguments)}}),F.read=function(MA,dA,PA,OA,Xe){return fA.forceLoadFile(J),sA(MA,dA,PA,OA,Xe)},F.mmap=function(MA,dA,PA,OA,Xe){fA.forceLoadFile(J);var Le=OI();if(!Le)throw new fA.ErrnoError(48);return sA(MA,xr,Le,dA,PA),{ptr:Le,allocated:!0}},J.stream_ops=F,J},createPreloadedFile:function(w,L,AA,EA,GA,qA,de,E,J,F){var sA=L?Aa.resolve(Lo.join2(w,L)):w;function MA(dA){function PA(OA){F&&F(),E||fA.createDataFile(w,L,OA,EA,GA,J),qA&&qA(),Co()}Browser.handledByPreloadPlugin(dA,sA,PA,function(){de&&de(),Co()})||PA(dA)}Yo(),typeof AA=="string"?function(dA,PA,OA){var Xe="al "+dA;Te(dA,function(Le){bg(Le,'Loading data file "'+dA+'" failed (no arrayBuffer).'),MA(new Uint8Array(Le)),Xe&&Co()},function(Le){if(!OA)throw'Loading data file "'+dA+'" failed.';OA()}),Xe&&Yo()}(AA,0,de):MA(AA)},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(w,L,AA){L=L||function(){},AA=AA||function(){};var EA=fA.indexedDB();try{var GA=EA.open(fA.DB_NAME(),fA.DB_VERSION)}catch(qA){return AA(qA)}GA.onupgradeneeded=function(){Fo("creating db"),GA.result.createObjectStore(fA.DB_STORE_NAME)},GA.onsuccess=function(){var qA=GA.result.transaction([fA.DB_STORE_NAME],"readwrite"),de=qA.objectStore(fA.DB_STORE_NAME),E=0,J=0,F=w.length;function sA(){J==0?L():AA()}w.forEach(function(MA){var dA=de.put(fA.analyzePath(MA).object.contents,MA);dA.onsuccess=function(){++E+J==F&&sA()},dA.onerror=function(){J++,E+J==F&&sA()}}),qA.onerror=AA},GA.onerror=AA},loadFilesFromDB:function(w,L,AA){L=L||function(){},AA=AA||function(){};var EA=fA.indexedDB();try{var GA=EA.open(fA.DB_NAME(),fA.DB_VERSION)}catch(qA){return AA(qA)}GA.onupgradeneeded=AA,GA.onsuccess=function(){var qA=GA.result;try{var de=qA.transaction([fA.DB_STORE_NAME],"readonly")}catch(dA){return void AA(dA)}var E=de.objectStore(fA.DB_STORE_NAME),J=0,F=0,sA=w.length;function MA(){F==0?L():AA()}w.forEach(function(dA){var PA=E.get(dA);PA.onsuccess=function(){fA.analyzePath(dA).exists&&fA.unlink(dA),fA.createDataFile(Lo.dirname(dA),Lo.basename(dA),PA.result,!0,!0,!0),++J+F==sA&&MA()},PA.onerror=function(){F++,J+F==sA&&MA()}}),de.onerror=AA},GA.onerror=AA}},Bs={DEFAULT_POLLMASK:5,calculateAt:function(w,L,AA){if(Lo.isAbs(L))return L;var EA;if(EA=w===-100?fA.cwd():Bs.getStreamFromFD(w).path,L.length==0){if(!AA)throw new fA.ErrnoError(44);return EA}return Lo.join2(EA,L)},doStat:function(w,L,AA){try{var EA=w(L)}catch(GA){if(GA&&GA.node&&Lo.normalize(L)!==Lo.normalize(fA.getPath(GA.node)))return-54;throw GA}return vi[AA>>2]=EA.dev,vi[AA+8>>2]=EA.ino,vi[AA+12>>2]=EA.mode,fo[AA+16>>2]=EA.nlink,vi[AA+20>>2]=EA.uid,vi[AA+24>>2]=EA.gid,vi[AA+28>>2]=EA.rdev,Ho=[EA.size>>>0,(qn=EA.size,+Math.abs(qn)>=1?qn>0?(0|Math.min(+Math.floor(qn/4294967296),4294967295))>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],vi[AA+40>>2]=Ho[0],vi[AA+44>>2]=Ho[1],vi[AA+48>>2]=4096,vi[AA+52>>2]=EA.blocks,Ho=[Math.floor(EA.atime.getTime()/1e3)>>>0,(qn=Math.floor(EA.atime.getTime()/1e3),+Math.abs(qn)>=1?qn>0?(0|Math.min(+Math.floor(qn/4294967296),4294967295))>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],vi[AA+56>>2]=Ho[0],vi[AA+60>>2]=Ho[1],fo[AA+64>>2]=0,Ho=[Math.floor(EA.mtime.getTime()/1e3)>>>0,(qn=Math.floor(EA.mtime.getTime()/1e3),+Math.abs(qn)>=1?qn>0?(0|Math.min(+Math.floor(qn/4294967296),4294967295))>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],vi[AA+72>>2]=Ho[0],vi[AA+76>>2]=Ho[1],fo[AA+80>>2]=0,Ho=[Math.floor(EA.ctime.getTime()/1e3)>>>0,(qn=Math.floor(EA.ctime.getTime()/1e3),+Math.abs(qn)>=1?qn>0?(0|Math.min(+Math.floor(qn/4294967296),4294967295))>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],vi[AA+88>>2]=Ho[0],vi[AA+92>>2]=Ho[1],fo[AA+96>>2]=0,Ho=[EA.ino>>>0,(qn=EA.ino,+Math.abs(qn)>=1?qn>0?(0|Math.min(+Math.floor(qn/4294967296),4294967295))>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],vi[AA+104>>2]=Ho[0],vi[AA+108>>2]=Ho[1],0},doMsync:function(w,L,AA,EA,GA){var qA=Or.slice(w,w+AA);fA.msync(L,qA,GA,AA,EA)},varargs:void 0,get:function(){return Bs.varargs+=4,vi[Bs.varargs-4>>2]},getStr:function(w){return fg(w)},getStreamFromFD:function(w){var L=fA.getStream(w);if(!L)throw new fA.ErrnoError(8);return L}},Ot={};function Bo(w){for(;w.length;){var L=w.pop();w.pop()(L)}}function va(w){return this.fromWireType(vi[w>>2])}var Na={},Ua={},ea={};function La(w){if(w===void 0)return"_unknown";var L=(w=w.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return L>=48&&L<=57?"_"+w:w}function ms(w,L){return w=La(w),new Function("body","return function "+w+`() {
"use strict"; return body.apply(this, arguments);
};
`)(L)}function eo(w,L){var AA=ms(L,function(EA){this.name=L,this.message=EA;var GA=new Error(EA).stack;GA!==void 0&&(this.stack=this.toString()+`
`+GA.replace(/^Error(:[^\n]*)?\n/,""))});return AA.prototype=Object.create(w.prototype),AA.prototype.constructor=AA,AA.prototype.toString=function(){return this.message===void 0?this.name:this.name+": "+this.message},AA}var MI=void 0;function ni(w){throw new MI(w)}function ds(w,L,AA){function EA(E){var J=AA(E);J.length!==w.length&&ni("Mismatched type converter count");for(var F=0;F<w.length;++F)ag(w[F],J[F])}w.forEach(function(E){ea[E]=L});var GA=new Array(L.length),qA=[],de=0;L.forEach(function(E,J){Ua.hasOwnProperty(E)?GA[J]=Ua[E]:(qA.push(E),Na.hasOwnProperty(E)||(Na[E]=[]),Na[E].push(function(){GA[J]=Ua[E],++de===qA.length&&EA(GA)}))}),qA.length===0&&EA(GA)}function Ba(w){switch(w){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+w)}}var SI=void 0;function oo(w){for(var L="",AA=w;Or[AA];)L+=SI[Or[AA++]];return L}var Hs=void 0;function vo(w){throw new Hs(w)}function ag(w,L){var AA=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(!("argPackAdvance"in L))throw new TypeError("registerType registeredInstance requires argPackAdvance");var EA=L.name;if(w||vo('type "'+EA+'" must have a positive integer typeid pointer'),Ua.hasOwnProperty(w)){if(AA.ignoreDuplicateRegistrations)return;vo("Cannot register type '"+EA+"' twice")}if(Ua[w]=L,delete ea[w],Na.hasOwnProperty(w)){var GA=Na[w];delete Na[w],GA.forEach(function(qA){return qA()})}}function Va(w){vo(w.$$.ptrType.registeredClass.name+" instance already deleted")}var RI=!1;function Ea(w){}function CI(w){w.count.value-=1,w.count.value===0&&function(L){L.smartPtr?L.smartPtrType.rawDestructor(L.smartPtr):L.ptrType.registeredClass.rawDestructor(L.ptr)}(w)}function qI(w,L,AA){if(L===AA)return w;if(AA.baseClass===void 0)return null;var EA=qI(w,L,AA.baseClass);return EA===null?null:AA.downcast(EA)}var Sr={},xo=[];function BI(){for(;xo.length;){var w=xo.pop();w.$$.deleteScheduled=!1,w.delete()}}var zo=void 0,Ds={};function pg(w,L){return L.ptrType&&L.ptr||ni("makeClassHandle requires ptr and ptrType"),!!L.smartPtrType!=!!L.smartPtr&&ni("Both smartPtrType and smartPtr must be specified"),L.count={value:1},mg(Object.create(w,{$$:{value:L}}))}function mg(w){return typeof FinalizationRegistry>"u"?(mg=function(L){return L},w):(RI=new FinalizationRegistry(function(L){CI(L.$$)}),mg=function(L){var AA=L.$$;if(AA.smartPtr){var EA={$$:AA};RI.register(L,EA,L)}return L},Ea=function(L){return RI.unregister(L)},mg(w))}function kr(){}function Us(w,L,AA){if(w[L].overloadTable===void 0){var EA=w[L];w[L]=function(){return w[L].overloadTable.hasOwnProperty(arguments.length)||vo("Function '"+AA+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+w[L].overloadTable+")!"),w[L].overloadTable[arguments.length].apply(this,arguments)},w[L].overloadTable=[],w[L].overloadTable[EA.argCount]=EA}}function Ee(w,L,AA){eA.hasOwnProperty(w)?((AA===void 0||eA[w].overloadTable!==void 0&&eA[w].overloadTable[AA]!==void 0)&&vo("Cannot register public name '"+w+"' twice"),Us(eA,w,w),eA.hasOwnProperty(AA)&&vo("Cannot register multiple overloads of a function with the same number of arguments ("+AA+")!"),eA[w].overloadTable[AA]=L):(eA[w]=L,AA!==void 0&&(eA[w].numArguments=AA))}function Hg(w,L,AA,EA,GA,qA,de,E){this.name=w,this.constructor=L,this.instancePrototype=AA,this.rawDestructor=EA,this.baseClass=GA,this.getActualType=qA,this.upcast=de,this.downcast=E,this.pureVirtualFunctions=[]}function Za(w,L,AA){for(;L!==AA;)L.upcast||vo("Expected null or instance of "+AA.name+", got an instance of "+L.name),w=L.upcast(w),L=L.baseClass;return w}function To(w,L){if(L===null)return this.isReference&&vo("null is not a valid "+this.name),0;L.$$||vo('Cannot pass "'+Zn(L)+'" as a '+this.name),L.$$.ptr||vo("Cannot pass deleted object as a pointer of type "+this.name);var AA=L.$$.ptrType.registeredClass;return Za(L.$$.ptr,AA,this.registeredClass)}function ir(w,L){var AA;if(L===null)return this.isReference&&vo("null is not a valid "+this.name),this.isSmartPointer?(AA=this.rawConstructor(),w!==null&&w.push(this.rawDestructor,AA),AA):0;L.$$||vo('Cannot pass "'+Zn(L)+'" as a '+this.name),L.$$.ptr||vo("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&L.$$.ptrType.isConst&&vo("Cannot convert argument of type "+(L.$$.smartPtrType?L.$$.smartPtrType.name:L.$$.ptrType.name)+" to parameter type "+this.name);var EA=L.$$.ptrType.registeredClass;if(AA=Za(L.$$.ptr,EA,this.registeredClass),this.isSmartPointer)switch(L.$$.smartPtr===void 0&&vo("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:L.$$.smartPtrType===this?AA=L.$$.smartPtr:vo("Cannot convert argument of type "+(L.$$.smartPtrType?L.$$.smartPtrType.name:L.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:AA=L.$$.smartPtr;break;case 2:if(L.$$.smartPtrType===this)AA=L.$$.smartPtr;else{var GA=L.clone();AA=this.rawShare(AA,xs.toHandle(function(){GA.delete()})),w!==null&&w.push(this.rawDestructor,AA)}break;default:vo("Unsupporting sharing policy")}return AA}function Ig(w,L){if(L===null)return this.isReference&&vo("null is not a valid "+this.name),0;L.$$||vo('Cannot pass "'+Zn(L)+'" as a '+this.name),L.$$.ptr||vo("Cannot pass deleted object as a pointer of type "+this.name),L.$$.ptrType.isConst&&vo("Cannot convert argument of type "+L.$$.ptrType.name+" to parameter type "+this.name);var AA=L.$$.ptrType.registeredClass;return Za(L.$$.ptr,AA,this.registeredClass)}function fi(w,L,AA,EA,GA,qA,de,E,J,F,sA){this.name=w,this.registeredClass=L,this.isReference=AA,this.isConst=EA,this.isSmartPointer=GA,this.pointeeType=qA,this.sharingPolicy=de,this.rawGetPointee=E,this.rawConstructor=J,this.rawShare=F,this.rawDestructor=sA,GA||L.baseClass!==void 0?this.toWireType=ir:EA?(this.toWireType=To,this.destructorFunction=null):(this.toWireType=Ig,this.destructorFunction=null)}function Sn(w,L,AA){eA.hasOwnProperty(w)||ni("Replacing nonexistant public symbol"),eA[w].overloadTable!==void 0&&AA!==void 0?eA[w].overloadTable[AA]=L:(eA[w]=L,eA[w].argCount=AA)}function Wn(w){return js.get(w)}function Po(w,L){var AA,EA,GA,qA=(w=oo(w)).includes("j")?(AA=w,EA=L,GA=[],function(){return GA.length=0,Object.assign(GA,arguments),function(de,E,J){return de.includes("j")?function(F,sA,MA){var dA=eA["dynCall_"+F];return MA&&MA.length?dA.apply(null,[sA].concat(MA)):dA.call(null,sA)}(de,E,J):Wn(E).apply(null,J)}(AA,EA,GA)}):Wn(L);return typeof qA!="function"&&vo("unknown function pointer with signature "+w+": "+L),qA}var po=void 0;function $o(w){var L=GI(w),AA=oo(L);return As(L),AA}function Qe(w,L){var AA=[],EA={};throw L.forEach(function GA(qA){EA[qA]||Ua[qA]||(ea[qA]?ea[qA].forEach(GA):(AA.push(qA),EA[qA]=!0))}),new po(w+": "+AA.map($o).join([", "]))}function Ls(w,L){for(var AA=[],EA=0;EA<w;EA++)AA.push(fo[L+4*EA>>2]);return AA}function Oo(w,L,AA,EA,GA){var qA=L.length;qA<2&&vo("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var de=L[1]!==null&&AA!==null,E=!1,J=1;J<L.length;++J)if(L[J]!==null&&L[J].destructorFunction===void 0){E=!0;break}var F=L[0].name!=="void",sA="",MA="";for(J=0;J<qA-2;++J)sA+=(J!==0?", ":"")+"arg"+J,MA+=(J!==0?", ":"")+"arg"+J+"Wired";var dA="return function "+La(w)+"("+sA+`) {
if (arguments.length !== `+(qA-2)+`) {
throwBindingError('function `+w+" called with ' + arguments.length + ' arguments, expected "+(qA-2)+` args!');
}
`;E&&(dA+=`var destructors = [];
`);var PA=E?"destructors":"null",OA=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],Xe=[vo,EA,GA,Bo,L[0],L[1]];for(de&&(dA+="var thisWired = classParam.toWireType("+PA+`, this);
`),J=0;J<qA-2;++J)dA+="var arg"+J+"Wired = argType"+J+".toWireType("+PA+", arg"+J+"); // "+L[J+2].name+`
`,OA.push("argType"+J),Xe.push(L[J+2]);if(de&&(MA="thisWired"+(MA.length>0?", ":"")+MA),dA+=(F?"var rv = ":"")+"invoker(fn"+(MA.length>0?", ":"")+MA+`);
`,E)dA+=`runDestructors(destructors);
`;else for(J=de?1:2;J<L.length;++J){var Le=J===1?"thisWired":"arg"+(J-2)+"Wired";L[J].destructorFunction!==null&&(dA+=Le+"_dtor("+Le+"); // "+L[J].name+`
`,OA.push(Le+"_dtor"),Xe.push(L[J].destructorFunction))}return F&&(dA+=`var ret = retType.fromWireType(rv);
return ret;
`),dA+=`}
`,OA.push(dA),function(be,se){if(!(be instanceof Function))throw new TypeError("new_ called with constructor type "+u(be)+" which is not a function");var Ge=ms(be.name||"unknownFunctionName",function(){});Ge.prototype=be.prototype;var je=new Ge,ve=be.apply(je,se);return ve instanceof Object?ve:je}(Function,OA).apply(null,Xe)}var Xr=[],Br=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function gs(w){w>4&&--Br[w].refcount===0&&(Br[w]=void 0,Xr.push(w))}var xs={toValue:function(w){return w||vo("Cannot use deleted val. handle = "+w),Br[w].value},toHandle:function(w){switch(w){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var L=Xr.length?Xr.pop():Br.length;return Br[L]={refcount:1,value:w},L}}};function Zn(w){if(w===null)return"null";var L=u(w);return L==="object"||L==="array"||L==="function"?w.toString():""+w}function $s(w,L){switch(L){case 2:return function(AA){return this.fromWireType(Yg[AA>>2])};case 3:return function(AA){return this.fromWireType(Ja[AA>>3])};default:throw new TypeError("Unknown float type: "+w)}}function qr(w,L,AA){switch(L){case 0:return AA?function(EA){return xr[EA]}:function(EA){return Or[EA]};case 1:return AA?function(EA){return Gs[EA>>1]}:function(EA){return dg[EA>>1]};case 2:return AA?function(EA){return vi[EA>>2]}:function(EA){return fo[EA>>2]};default:throw new TypeError("Unknown integer type: "+w)}}var _r=typeof TextDecoder<"u"?new TextDecoder("utf-16le"):void 0;function mr(w,L){for(var AA=w,EA=AA>>1,GA=EA+L/2;!(EA>=GA)&&dg[EA];)++EA;if((AA=EA<<1)-w>32&&_r)return _r.decode(Or.subarray(w,AA));for(var qA="",de=0;!(de>=L/2);++de){var E=Gs[w+2*de>>1];if(E==0)break;qA+=String.fromCharCode(E)}return qA}function Dg(w,L,AA){if(AA===void 0&&(AA=2147483647),AA<2)return 0;for(var EA=L,GA=(AA-=2)<2*w.length?AA/2:w.length,qA=0;qA<GA;++qA){var de=w.charCodeAt(qA);Gs[L>>1]=de,L+=2}return Gs[L>>1]=0,L-EA}function dr(w){return 2*w.length}function Qo(w,L){for(var AA=0,EA="";!(AA>=L/4);){var GA=vi[w+4*AA>>2];if(GA==0)break;if(++AA,GA>=65536){var qA=GA-65536;EA+=String.fromCharCode(55296|qA>>10,56320|1023&qA)}else EA+=String.fromCharCode(GA)}return EA}function Nn(w,L,AA){if(AA===void 0&&(AA=2147483647),AA<4)return 0;for(var EA=L,GA=EA+AA-4,qA=0;qA<w.length;++qA){var de=w.charCodeAt(qA);if(de>=55296&&de<=57343&&(de=65536+((1023&de)<<10)|1023&w.charCodeAt(++qA)),vi[L>>2]=de,(L+=4)+4>GA)break}return vi[L>>2]=0,L-EA}function lo(w){for(var L=0,AA=0;AA<w.length;++AA){var EA=w.charCodeAt(AA);EA>=55296&&EA<=57343&&++AA,L+=4}return L}function Tr(w){var L=Ra(w)+1,AA=ta(L);return AA&&Ca(w,xr,AA,L),AA}var tn=[];function Ag(w){try{return Lr.grow(w-Pr.byteLength+65535>>>16),Fs(Lr.buffer),1}catch{}}var Kr={};function Rr(){if(!Rr.strings){var w={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:((typeof navigator>"u"?"undefined":u(navigator))=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:xe||"./this.program"};for(var L in Kr)Kr[L]===void 0?delete w[L]:w[L]=Kr[L];var AA=[];for(var L in w)AA.push(L+"="+w[L]);Rr.strings=AA}return Rr.strings}function Cg(w){return w%4==0&&(w%100!=0||w%400==0)}var yg=[31,29,31,30,31,30,31,31,30,31,30,31],Qa=[31,28,31,30,31,30,31,31,30,31,30,31];function as(w,L,AA,EA){var GA=vi[EA+40>>2],qA={tm_sec:vi[EA>>2],tm_min:vi[EA+4>>2],tm_hour:vi[EA+8>>2],tm_mday:vi[EA+12>>2],tm_mon:vi[EA+16>>2],tm_year:vi[EA+20>>2],tm_wday:vi[EA+24>>2],tm_yday:vi[EA+28>>2],tm_isdst:vi[EA+32>>2],tm_gmtoff:vi[EA+36>>2],tm_zone:GA?fg(GA):""},de=fg(AA),E={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var J in E)de=de.replace(new RegExp(J,"g"),E[J]);var F=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],sA=["January","February","March","April","May","June","July","August","September","October","November","December"];function MA(se,Ge,je){for(var ve=typeof se=="number"?se.toString():se||"";ve.length<Ge;)ve=je[0]+ve;return ve}function dA(se,Ge){return MA(se,Ge,"0")}function PA(se,Ge){function je(Ve){return Ve<0?-1:Ve>0?1:0}var ve;return(ve=je(se.getFullYear()-Ge.getFullYear()))===0&&(ve=je(se.getMonth()-Ge.getMonth()))===0&&(ve=je(se.getDate()-Ge.getDate())),ve}function OA(se){switch(se.getDay()){case 0:return new Date(se.getFullYear()-1,11,29);case 1:return se;case 2:return new Date(se.getFullYear(),0,3);case 3:return new Date(se.getFullYear(),0,2);case 4:return new Date(se.getFullYear(),0,1);case 5:return new Date(se.getFullYear()-1,11,31);case 6:return new Date(se.getFullYear()-1,11,30)}}function Xe(se){var Ge=function(FA,At){for(var Pe=new Date(FA.getTime());At>0;){var at=Cg(Pe.getFullYear()),et=Pe.getMonth(),rt=(at?yg:Qa)[et];if(!(At>rt-Pe.getDate()))return Pe.setDate(Pe.getDate()+At),Pe;At-=rt-Pe.getDate()+1,Pe.setDate(1),et<11?Pe.setMonth(et+1):(Pe.setMonth(0),Pe.setFullYear(Pe.getFullYear()+1))}return Pe}(new Date(se.tm_year+1900,0,1),se.tm_yday),je=new Date(Ge.getFullYear(),0,4),ve=new Date(Ge.getFullYear()+1,0,4),Ve=OA(je),Ae=OA(ve);return PA(Ve,Ge)<=0?PA(Ae,Ge)<=0?Ge.getFullYear()+1:Ge.getFullYear():Ge.getFullYear()-1}var Le={"%a":function(se){return F[se.tm_wday].substring(0,3)},"%A":function(se){return F[se.tm_wday]},"%b":function(se){return sA[se.tm_mon].substring(0,3)},"%B":function(se){return sA[se.tm_mon]},"%C":function(se){return dA((se.tm_year+1900)/100|0,2)},"%d":function(se){return dA(se.tm_mday,2)},"%e":function(se){return MA(se.tm_mday,2," ")},"%g":function(se){return Xe(se).toString().substring(2)},"%G":function(se){return Xe(se)},"%H":function(se){return dA(se.tm_hour,2)},"%I":function(se){var Ge=se.tm_hour;return Ge==0?Ge=12:Ge>12&&(Ge-=12),dA(Ge,2)},"%j":function(se){return dA(se.tm_mday+function(Ge,je){for(var ve=0,Ve=0;Ve<=je;ve+=Ge[Ve++]);return ve}(Cg(se.tm_year+1900)?yg:Qa,se.tm_mon-1),3)},"%m":function(se){return dA(se.tm_mon+1,2)},"%M":function(se){return dA(se.tm_min,2)},"%n":function(){return`
`},"%p":function(se){return se.tm_hour>=0&&se.tm_hour<12?"AM":"PM"},"%S":function(se){return dA(se.tm_sec,2)},"%t":function(){return" "},"%u":function(se){return se.tm_wday||7},"%U":function(se){var Ge=se.tm_yday+7-se.tm_wday;return dA(Math.floor(Ge/7),2)},"%V":function(se){var Ge=Math.floor((se.tm_yday+7-(se.tm_wday+6)%7)/7);if((se.tm_wday+371-se.tm_yday-2)%7<=2&&Ge++,Ge){if(Ge==53){var je=(se.tm_wday+371-se.tm_yday)%7;je==4||je==3&&Cg(se.tm_year)||(Ge=1)}}else{Ge=52;var ve=(se.tm_wday+7-se.tm_yday-1)%7;(ve==4||ve==5&&Cg(se.tm_year%400-1))&&Ge++}return dA(Ge,2)},"%w":function(se){return se.tm_wday},"%W":function(se){var Ge=se.tm_yday+7-(se.tm_wday+6)%7;return dA(Math.floor(Ge/7),2)},"%y":function(se){return(se.tm_year+1900).toString().substring(2)},"%Y":function(se){return se.tm_year+1900},"%z":function(se){var Ge=se.tm_gmtoff,je=Ge>=0;return Ge=(Ge=Math.abs(Ge)/60)/60*100+Ge%60,(je?"+":"-")+("0000"+Ge).slice(-4)},"%Z":function(se){return se.tm_zone},"%%":function(){return"%"}};for(var J in de=de.replace(/%%/g,"\0\0"),Le)de.includes(J)&&(de=de.replace(new RegExp(J,"g"),Le[J](qA)));var be=II(de=de.replace(/\0\0/g,"%"),!1);return be.length>L?0:(function(se,Ge){xr.set(se,Ge)}(be,w),be.length-1)}var ja=function(w,L,AA,EA){w||(w=this),this.parent=w,this.mount=w.mount,this.mounted=null,this.id=fA.nextInode++,this.name=L,this.mode=AA,this.node_ops={},this.stream_ops={},this.rdev=EA};Object.defineProperties(ja.prototype,{read:{get:function(){return!(365&~this.mode)},set:function(w){w?this.mode|=365:this.mode&=-366}},write:{get:function(){return!(146&~this.mode)},set:function(w){w?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return fA.isDir(this.mode)}},isDevice:{get:function(){return fA.isChrdev(this.mode)}}}),fA.FSNode=ja,fA.staticInit(),MI=eA.InternalError=eo(Error,"InternalError"),function(){for(var w=new Array(256),L=0;L<256;++L)w[L]=String.fromCharCode(L);SI=w}(),Hs=eA.BindingError=eo(Error,"BindingError"),kr.prototype.isAliasOf=function(w){if(!(this instanceof kr)||!(w instanceof kr))return!1;for(var L=this.$$.ptrType.registeredClass,AA=this.$$.ptr,EA=w.$$.ptrType.registeredClass,GA=w.$$.ptr;L.baseClass;)AA=L.upcast(AA),L=L.baseClass;for(;EA.baseClass;)GA=EA.upcast(GA),EA=EA.baseClass;return L===EA&&AA===GA},kr.prototype.clone=function(){if(this.$$.ptr||Va(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var w,L=mg(Object.create(Object.getPrototypeOf(this),{$$:{value:(w=this.$$,{count:w.count,deleteScheduled:w.deleteScheduled,preservePointerOnDelete:w.preservePointerOnDelete,ptr:w.ptr,ptrType:w.ptrType,smartPtr:w.smartPtr,smartPtrType:w.smartPtrType})}}));return L.$$.count.value+=1,L.$$.deleteScheduled=!1,L},kr.prototype.delete=function(){this.$$.ptr||Va(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&vo("Object already scheduled for deletion"),Ea(this),CI(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},kr.prototype.isDeleted=function(){return!this.$$.ptr},kr.prototype.deleteLater=function(){return this.$$.ptr||Va(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&vo("Object already scheduled for deletion"),xo.push(this),xo.length===1&&zo&&zo(BI),this.$$.deleteScheduled=!0,this},eA.getInheritedInstanceCount=function(){return Object.keys(Ds).length},eA.getLiveInheritedInstances=function(){var w=[];for(var L in Ds)Ds.hasOwnProperty(L)&&w.push(Ds[L]);return w},eA.flushPendingDeletes=BI,eA.setDelayFunction=function(w){zo=w,xo.length&&zo&&zo(BI)},fi.prototype.getPointee=function(w){return this.rawGetPointee&&(w=this.rawGetPointee(w)),w},fi.prototype.destructor=function(w){this.rawDestructor&&this.rawDestructor(w)},fi.prototype.argPackAdvance=8,fi.prototype.readValueFromPointer=va,fi.prototype.deleteObject=function(w){w!==null&&w.delete()},fi.prototype.fromWireType=function(w){var L=this.getPointee(w);if(!L)return this.destructor(w),null;var AA=function(F,sA){return sA=function(MA,dA){for(dA===void 0&&vo("ptr should not be undefined");MA.baseClass;)dA=MA.upcast(dA),MA=MA.baseClass;return dA}(F,sA),Ds[sA]}(this.registeredClass,L);if(AA!==void 0){if(AA.$$.count.value===0)return AA.$$.ptr=L,AA.$$.smartPtr=w,AA.clone();var EA=AA.clone();return this.destructor(w),EA}function GA(){return this.isSmartPointer?pg(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:L,smartPtrType:this,smartPtr:w}):pg(this.registeredClass.instancePrototype,{ptrType:this,ptr:w})}var qA,de=this.registeredClass.getActualType(L),E=Sr[de];if(!E)return GA.call(this);qA=this.isConst?E.constPointerType:E.pointerType;var J=qI(L,this.registeredClass,qA.registeredClass);return J===null?GA.call(this):this.isSmartPointer?pg(qA.registeredClass.instancePrototype,{ptrType:qA,ptr:J,smartPtrType:this,smartPtr:w}):pg(qA.registeredClass.instancePrototype,{ptrType:qA,ptr:J})},po=eA.UnboundTypeError=eo(Error,"UnboundTypeError"),eA.count_emval_handles=function(){for(var w=0,L=5;L<Br.length;++L)Br[L]!==void 0&&++w;return w},eA.get_first_emval=function(){for(var w=5;w<Br.length;++w)if(Br[w]!==void 0)return Br[w];return null};var ys=typeof atob=="function"?atob:function(w){var L,AA,EA,GA,qA,de,E="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",J="",F=0;w=w.replace(/[^A-Za-z0-9\+\/\=]/g,"");do L=E.indexOf(w.charAt(F++))<<2|(GA=E.indexOf(w.charAt(F++)))>>4,AA=(15&GA)<<4|(qA=E.indexOf(w.charAt(F++)))>>2,EA=(3&qA)<<6|(de=E.indexOf(w.charAt(F++))),J+=String.fromCharCode(L),qA!==64&&(J+=String.fromCharCode(AA)),de!==64&&(J+=String.fromCharCode(EA));while(F<w.length);return J};function Er(w){if($g(w))return function(L){if(typeof Qi=="boolean"&&Qi){var AA=Buffer.from(L,"base64");return new Uint8Array(AA.buffer,AA.byteOffset,AA.byteLength)}try{for(var EA=ys(L),GA=new Uint8Array(EA.length),qA=0;qA<EA.length;++qA)GA[qA]=EA.charCodeAt(qA);return GA}catch{throw new Error("Converting base64 string to bytes failed.")}}(w.slice(yI.length))}var eg,Eo={g:function(w){return ta(w+24)+24},f:function(w,L,AA){throw new rC(w).init(L,AA),w},o:function(w,L,AA){Bs.varargs=AA;try{var EA=Bs.getStreamFromFD(w);switch(L){case 0:return(GA=Bs.get())<0?-28:fA.createStream(EA,GA).fd;case 1:case 2:case 6:case 7:return 0;case 3:return EA.flags;case 4:var GA=Bs.get();return EA.flags|=GA,0;case 5:return GA=Bs.get(),Gs[GA+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return vi[ca()>>2]=28,-1}}catch(qA){if(fA===void 0||!(qA instanceof fA.ErrnoError))throw qA;return-qA.errno}},G:function(w,L,AA){Bs.varargs=AA;try{var EA=Bs.getStreamFromFD(w);switch(L){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return EA.tty?0:-59;case 21519:if(!EA.tty)return-59;var GA=Bs.get();return vi[GA>>2]=0,0;case 21520:return EA.tty?-28:-59;case 21531:return GA=Bs.get(),fA.ioctl(EA,L,GA);default:return-28}}catch(qA){if(fA===void 0||!(qA instanceof fA.ErrnoError))throw qA;return-qA.errno}},H:function(w,L,AA,EA){Bs.varargs=EA;try{L=Bs.getStr(L),L=Bs.calculateAt(w,L);var GA=EA?Bs.get():0;return fA.open(L,AA,GA).fd}catch(qA){if(fA===void 0||!(qA instanceof fA.ErrnoError))throw qA;return-qA.errno}},R:function(w){var L=Ot[w];delete Ot[w];var AA=L.rawConstructor,EA=L.rawDestructor,GA=L.fields;ds([w],GA.map(function(qA){return qA.getterReturnType}).concat(GA.map(function(qA){return qA.setterArgumentType})),function(qA){var de={};return GA.forEach(function(E,J){var F=E.fieldName,sA=qA[J],MA=E.getter,dA=E.getterContext,PA=qA[J+GA.length],OA=E.setter,Xe=E.setterContext;de[F]={read:function(Le){return sA.fromWireType(MA(dA,Le))},write:function(Le,be){var se=[];OA(Xe,Le,PA.toWireType(se,be)),Bo(se)}}}),[{name:L.name,fromWireType:function(E){var J={};for(var F in de)J[F]=de[F].read(E);return EA(E),J},toWireType:function(E,J){for(var F in de)if(!(F in J))throw new TypeError('Missing field: "'+F+'"');var sA=AA();for(F in de)de[F].write(sA,J[F]);return E!==null&&E.push(EA,sA),sA},argPackAdvance:8,readValueFromPointer:va,destructorFunction:EA}]})},y:function(w,L,AA,EA,GA){},L:function(w,L,AA,EA,GA){var qA=Ba(AA);ag(w,{name:L=oo(L),fromWireType:function(de){return!!de},toWireType:function(de,E){return E?EA:GA},argPackAdvance:8,readValueFromPointer:function(de){var E;if(AA===1)E=xr;else if(AA===2)E=Gs;else{if(AA!==4)throw new TypeError("Unknown boolean type size: "+L);E=vi}return this.fromWireType(E[de>>qA])},destructorFunction:null})},U:function(w,L,AA,EA,GA,qA,de,E,J,F,sA,MA,dA){sA=oo(sA),qA=Po(GA,qA),E&&(E=Po(de,E)),F&&(F=Po(J,F)),dA=Po(MA,dA);var PA=La(sA);Ee(PA,function(){Qe("Cannot construct "+sA+" due to unbound types",[EA])}),ds([w,L,AA],EA?[EA]:[],function(OA){var Xe,Le;OA=OA[0],Le=EA?(Xe=OA.registeredClass).instancePrototype:kr.prototype;var be=ms(PA,function(){if(Object.getPrototypeOf(this)!==se)throw new Hs("Use 'new' to construct "+sA);if(Ge.constructor_body===void 0)throw new Hs(sA+" has no accessible constructor");var Ae=Ge.constructor_body[arguments.length];if(Ae===void 0)throw new Hs("Tried to invoke ctor of "+sA+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(Ge.constructor_body).toString()+") parameters instead!");return Ae.apply(this,arguments)}),se=Object.create(Le,{constructor:{value:be}});be.prototype=se;var Ge=new Hg(sA,be,se,dA,Xe,qA,E,F),je=new fi(sA,Ge,!0,!1,!1),ve=new fi(sA+"*",Ge,!1,!1,!1),Ve=new fi(sA+" const*",Ge,!1,!0,!1);return Sr[w]={pointerType:ve,constPointerType:Ve},Sn(PA,be),[je,ve,Ve]})},Q:function(w,L,AA,EA,GA,qA){bg(L>0);var de=Ls(L,AA);GA=Po(EA,GA),ds([],[w],function(E){var J="constructor "+(E=E[0]).name;if(E.registeredClass.constructor_body===void 0&&(E.registeredClass.constructor_body=[]),E.registeredClass.constructor_body[L-1]!==void 0)throw new Hs("Cannot register multiple constructors with identical number of parameters ("+(L-1)+") for class '"+E.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return E.registeredClass.constructor_body[L-1]=function(){Qe("Cannot construct "+E.name+" due to unbound types",de)},ds([],de,function(F){return F.splice(1,0,null),E.registeredClass.constructor_body[L-1]=Oo(J,F,null,GA,qA),[]}),[]})},h:function(w,L,AA,EA,GA,qA,de,E){var J=Ls(AA,EA);L=oo(L),qA=Po(GA,qA),ds([],[w],function(F){var sA=(F=F[0]).name+"."+L;function MA(){Qe("Cannot call "+sA+" due to unbound types",J)}L.startsWith("@@")&&(L=Symbol[L.substring(2)]),E&&F.registeredClass.pureVirtualFunctions.push(L);var dA=F.registeredClass.instancePrototype,PA=dA[L];return PA===void 0||PA.overloadTable===void 0&&PA.className!==F.name&&PA.argCount===AA-2?(MA.argCount=AA-2,MA.className=F.name,dA[L]=MA):(Us(dA,L,sA),dA[L].overloadTable[AA-2]=MA),ds([],J,function(OA){var Xe=Oo(sA,OA,F,qA,de);return dA[L].overloadTable===void 0?(Xe.argCount=AA-2,dA[L]=Xe):dA[L].overloadTable[AA-2]=Xe,[]}),[]})},s:function(w,L,AA){w=oo(w),ds([],[L],function(EA){return EA=EA[0],eA[w]=EA.fromWireType(AA),[]})},K:function(w,L){ag(w,{name:L=oo(L),fromWireType:function(AA){var EA=xs.toValue(AA);return gs(AA),EA},toWireType:function(AA,EA){return xs.toHandle(EA)},argPackAdvance:8,readValueFromPointer:va,destructorFunction:null})},r:function(w,L,AA){var EA=Ba(AA);ag(w,{name:L=oo(L),fromWireType:function(GA){return GA},toWireType:function(GA,qA){return qA},argPackAdvance:8,readValueFromPointer:$s(L,EA),destructorFunction:null})},d:function(w,L,AA,EA,GA,qA){var de=Ls(L,AA);w=oo(w),GA=Po(EA,GA),Ee(w,function(){Qe("Cannot call "+w+" due to unbound types",de)},L-1),ds([],de,function(E){var J=[E[0],null].concat(E.slice(1));return Sn(w,Oo(w,J,null,GA,qA),L-1),[]})},e:function(w,L,AA,EA,GA){L=oo(L);var qA=Ba(AA),de=function(F){return F};if(EA===0){var E=32-8*AA;de=function(F){return F<<E>>>E}}var J=L.includes("unsigned");ag(w,{name:L,fromWireType:de,toWireType:J?function(F,sA){return this.name,sA>>>0}:function(F,sA){return this.name,sA},argPackAdvance:8,readValueFromPointer:qr(L,qA,EA!==0),destructorFunction:null})},c:function(w,L,AA){var EA=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][L];function GA(qA){var de=fo,E=de[qA>>=2],J=de[qA+1];return new EA(Pr,J,E)}ag(w,{name:AA=oo(AA),fromWireType:GA,argPackAdvance:8,readValueFromPointer:GA},{ignoreDuplicateRegistrations:!0})},q:function(w,L){var AA=(L=oo(L))==="std::string";ag(w,{name:L,fromWireType:function(EA){var GA,qA=fo[EA>>2],de=EA+4;if(AA)for(var E=de,J=0;J<=qA;++J){var F=de+J;if(J==qA||Or[F]==0){var sA=fg(E,F-E);GA===void 0?GA=sA:(GA+="\0",GA+=sA),E=F+1}}else{var MA=new Array(qA);for(J=0;J<qA;++J)MA[J]=String.fromCharCode(Or[de+J]);GA=MA.join("")}return As(EA),GA},toWireType:function(EA,GA){var qA;GA instanceof ArrayBuffer&&(GA=new Uint8Array(GA));var de=typeof GA=="string";de||GA instanceof Uint8Array||GA instanceof Uint8ClampedArray||GA instanceof Int8Array||vo("Cannot pass non-string to std::string"),qA=AA&&de?Ra(GA):GA.length;var E=ta(4+qA+1),J=E+4;if(fo[E>>2]=qA,AA&&de)Ca(GA,Or,J,qA+1);else if(de)for(var F=0;F<qA;++F){var sA=GA.charCodeAt(F);sA>255&&(As(J),vo("String has UTF-16 code units that do not fit in 8 bits")),Or[J+F]=sA}else for(F=0;F<qA;++F)Or[J+F]=GA[F];return EA!==null&&EA.push(As,E),E},argPackAdvance:8,readValueFromPointer:va,destructorFunction:function(EA){As(EA)}})},l:function(w,L,AA){var EA,GA,qA,de,E;AA=oo(AA),L===2?(EA=mr,GA=Dg,de=dr,qA=function(){return dg},E=1):L===4&&(EA=Qo,GA=Nn,de=lo,qA=function(){return fo},E=2),ag(w,{name:AA,fromWireType:function(J){for(var F,sA=fo[J>>2],MA=qA(),dA=J+4,PA=0;PA<=sA;++PA){var OA=J+4+PA*L;if(PA==sA||MA[OA>>E]==0){var Xe=EA(dA,OA-dA);F===void 0?F=Xe:(F+="\0",F+=Xe),dA=OA+L}}return As(J),F},toWireType:function(J,F){typeof F!="string"&&vo("Cannot pass non-string to C++ string type "+AA);var sA=de(F),MA=ta(4+sA+L);return fo[MA>>2]=sA>>E,GA(F,MA+4,sA+L),J!==null&&J.push(As,MA),MA},argPackAdvance:8,readValueFromPointer:va,destructorFunction:function(J){As(J)}})},T:function(w,L,AA,EA,GA,qA){Ot[w]={name:oo(L),rawConstructor:Po(AA,EA),rawDestructor:Po(GA,qA),fields:[]}},S:function(w,L,AA,EA,GA,qA,de,E,J,F){Ot[w].fields.push({fieldName:oo(L),getterReturnType:AA,getter:Po(EA,GA),getterContext:qA,setterArgumentType:de,setter:Po(E,J),setterContext:F})},M:function(w,L){ag(w,{isVoid:!0,name:L=oo(L),argPackAdvance:0,fromWireType:function(){},toWireType:function(AA,EA){}})},p:function(){return Date.now()},A:function(){throw 1/0},O:gs,P:function(w){w>4&&(Br[w].refcount+=1)},N:function(w,L){var AA,EA;(EA=Ua[AA=w])===void 0&&vo("_emval_take_value has unknown type "+$o(AA));var GA=(w=EA).readValueFromPointer(L);return xs.toHandle(GA)},I:function(w,L){var AA,EA=new Date(1e3*(fo[(AA=w)>>2]+4294967296*vi[AA+4>>2]));vi[L>>2]=EA.getSeconds(),vi[L+4>>2]=EA.getMinutes(),vi[L+8>>2]=EA.getHours(),vi[L+12>>2]=EA.getDate(),vi[L+16>>2]=EA.getMonth(),vi[L+20>>2]=EA.getFullYear()-1900,vi[L+24>>2]=EA.getDay();var GA=new Date(EA.getFullYear(),0,1),qA=(EA.getTime()-GA.getTime())/864e5|0;vi[L+28>>2]=qA,vi[L+36>>2]=-60*EA.getTimezoneOffset();var de=new Date(EA.getFullYear(),6,1).getTimezoneOffset(),E=GA.getTimezoneOffset(),J=0|(de!=E&&EA.getTimezoneOffset()==Math.min(E,de));vi[L+32>>2]=J},J:function w(L,AA,EA){w.called||(w.called=!0,function(GA,qA,de){var E=new Date().getFullYear(),J=new Date(E,0,1),F=new Date(E,6,1),sA=J.getTimezoneOffset(),MA=F.getTimezoneOffset(),dA=Math.max(sA,MA);function PA(se){var Ge=se.toTimeString().match(/\(([A-Za-z ]+)\)$/);return Ge?Ge[1]:"GMT"}vi[GA>>2]=60*dA,vi[qA>>2]=+(sA!=MA);var OA=PA(J),Xe=PA(F),Le=Tr(OA),be=Tr(Xe);MA<sA?(fo[de>>2]=Le,fo[de+4>>2]=be):(fo[de>>2]=be,fo[de+4>>2]=Le)}(L,AA,EA))},a:function(){ss("")},i:function(w,L,AA){var EA=function(GA,qA){var de;for(tn.length=0,qA>>=2;de=Or[GA++];)qA+=de!=105&qA,tn.push(de==105?vi[qA]:Ja[qA++>>1]),++qA;return tn}(L,AA);return no[w].apply(null,EA)},B:function(w){var L=Or.length,AA=2147483648;if((w>>>=0)>AA)return!1;for(var EA=function(de,E){return de+(E-de%E)%E},GA=1;GA<=4;GA*=2){var qA=L*(1+.2/GA);if(qA=Math.min(qA,w+100663296),Ag(Math.min(AA,EA(Math.max(w,qA),65536))))return!0}return!1},C:function(w,L){var AA=0;return Rr().forEach(function(EA,GA){var qA=L+AA;fo[w+4*GA>>2]=qA,function(de,E){for(var J=0;J<de.length;++J)xr[0|E++]=de.charCodeAt(J);xr[0|E]=0}(EA,qA),AA+=EA.length+1}),0},D:function(w,L){var AA=Rr();fo[w>>2]=AA.length;var EA=0;return AA.forEach(function(GA){EA+=GA.length+1}),fo[L>>2]=EA,0},b:function(w,L){var AA;AA=w,Lt(AA,new aI(AA))},m:function(w){try{var L=Bs.getStreamFromFD(w);return fA.close(L),0}catch(AA){if(fA===void 0||!(AA instanceof fA.ErrnoError))throw AA;return AA.errno}},F:function(w,L,AA,EA){try{var GA=function(qA,de,E){for(var J=0,F=0;F<E;F++){var sA=fo[de>>2],MA=fo[de+4>>2];de+=8;var dA=fA.read(qA,xr,sA,MA,void 0);if(dA<0)return-1;if(J+=dA,dA<MA)break}return J}(Bs.getStreamFromFD(w),L,AA);return fo[EA>>2]=GA,0}catch(qA){if(fA===void 0||!(qA instanceof fA.ErrnoError))throw qA;return qA.errno}},x:function(w,L,AA,EA,GA){try{var qA=(J=AA)+2097152>>>0<4194305-!!(E=L)?(E>>>0)+4294967296*J:NaN;if(isNaN(qA))return 61;var de=Bs.getStreamFromFD(w);return fA.llseek(de,qA,EA),Ho=[de.position>>>0,(qn=de.position,+Math.abs(qn)>=1?qn>0?(0|Math.min(+Math.floor(qn/4294967296),4294967295))>>>0:~~+Math.ceil((qn-+(~~qn>>>0))/4294967296)>>>0:0)],vi[GA>>2]=Ho[0],vi[GA+4>>2]=Ho[1],de.getdents&&qA===0&&EA===0&&(de.getdents=null),0}catch(F){if(fA===void 0||!(F instanceof fA.ErrnoError))throw F;return F.errno}var E,J},n:function(w,L,AA,EA){try{var GA=function(qA,de,E){for(var J=0,F=0;F<E;F++){var sA=fo[de>>2],MA=fo[de+4>>2];de+=8;var dA=fA.write(qA,xr,sA,MA,void 0);if(dA<0)return-1;J+=dA}return J}(Bs.getStreamFromFD(w),L,AA);return fo[EA>>2]=GA,0}catch(qA){if(fA===void 0||!(qA instanceof fA.ErrnoError))throw qA;return qA.errno}},t:function(w,L){var AA=Pg();try{return Wn(w)(L)}catch(EA){if(us(AA),EA!==EA+0)throw EA;bs(1,0)}},v:function(w,L,AA){var EA=Pg();try{return Wn(w)(L,AA)}catch(GA){if(us(EA),GA!==GA+0)throw GA;bs(1,0)}},u:function(w,L,AA,EA){var GA=Pg();try{return Wn(w)(L,AA,EA)}catch(qA){if(us(GA),qA!==qA+0)throw qA;bs(1,0)}},j:function(w,L){var AA=Pg();try{Wn(w)(L)}catch(EA){if(us(AA),EA!==EA+0)throw EA;bs(1,0)}},w:function(w,L,AA){var EA=Pg();try{Wn(w)(L,AA)}catch(GA){if(us(EA),GA!==GA+0)throw GA;bs(1,0)}},E:function(w,L,AA,EA){var GA=Pg();try{Wn(w)(L,AA,EA)}catch(qA){if(us(GA),qA!==qA+0)throw qA;bs(1,0)}},k:function(w,L,AA,EA,GA){var qA=Pg();try{Wn(w)(L,AA,EA,GA)}catch(de){if(us(qA),de!==de+0)throw de;bs(1,0)}},V:as,z:function(w,L,AA,EA){return as(w,L,AA,EA)}},ta=(function(){var w={a:Eo};function L(GA,qA){var de,E=GA.exports;eA.asm=E,Fs((Lr=eA.asm.W).buffer),js=eA.asm.$,de=eA.asm.X,br.unshift(de),Co()}function AA(GA){L(GA.instance)}function EA(GA){return function(){if(!vn&&(Vt||Ft)){if(typeof fetch=="function"&&!Ga(Ns))return fetch(Ns,{credentials:"same-origin"}).then(function(qA){if(!qA.ok)throw"failed to load wasm binary file at '"+Ns+"'";return qA.arrayBuffer()}).catch(function(){return gg(Ns)});if(Te)return new Promise(function(qA,de){Te(Ns,function(E){qA(new Uint8Array(E))},de)})}return Promise.resolve().then(function(){return gg(Ns)})}().then(function(qA){return WebAssembly.instantiate(qA,w)}).then(function(qA){return qA}).then(GA,function(qA){Io("failed to asynchronously prepare wasm: "+qA),ss(qA)})}if(Yo(),eA.instantiateWasm)try{return eA.instantiateWasm(w,L)}catch(GA){return Io("Module.instantiateWasm callback failed with error: "+GA),!1}(vn||typeof WebAssembly.instantiateStreaming!="function"||$g(Ns)||Ga(Ns)||Qi||typeof fetch!="function"?EA(AA):fetch(Ns,{credentials:"same-origin"}).then(function(GA){return WebAssembly.instantiateStreaming(GA,w).then(AA,function(qA){return Io("wasm streaming compile failed: "+qA),Io("falling back to ArrayBuffer instantiation"),EA(AA)})})).catch($A)}(),eA.___wasm_call_ctors=function(){return(eA.___wasm_call_ctors=eA.asm.X).apply(null,arguments)},eA._malloc=function(){return(ta=eA._malloc=eA.asm.Y).apply(null,arguments)}),As=eA._free=function(){return(As=eA._free=eA.asm.Z).apply(null,arguments)},ca=eA.___errno_location=function(){return(ca=eA.___errno_location=eA.asm._).apply(null,arguments)},GI=eA.___getTypeName=function(){return(GI=eA.___getTypeName=eA.asm.aa).apply(null,arguments)},bs=(eA.__embind_initialize_bindings=function(){return(eA.__embind_initialize_bindings=eA.asm.ba).apply(null,arguments)},eA._setThrew=function(){return(bs=eA._setThrew=eA.asm.ca).apply(null,arguments)}),Pg=eA.stackSave=function(){return(Pg=eA.stackSave=eA.asm.da).apply(null,arguments)},us=eA.stackRestore=function(){return(us=eA.stackRestore=eA.asm.ea).apply(null,arguments)},WI=eA.___cxa_is_pointer_type=function(){return(WI=eA.___cxa_is_pointer_type=eA.asm.fa).apply(null,arguments)};function VI(w){function L(){eg||(eg=!0,eA.calledRun=!0,rs||(eA.noFSInit||fA.init.initialized||fA.init(),fA.ignorePermissions=!1,wI(br),LA(eA),eA.onRuntimeInitialized&&eA.onRuntimeInitialized(),function(){if(eA.postRun)for(typeof eA.postRun=="function"&&(eA.postRun=[eA.postRun]);eA.postRun.length;)mI(eA.postRun.shift());wI(Xs)}()))}sg>0||(function(){if(eA.preRun)for(typeof eA.preRun=="function"&&(eA.preRun=[eA.preRun]);eA.preRun.length;)vs(eA.preRun.shift());wI(ls)}(),sg>0||(eA.setStatus?(eA.setStatus("Running..."),setTimeout(function(){setTimeout(function(){eA.setStatus("")},1),L()},1)):L()))}if(eA.dynCall_jiji=function(){return(eA.dynCall_jiji=eA.asm.ga).apply(null,arguments)},eA.dynCall_viijii=function(){return(eA.dynCall_viijii=eA.asm.ha).apply(null,arguments)},eA.dynCall_iiiiij=function(){return(eA.dynCall_iiiiij=eA.asm.ia).apply(null,arguments)},eA.dynCall_iiiiijj=function(){return(eA.dynCall_iiiiijj=eA.asm.ja).apply(null,arguments)},eA.dynCall_iiiiiijj=function(){return(eA.dynCall_iiiiiijj=eA.asm.ka).apply(null,arguments)},eA.FS=fA,zs=function w(){eg||VI(),eg||(zs=w)},eA.preInit)for(typeof eA.preInit=="function"&&(eA.preInit=[eA.preInit]);eA.preInit.length>0;)eA.preInit.pop()();return VI(),eA.ready});const Z=j,CA=function(){return new Promise(function(eA){Z({onRuntimeInitialized:function(){eA({instance:this})}})})};function QA(eA,LA){return function(){return eA.apply(LA,arguments)}}const{toString:SA}=Object.prototype,{getPrototypeOf:UA}=Object,{iterator:TA,toStringTag:pA}=Symbol,hA=(uA=Object.create(null),eA=>{const LA=SA.call(eA);return uA[LA]||(uA[LA]=LA.slice(8,-1).toLowerCase())});var uA;const lA=eA=>(eA=eA.toLowerCase(),LA=>hA(LA)===eA),NA=eA=>LA=>typeof LA===eA,{isArray:HA}=Array,pe=NA("undefined");function He(eA){return eA!==null&&!pe(eA)&&eA.constructor!==null&&!pe(eA.constructor)&&Ye(eA.constructor.isBuffer)&&eA.constructor.isBuffer(eA)}const Oe=lA("ArrayBuffer"),ye=NA("string"),Ye=NA("function"),Et=NA("number"),ct=eA=>eA!==null&&typeof eA=="object",q=eA=>{if(hA(eA)!=="object")return!1;const LA=UA(eA);return!(LA!==null&&LA!==Object.prototype&&Object.getPrototypeOf(LA)!==null||pA in eA||TA in eA)},gA=lA("Date"),yA=lA("File"),ge=lA("Blob"),le=lA("FileList"),Qt=lA("URLSearchParams"),[Ct,bt,pi,hi]=["ReadableStream","Request","Response","Headers"].map(lA);function un(eA,LA,{allOwnKeys:$A=!1}={}){if(eA==null)return;let re,Te;if(typeof eA!="object"&&(eA=[eA]),HA(eA))for(re=0,Te=eA.length;re<Te;re++)LA.call(null,eA[re],re,eA);else{if(He(eA))return;const Ke=$A?Object.getOwnPropertyNames(eA):Object.keys(eA),Ue=Ke.length;let ee;for(re=0;re<Ue;re++)ee=Ke[re],LA.call(null,eA[ee],ee,eA)}}function sn(eA,LA){if(He(eA))return null;LA=LA.toLowerCase();const $A=Object.keys(eA);let re,Te=$A.length;for(;Te-- >0;)if(re=$A[Te],LA===re.toLowerCase())return re;return null}const En=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:d.g,bn=eA=>!pe(eA)&&eA!==En,go=(Ao=typeof Uint8Array<"u"&&UA(Uint8Array),eA=>Ao&&eA instanceof Ao);var Ao;const Kn=lA("HTMLFormElement"),_o=(({hasOwnProperty:eA})=>(LA,$A)=>eA.call(LA,$A))(Object.prototype),Kt=lA("RegExp"),xA=(eA,LA)=>{const $A=Object.getOwnPropertyDescriptors(eA),re={};un($A,(Te,Ke)=>{let Ue;(Ue=LA(Te,Ke,eA))!==!1&&(re[Ke]=Ue||Te)}),Object.defineProperties(eA,re)},vA=lA("AsyncFunction"),ie=(ZA=typeof setImmediate=="function",jA=Ye(En.postMessage),ZA?setImmediate:jA?(Be=`axios@${Math.random()}`,aA=[],En.addEventListener("message",({source:eA,data:LA})=>{eA===En&&LA===Be&&aA.length&&aA.shift()()},!1),eA=>{aA.push(eA),En.postMessage(Be,"*")}):eA=>setTimeout(eA));var ZA,jA,Be,aA;const H=typeof queueMicrotask<"u"?queueMicrotask.bind(En):typeof process<"u"&&process.nextTick||ie,k={isArray:HA,isArrayBuffer:Oe,isBuffer:He,isFormData:eA=>{let LA;return eA&&(typeof FormData=="function"&&eA instanceof FormData||Ye(eA.append)&&((LA=hA(eA))==="formdata"||LA==="object"&&Ye(eA.toString)&&eA.toString()==="[object FormData]"))},isArrayBufferView:function(eA){let LA;return LA=typeof ArrayBuffer<"u"&&ArrayBuffer.isView?ArrayBuffer.isView(eA):eA&&eA.buffer&&Oe(eA.buffer),LA},isString:ye,isNumber:Et,isBoolean:eA=>eA===!0||eA===!1,isObject:ct,isPlainObject:q,isEmptyObject:eA=>{if(!ct(eA)||He(eA))return!1;try{return Object.keys(eA).length===0&&Object.getPrototypeOf(eA)===Object.prototype}catch{return!1}},isReadableStream:Ct,isRequest:bt,isResponse:pi,isHeaders:hi,isUndefined:pe,isDate:gA,isFile:yA,isBlob:ge,isRegExp:Kt,isFunction:Ye,isStream:eA=>ct(eA)&&Ye(eA.pipe),isURLSearchParams:Qt,isTypedArray:go,isFileList:le,forEach:un,merge:function eA(){const{caseless:LA,skipUndefined:$A}=bn(this)&&this||{},re={},Te=(Ke,Ue)=>{const ee=LA&&sn(re,Ue)||Ue;q(re[ee])&&q(Ke)?re[ee]=eA(re[ee],Ke):q(Ke)?re[ee]=eA({},Ke):HA(Ke)?re[ee]=Ke.slice():$A&&pe(Ke)||(re[ee]=Ke)};for(let Ke=0,Ue=arguments.length;Ke<Ue;Ke++)arguments[Ke]&&un(arguments[Ke],Te);return re},extend:(eA,LA,$A,{allOwnKeys:re}={})=>(un(LA,(Te,Ke)=>{$A&&Ye(Te)?eA[Ke]=QA(Te,$A):eA[Ke]=Te},{allOwnKeys:re}),eA),trim:eA=>eA.trim?eA.trim():eA.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:eA=>(eA.charCodeAt(0)===65279&&(eA=eA.slice(1)),eA),inherits:(eA,LA,$A,re)=>{eA.prototype=Object.create(LA.prototype,re),eA.prototype.constructor=eA,Object.defineProperty(eA,"super",{value:LA.prototype}),$A&&Object.assign(eA.prototype,$A)},toFlatObject:(eA,LA,$A,re)=>{let Te,Ke,Ue;const ee={};if(LA=LA||{},eA==null)return LA;do{for(Te=Object.getOwnPropertyNames(eA),Ke=Te.length;Ke-- >0;)Ue=Te[Ke],re&&!re(Ue,eA,LA)||ee[Ue]||(LA[Ue]=eA[Ue],ee[Ue]=!0);eA=$A!==!1&&UA(eA)}while(eA&&(!$A||$A(eA,LA))&&eA!==Object.prototype);return LA},kindOf:hA,kindOfTest:lA,endsWith:(eA,LA,$A)=>{eA=String(eA),($A===void 0||$A>eA.length)&&($A=eA.length),$A-=LA.length;const re=eA.indexOf(LA,$A);return re!==-1&&re===$A},toArray:eA=>{if(!eA)return null;if(HA(eA))return eA;let LA=eA.length;if(!Et(LA))return null;const $A=new Array(LA);for(;LA-- >0;)$A[LA]=eA[LA];return $A},forEachEntry:(eA,LA)=>{const $A=(eA&&eA[TA]).call(eA);let re;for(;(re=$A.next())&&!re.done;){const Te=re.value;LA.call(eA,Te[0],Te[1])}},matchAll:(eA,LA)=>{let $A;const re=[];for(;($A=eA.exec(LA))!==null;)re.push($A);return re},isHTMLForm:Kn,hasOwnProperty:_o,hasOwnProp:_o,reduceDescriptors:xA,freezeMethods:eA=>{xA(eA,(LA,$A)=>{if(Ye(eA)&&["arguments","caller","callee"].indexOf($A)!==-1)return!1;const re=eA[$A];Ye(re)&&(LA.enumerable=!1,"writable"in LA?LA.writable=!1:LA.set||(LA.set=()=>{throw Error("Can not rewrite read-only method '"+$A+"'")}))})},toObjectSet:(eA,LA)=>{const $A={},re=Te=>{Te.forEach(Ke=>{$A[Ke]=!0})};return HA(eA)?re(eA):re(String(eA).split(LA)),$A},toCamelCase:eA=>eA.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(LA,$A,re){return $A.toUpperCase()+re}),noop:()=>{},toFiniteNumber:(eA,LA)=>eA!=null&&Number.isFinite(eA=+eA)?eA:LA,findKey:sn,global:En,isContextDefined:bn,isSpecCompliantForm:function(eA){return!!(eA&&Ye(eA.append)&&eA[pA]==="FormData"&&eA[TA])},toJSONObject:eA=>{const LA=new Array(10),$A=(re,Te)=>{if(ct(re)){if(LA.indexOf(re)>=0)return;if(He(re))return re;if(!("toJSON"in re)){LA[Te]=re;const Ke=HA(re)?[]:{};return un(re,(Ue,ee)=>{const Ie=$A(Ue,Te+1);!pe(Ie)&&(Ke[ee]=Ie)}),LA[Te]=void 0,Ke}}return re};return $A(eA,0)},isAsyncFn:vA,isThenable:eA=>eA&&(ct(eA)||Ye(eA))&&Ye(eA.then)&&Ye(eA.catch),setImmediate:ie,asap:H,isIterable:eA=>eA!=null&&Ye(eA[TA])};function DA(eA,LA,$A,re,Te){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=eA,this.name="AxiosError",LA&&(this.code=LA),$A&&(this.config=$A),re&&(this.request=re),Te&&(this.response=Te,this.status=Te.status?Te.status:null)}k.inherits(DA,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:k.toJSONObject(this.config),code:this.code,status:this.status}}});const YA=DA.prototype,ue={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(eA=>{ue[eA]={value:eA}}),Object.defineProperties(DA,ue),Object.defineProperty(YA,"isAxiosError",{value:!0}),DA.from=(eA,LA,$A,re,Te,Ke)=>{const Ue=Object.create(YA);k.toFlatObject(eA,Ue,function(Fe){return Fe!==Error.prototype},Fe=>Fe!=="isAxiosError");const ee=eA&&eA.message?eA.message:"Error",Ie=LA==null&&eA?eA.code:LA;return DA.call(Ue,ee,Ie,$A,re,Te),eA&&Ue.cause==null&&Object.defineProperty(Ue,"cause",{value:eA,configurable:!0}),Ue.name=eA&&eA.name||"Error",Ke&&Object.assign(Ue,Ke),Ue};const De=DA;function si(eA){return k.isPlainObject(eA)||k.isArray(eA)}function Mi(eA){return k.endsWith(eA,"[]")?eA.slice(0,-2):eA}function Si(eA,LA,$A){return eA?eA.concat(LA).map(function(re,Te){return re=Mi(re),!$A&&Te?"["+re+"]":re}).join($A?".":""):LA}const nn=k.toFlatObject(k,{},null,function(eA){return/^is[A-Z]/.test(eA)}),zi=function(eA,LA,$A){if(!k.isObject(eA))throw new TypeError("target must be an object");LA=LA||new FormData;const re=($A=k.toFlatObject($A,{metaTokens:!0,dots:!1,indexes:!1},!1,function(Vt,Ft){return!k.isUndefined(Ft[Vt])})).metaTokens,Te=$A.visitor||Fe,Ke=$A.dots,Ue=$A.indexes,ee=($A.Blob||typeof Blob<"u"&&Blob)&&k.isSpecCompliantForm(LA);if(!k.isFunction(Te))throw new TypeError("visitor must be a function");function Ie(Vt){if(Vt===null)return"";if(k.isDate(Vt))return Vt.toISOString();if(k.isBoolean(Vt))return Vt.toString();if(!ee&&k.isBlob(Vt))throw new De("Blob is not supported. Use a Buffer instead.");return k.isArrayBuffer(Vt)||k.isTypedArray(Vt)?ee&&typeof Blob=="function"?new Blob([Vt]):Buffer.from(Vt):Vt}function Fe(Vt,Ft,Qi){let zt=Vt;if(Vt&&!Qi&&typeof Vt=="object"){if(k.endsWith(Ft,"{}"))Ft=re?Ft:Ft.slice(0,-2),Vt=JSON.stringify(Vt);else if(k.isArray(Vt)&&function(vn){return k.isArray(vn)&&!vn.some(si)}(Vt)||(k.isFileList(Vt)||k.endsWith(Ft,"[]"))&&(zt=k.toArray(Vt)))return Ft=Mi(Ft),zt.forEach(function(vn,Fo){!k.isUndefined(vn)&&vn!==null&&LA.append(Ue===!0?Si([Ft],Fo,Ke):Ue===null?Ft:Ft+"[]",Ie(vn))}),!1}return!!si(Vt)||(LA.append(Si(Qi,Ft,Ke),Ie(Vt)),!1)}const xe=[],Lt=Object.assign(nn,{defaultVisitor:Fe,convertValue:Ie,isVisitable:si});if(!k.isObject(eA))throw new TypeError("data must be an object");return function Vt(Ft,Qi){if(!k.isUndefined(Ft)){if(xe.indexOf(Ft)!==-1)throw Error("Circular reference detected in "+Qi.join("."));xe.push(Ft),k.forEach(Ft,function(zt,vn){(!(k.isUndefined(zt)||zt===null)&&Te.call(LA,zt,k.isString(vn)?vn.trim():vn,Qi,Lt))===!0&&Vt(zt,Qi?Qi.concat(vn):[vn])}),xe.pop()}}(eA),LA};function Zr(eA){const LA={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(eA).replace(/[!'()~]|%20|%00/g,function($A){return LA[$A]})}function kn(eA,LA){this._pairs=[],eA&&zi(eA,this,LA)}const hr=kn.prototype;hr.append=function(eA,LA){this._pairs.push([eA,LA])},hr.toString=function(eA){const LA=eA?function($A){return eA.call(this,$A,Zr)}:Zr;return this._pairs.map(function($A){return LA($A[0])+"="+LA($A[1])},"").join("&")};const Ss=kn;function is(eA){return encodeURIComponent(eA).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function cg(eA,LA,$A){if(!LA)return eA;const re=$A&&$A.encode||is;k.isFunction($A)&&($A={serialize:$A});const Te=$A&&$A.serialize;let Ke;if(Ke=Te?Te(LA,$A):k.isURLSearchParams(LA)?LA.toString():new Ss(LA,$A).toString(re),Ke){const Ue=eA.indexOf("#");Ue!==-1&&(eA=eA.slice(0,Ue)),eA+=(eA.indexOf("?")===-1?"?":"&")+Ke}return eA}const ns=class{constructor(){this.handlers=[]}use(eA,LA,$A){return this.handlers.push({fulfilled:eA,rejected:LA,synchronous:!!$A&&$A.synchronous,runWhen:$A?$A.runWhen:null}),this.handlers.length-1}eject(eA){this.handlers[eA]&&(this.handlers[eA]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(eA){k.forEach(this.handlers,function(LA){LA!==null&&eA(LA)})}},Tg={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},ps={isBrowser:!0,classes:{URLSearchParams:typeof URLSearchParams<"u"?URLSearchParams:Ss,FormData:typeof FormData<"u"?FormData:null,Blob:typeof Blob<"u"?Blob:null},protocols:["http","https","file","blob","url","data"]},Wg=typeof window<"u"&&typeof document<"u",os=typeof navigator=="object"&&navigator||void 0,Da=Wg&&(!os||["ReactNative","NativeScript","NS"].indexOf(os.product)<0),Kg=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",lr=Wg&&window.location.href||"http://localhost",Nr={...D,...ps},ya=function(eA){function LA($A,re,Te,Ke){let Ue=$A[Ke++];if(Ue==="__proto__")return!0;const ee=Number.isFinite(+Ue),Ie=Ke>=$A.length;return Ue=!Ue&&k.isArray(Te)?Te.length:Ue,Ie?(k.hasOwnProp(Te,Ue)?Te[Ue]=[Te[Ue],re]:Te[Ue]=re,!ee):(Te[Ue]&&k.isObject(Te[Ue])||(Te[Ue]=[]),LA($A,re,Te[Ue],Ke)&&k.isArray(Te[Ue])&&(Te[Ue]=function(Fe){const xe={},Lt=Object.keys(Fe);let Vt;const Ft=Lt.length;let Qi;for(Vt=0;Vt<Ft;Vt++)Qi=Lt[Vt],xe[Qi]=Fe[Qi];return xe}(Te[Ue])),!ee)}if(k.isFormData(eA)&&k.isFunction(eA.entries)){const $A={};return k.forEachEntry(eA,(re,Te)=>{LA(function(Ke){return k.matchAll(/\w+|\[(\w*)]/g,Ke).map(Ue=>Ue[0]==="[]"?"":Ue[1]||Ue[0])}(re),Te,$A,0)}),$A}return null},oa={transitional:Tg,adapter:["xhr","http","fetch"],transformRequest:[function(eA,LA){const $A=LA.getContentType()||"",re=$A.indexOf("application/json")>-1,Te=k.isObject(eA);if(Te&&k.isHTMLForm(eA)&&(eA=new FormData(eA)),k.isFormData(eA))return re?JSON.stringify(ya(eA)):eA;if(k.isArrayBuffer(eA)||k.isBuffer(eA)||k.isStream(eA)||k.isFile(eA)||k.isBlob(eA)||k.isReadableStream(eA))return eA;if(k.isArrayBufferView(eA))return eA.buffer;if(k.isURLSearchParams(eA))return LA.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),eA.toString();let Ke;if(Te){if($A.indexOf("application/x-www-form-urlencoded")>-1)return function(Ue,ee){return zi(Ue,new Nr.classes.URLSearchParams,{visitor:function(Ie,Fe,xe,Lt){return Nr.isNode&&k.isBuffer(Ie)?(this.append(Fe,Ie.toString("base64")),!1):Lt.defaultVisitor.apply(this,arguments)},...ee})}(eA,this.formSerializer).toString();if((Ke=k.isFileList(eA))||$A.indexOf("multipart/form-data")>-1){const Ue=this.env&&this.env.FormData;return zi(Ke?{"files[]":eA}:eA,Ue&&new Ue,this.formSerializer)}}return Te||re?(LA.setContentType("application/json",!1),function(Ue){if(k.isString(Ue))try{return(0,JSON.parse)(Ue),k.trim(Ue)}catch(ee){if(ee.name!=="SyntaxError")throw ee}return(0,JSON.stringify)(Ue)}(eA)):eA}],transformResponse:[function(eA){const LA=this.transitional||oa.transitional,$A=LA&&LA.forcedJSONParsing,re=this.responseType==="json";if(k.isResponse(eA)||k.isReadableStream(eA))return eA;if(eA&&k.isString(eA)&&($A&&!this.responseType||re)){const Te=!(LA&&LA.silentJSONParsing)&&re;try{return JSON.parse(eA,this.parseReviver)}catch(Ke){if(Te)throw Ke.name==="SyntaxError"?De.from(Ke,De.ERR_BAD_RESPONSE,this,null,this.response):Ke}}return eA}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:Nr.classes.FormData,Blob:Nr.classes.Blob},validateStatus:function(eA){return eA>=200&&eA<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};k.forEach(["delete","get","head","post","put","patch"],eA=>{oa.headers[eA]={}});const wa=oa,Ka=k.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),XA=Symbol("internals");function me(eA){return eA&&String(eA).trim().toLowerCase()}function We(eA){return eA===!1||eA==null?eA:k.isArray(eA)?eA.map(We):String(eA)}function ut(eA,LA,$A,re,Te){return k.isFunction(re)?re.call(this,LA,$A):(Te&&(LA=$A),k.isString(LA)?k.isString(re)?LA.indexOf(re)!==-1:k.isRegExp(re)?re.test(LA):void 0:void 0)}class gt{constructor(LA){LA&&this.set(LA)}set(LA,$A,re){const Te=this;function Ke(ee,Ie,Fe){const xe=me(Ie);if(!xe)throw new Error("header name must be a non-empty string");const Lt=k.findKey(Te,xe);(!Lt||Te[Lt]===void 0||Fe===!0||Fe===void 0&&Te[Lt]!==!1)&&(Te[Lt||Ie]=We(ee))}const Ue=(ee,Ie)=>k.forEach(ee,(Fe,xe)=>Ke(Fe,xe,Ie));if(k.isPlainObject(LA)||LA instanceof this.constructor)Ue(LA,$A);else if(k.isString(LA)&&(LA=LA.trim())&&!/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(LA.trim()))Ue((ee=>{const Ie={};let Fe,xe,Lt;return ee&&ee.split(`
`).forEach(function(Vt){Lt=Vt.indexOf(":"),Fe=Vt.substring(0,Lt).trim().toLowerCase(),xe=Vt.substring(Lt+1).trim(),!Fe||Ie[Fe]&&Ka[Fe]||(Fe==="set-cookie"?Ie[Fe]?Ie[Fe].push(xe):Ie[Fe]=[xe]:Ie[Fe]=Ie[Fe]?Ie[Fe]+", "+xe:xe)}),Ie})(LA),$A);else if(k.isObject(LA)&&k.isIterable(LA)){let ee,Ie,Fe={};for(const xe of LA){if(!k.isArray(xe))throw TypeError("Object iterator must return a key-value pair");Fe[Ie=xe[0]]=(ee=Fe[Ie])?k.isArray(ee)?[...ee,xe[1]]:[ee,xe[1]]:xe[1]}Ue(Fe,$A)}else LA!=null&&Ke($A,LA,re);return this}get(LA,$A){if(LA=me(LA)){const re=k.findKey(this,LA);if(re){const Te=this[re];if(!$A)return Te;if($A===!0)return function(Ke){const Ue=Object.create(null),ee=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let Ie;for(;Ie=ee.exec(Ke);)Ue[Ie[1]]=Ie[2];return Ue}(Te);if(k.isFunction($A))return $A.call(this,Te,re);if(k.isRegExp($A))return $A.exec(Te);throw new TypeError("parser must be boolean|regexp|function")}}}has(LA,$A){if(LA=me(LA)){const re=k.findKey(this,LA);return!(!re||this[re]===void 0||$A&&!ut(0,this[re],re,$A))}return!1}delete(LA,$A){const re=this;let Te=!1;function Ke(Ue){if(Ue=me(Ue)){const ee=k.findKey(re,Ue);!ee||$A&&!ut(0,re[ee],ee,$A)||(delete re[ee],Te=!0)}}return k.isArray(LA)?LA.forEach(Ke):Ke(LA),Te}clear(LA){const $A=Object.keys(this);let re=$A.length,Te=!1;for(;re--;){const Ke=$A[re];LA&&!ut(0,this[Ke],Ke,LA,!0)||(delete this[Ke],Te=!0)}return Te}normalize(LA){const $A=this,re={};return k.forEach(this,(Te,Ke)=>{const Ue=k.findKey(re,Ke);if(Ue)return $A[Ue]=We(Te),void delete $A[Ke];const ee=LA?function(Ie){return Ie.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(Fe,xe,Lt)=>xe.toUpperCase()+Lt)}(Ke):String(Ke).trim();ee!==Ke&&delete $A[Ke],$A[ee]=We(Te),re[ee]=!0}),this}concat(...LA){return this.constructor.concat(this,...LA)}toJSON(LA){const $A=Object.create(null);return k.forEach(this,(re,Te)=>{re!=null&&re!==!1&&($A[Te]=LA&&k.isArray(re)?re.join(", "):re)}),$A}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([LA,$A])=>LA+": "+$A).join(`
`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(LA){return LA instanceof this?LA:new this(LA)}static concat(LA,...$A){const re=new this(LA);return $A.forEach(Te=>re.set(Te)),re}static accessor(LA){const $A=(this[XA]=this[XA]={accessors:{}}).accessors,re=this.prototype;function Te(Ke){const Ue=me(Ke);$A[Ue]||(function(ee,Ie){const Fe=k.toCamelCase(" "+Ie);["get","set","has"].forEach(xe=>{Object.defineProperty(ee,xe+Fe,{value:function(Lt,Vt,Ft){return this[xe].call(this,Ie,Lt,Vt,Ft)},configurable:!0})})}(re,Ke),$A[Ue]=!0)}return k.isArray(LA)?LA.forEach(Te):Te(LA),this}}gt.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),k.reduceDescriptors(gt.prototype,({value:eA},LA)=>{let $A=LA[0].toUpperCase()+LA.slice(1);return{get:()=>eA,set(re){this[$A]=re}}}),k.freezeMethods(gt);const Gt=gt;function ai(eA,LA){const $A=this||wa,re=LA||$A,Te=Gt.from(re.headers);let Ke=re.data;return k.forEach(eA,function(Ue){Ke=Ue.call($A,Ke,Te.normalize(),LA?LA.status:void 0)}),Te.normalize(),Ke}function Pi(eA){return!(!eA||!eA.__CANCEL__)}function xi(eA,LA,$A){De.call(this,eA??"canceled",De.ERR_CANCELED,LA,$A),this.name="CanceledError"}k.inherits(xi,De,{__CANCEL__:!0});const Ut=xi;function Qn(eA,LA,$A){const re=$A.config.validateStatus;$A.status&&re&&!re($A.status)?LA(new De("Request failed with status code "+$A.status,[De.ERR_BAD_REQUEST,De.ERR_BAD_RESPONSE][Math.floor($A.status/100)-4],$A.config,$A.request,$A)):eA($A)}const mn=(eA,LA,$A=3)=>{let re=0;const Te=function(Ke,Ue){Ke=Ke||10;const ee=new Array(Ke),Ie=new Array(Ke);let Fe,xe=0,Lt=0;return Ue=Ue!==void 0?Ue:1e3,function(Vt){const Ft=Date.now(),Qi=Ie[Lt];Fe||(Fe=Ft),ee[xe]=Vt,Ie[xe]=Ft;let zt=Lt,vn=0;for(;zt!==xe;)vn+=ee[zt++],zt%=Ke;if(xe=(xe+1)%Ke,xe===Lt&&(Lt=(Lt+1)%Ke),Ft-Fe<Ue)return;const Fo=Qi&&Ft-Qi;return Fo?Math.round(1e3*vn/Fo):void 0}}(50,250);return function(Ke,Ue){let ee,Ie,Fe=0,xe=1e3/Ue;const Lt=(Vt,Ft=Date.now())=>{Fe=Ft,ee=null,Ie&&(clearTimeout(Ie),Ie=null),Ke(...Vt)};return[(...Vt)=>{const Ft=Date.now(),Qi=Ft-Fe;Qi>=xe?Lt(Vt,Ft):(ee=Vt,Ie||(Ie=setTimeout(()=>{Ie=null,Lt(ee)},xe-Qi)))},()=>ee&&Lt(ee)]}(Ke=>{const Ue=Ke.loaded,ee=Ke.lengthComputable?Ke.total:void 0,Ie=Ue-re,Fe=Te(Ie);re=Ue,eA({loaded:Ue,total:ee,progress:ee?Ue/ee:void 0,bytes:Ie,rate:Fe||void 0,estimated:Fe&&ee&&Ue<=ee?(ee-Ue)/Fe:void 0,event:Ke,lengthComputable:ee!=null,[LA?"download":"upload"]:!0})},$A)},Pn=(eA,LA)=>{const $A=eA!=null;return[re=>LA[0]({lengthComputable:$A,total:eA,loaded:re}),LA[1]]},pr=eA=>(...LA)=>k.asap(()=>eA(...LA)),Ro=Nr.hasStandardBrowserEnv?((eA,LA)=>$A=>($A=new URL($A,Nr.origin),eA.protocol===$A.protocol&&eA.host===$A.host&&(LA||eA.port===$A.port)))(new URL(Nr.origin),Nr.navigator&&/(msie|trident)/i.test(Nr.navigator.userAgent)):()=>!0,ao=Nr.hasStandardBrowserEnv?{write(eA,LA,$A,re,Te,Ke,Ue){if(typeof document>"u")return;const ee=[`${eA}=${encodeURIComponent(LA)}`];k.isNumber($A)&&ee.push(`expires=${new Date($A).toUTCString()}`),k.isString(re)&&ee.push(`path=${re}`),k.isString(Te)&&ee.push(`domain=${Te}`),Ke===!0&&ee.push("secure"),k.isString(Ue)&&ee.push(`SameSite=${Ue}`),document.cookie=ee.join("; ")},read(eA){if(typeof document>"u")return null;const LA=document.cookie.match(new RegExp("(?:^|; )"+eA+"=([^;]*)"));return LA?decodeURIComponent(LA[1]):null},remove(eA){this.write(eA,"",Date.now()-864e5,"/")}}:{write(){},read:()=>null,remove(){}};function Uo(eA,LA,$A){let re=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(LA);return eA&&(re||$A==0)?function(Te,Ke){return Ke?Te.replace(/\/?\/$/,"")+"/"+Ke.replace(/^\/+/,""):Te}(eA,LA):LA}const Yr=eA=>eA instanceof Gt?{...eA}:eA;function $r(eA,LA){LA=LA||{};const $A={};function re(Fe,xe,Lt,Vt){return k.isPlainObject(Fe)&&k.isPlainObject(xe)?k.merge.call({caseless:Vt},Fe,xe):k.isPlainObject(xe)?k.merge({},xe):k.isArray(xe)?xe.slice():xe}function Te(Fe,xe,Lt,Vt){return k.isUndefined(xe)?k.isUndefined(Fe)?void 0:re(void 0,Fe,0,Vt):re(Fe,xe,0,Vt)}function Ke(Fe,xe){if(!k.isUndefined(xe))return re(void 0,xe)}function Ue(Fe,xe){return k.isUndefined(xe)?k.isUndefined(Fe)?void 0:re(void 0,Fe):re(void 0,xe)}function ee(Fe,xe,Lt){return Lt in LA?re(Fe,xe):Lt in eA?re(void 0,Fe):void 0}const Ie={url:Ke,method:Ke,data:Ke,baseURL:Ue,transformRequest:Ue,transformResponse:Ue,paramsSerializer:Ue,timeout:Ue,timeoutMessage:Ue,withCredentials:Ue,withXSRFToken:Ue,adapter:Ue,responseType:Ue,xsrfCookieName:Ue,xsrfHeaderName:Ue,onUploadProgress:Ue,onDownloadProgress:Ue,decompress:Ue,maxContentLength:Ue,maxBodyLength:Ue,beforeRedirect:Ue,transport:Ue,httpAgent:Ue,httpsAgent:Ue,cancelToken:Ue,socketPath:Ue,responseEncoding:Ue,validateStatus:ee,headers:(Fe,xe,Lt)=>Te(Yr(Fe),Yr(xe),0,!0)};return k.forEach(Object.keys({...eA,...LA}),function(Fe){const xe=Ie[Fe]||Te,Lt=xe(eA[Fe],LA[Fe],Fe);k.isUndefined(Lt)&&xe!==ee||($A[Fe]=Lt)}),$A}const On=eA=>{const LA=$r({},eA);let{data:$A,withXSRFToken:re,xsrfHeaderName:Te,xsrfCookieName:Ke,headers:Ue,auth:ee}=LA;if(LA.headers=Ue=Gt.from(Ue),LA.url=cg(Uo(LA.baseURL,LA.url,LA.allowAbsoluteUrls),eA.params,eA.paramsSerializer),ee&&Ue.set("Authorization","Basic "+btoa((ee.username||"")+":"+(ee.password?unescape(encodeURIComponent(ee.password)):""))),k.isFormData($A)){if(Nr.hasStandardBrowserEnv||Nr.hasStandardBrowserWebWorkerEnv)Ue.setContentType(void 0);else if(k.isFunction($A.getHeaders)){const Ie=$A.getHeaders(),Fe=["content-type","content-length"];Object.entries(Ie).forEach(([xe,Lt])=>{Fe.includes(xe.toLowerCase())&&Ue.set(xe,Lt)})}}if(Nr.hasStandardBrowserEnv&&(re&&k.isFunction(re)&&(re=re(LA)),re||re!==!1&&Ro(LA.url))){const Ie=Te&&Ke&&ao.read(Ke);Ie&&Ue.set(Te,Ie)}return LA},Go=typeof XMLHttpRequest<"u"&&function(eA){return new Promise(function(LA,$A){const re=On(eA);let Te=re.data;const Ke=Gt.from(re.headers).normalize();let Ue,ee,Ie,Fe,xe,{responseType:Lt,onUploadProgress:Vt,onDownloadProgress:Ft}=re;function Qi(){Fe&&Fe(),xe&&xe(),re.cancelToken&&re.cancelToken.unsubscribe(Ue),re.signal&&re.signal.removeEventListener("abort",Ue)}let zt=new XMLHttpRequest;function vn(){if(!zt)return;const Io=Gt.from("getAllResponseHeaders"in zt&&zt.getAllResponseHeaders());Qn(function(Lr){LA(Lr),Qi()},function(Lr){$A(Lr),Qi()},{data:Lt&&Lt!=="text"&&Lt!=="json"?zt.response:zt.responseText,status:zt.status,statusText:zt.statusText,headers:Io,config:eA,request:zt}),zt=null}zt.open(re.method.toUpperCase(),re.url,!0),zt.timeout=re.timeout,"onloadend"in zt?zt.onloadend=vn:zt.onreadystatechange=function(){zt&&zt.readyState===4&&(zt.status!==0||zt.responseURL&&zt.responseURL.indexOf("file:")===0)&&setTimeout(vn)},zt.onabort=function(){zt&&($A(new De("Request aborted",De.ECONNABORTED,eA,zt)),zt=null)},zt.onerror=function(Io){const Lr=Io&&Io.message?Io.message:"Network Error",rs=new De(Lr,De.ERR_NETWORK,eA,zt);rs.event=Io||null,$A(rs),zt=null},zt.ontimeout=function(){let Io=re.timeout?"timeout of "+re.timeout+"ms exceeded":"timeout exceeded";const Lr=re.transitional||Tg;re.timeoutErrorMessage&&(Io=re.timeoutErrorMessage),$A(new De(Io,Lr.clarifyTimeoutError?De.ETIMEDOUT:De.ECONNABORTED,eA,zt)),zt=null},Te===void 0&&Ke.setContentType(null),"setRequestHeader"in zt&&k.forEach(Ke.toJSON(),function(Io,Lr){zt.setRequestHeader(Lr,Io)}),k.isUndefined(re.withCredentials)||(zt.withCredentials=!!re.withCredentials),Lt&&Lt!=="json"&&(zt.responseType=re.responseType),Ft&&([Ie,xe]=mn(Ft,!0),zt.addEventListener("progress",Ie)),Vt&&zt.upload&&([ee,Fe]=mn(Vt),zt.upload.addEventListener("progress",ee),zt.upload.addEventListener("loadend",Fe)),(re.cancelToken||re.signal)&&(Ue=Io=>{zt&&($A(!Io||Io.type?new Ut(null,eA,zt):Io),zt.abort(),zt=null)},re.cancelToken&&re.cancelToken.subscribe(Ue),re.signal&&(re.signal.aborted?Ue():re.signal.addEventListener("abort",Ue)));const Fo=function(Io){const Lr=/^([-+\w]{1,25})(:?\/\/|:)/.exec(Io);return Lr&&Lr[1]||""}(re.url);Fo&&Nr.protocols.indexOf(Fo)===-1?$A(new De("Unsupported protocol "+Fo+":",De.ERR_BAD_REQUEST,eA)):zt.send(Te||null)})},Ys=(eA,LA)=>{const{length:$A}=eA=eA?eA.filter(Boolean):[];if(LA||$A){let re,Te=new AbortController;const Ke=function(Fe){if(!re){re=!0,ee();const xe=Fe instanceof Error?Fe:this.reason;Te.abort(xe instanceof De?xe:new Ut(xe instanceof Error?xe.message:xe))}};let Ue=LA&&setTimeout(()=>{Ue=null,Ke(new De(`timeout ${LA} of ms exceeded`,De.ETIMEDOUT))},LA);const ee=()=>{eA&&(Ue&&clearTimeout(Ue),Ue=null,eA.forEach(Fe=>{Fe.unsubscribe?Fe.unsubscribe(Ke):Fe.removeEventListener("abort",Ke)}),eA=null)};eA.forEach(Fe=>Fe.addEventListener("abort",Ke));const{signal:Ie}=Te;return Ie.unsubscribe=()=>k.asap(ee),Ie}},og=function*(eA,LA){let $A=eA.byteLength;if($A<LA)return void(yield eA);let re,Te=0;for(;Te<$A;)re=Te+LA,yield eA.slice(Te,re),Te=re},Ur=(eA,LA,$A,re)=>{const Te=async function*(Ie,Fe){for await(const xe of async function*(Lt){if(Lt[Symbol.asyncIterator])return void(yield*Lt);const Vt=Lt.getReader();try{for(;;){const{done:Ft,value:Qi}=await Vt.read();if(Ft)break;yield Qi}}finally{await Vt.cancel()}}(Ie))yield*og(xe,Fe)}(eA,LA);let Ke,Ue=0,ee=Ie=>{Ke||(Ke=!0,re&&re(Ie))};return new ReadableStream({async pull(Ie){try{const{done:Fe,value:xe}=await Te.next();if(Fe)return ee(),void Ie.close();let Lt=xe.byteLength;if($A){let Vt=Ue+=Lt;$A(Vt)}Ie.enqueue(new Uint8Array(xe))}catch(Fe){throw ee(Fe),Fe}},cancel:Ie=>(ee(Ie),Te.return())},{highWaterMark:2})},{isFunction:Ng}=k,Ug=(({Request:eA,Response:LA})=>({Request:eA,Response:LA}))(k.global),{ReadableStream:Gg,TextEncoder:Hr}=k.global,Vg=(eA,...LA)=>{try{return!!eA(...LA)}catch{return!1}},Fg=eA=>{eA=k.merge.call({skipUndefined:!0},Ug,eA);const{fetch:LA,Request:$A,Response:re}=eA,Te=LA?Ng(LA):typeof fetch=="function",Ke=Ng($A),Ue=Ng(re);if(!Te)return!1;const ee=Te&&Ng(Gg),Ie=Te&&(typeof Hr=="function"?(Fe=new Hr,Ft=>Fe.encode(Ft)):async Ft=>new Uint8Array(await new $A(Ft).arrayBuffer()));var Fe;const xe=Ke&&ee&&Vg(()=>{let Ft=!1;const Qi=new $A(Nr.origin,{body:new Gg,method:"POST",get duplex(){return Ft=!0,"half"}}).headers.has("Content-Type");return Ft&&!Qi}),Lt=Ue&&ee&&Vg(()=>k.isReadableStream(new re("").body)),Vt={stream:Lt&&(Ft=>Ft.body)};return Te&&["text","arrayBuffer","blob","formData","stream"].forEach(Ft=>{!Vt[Ft]&&(Vt[Ft]=(Qi,zt)=>{let vn=Qi&&Qi[Ft];if(vn)return vn.call(Qi);throw new De(`Response type '${Ft}' is not supported`,De.ERR_NOT_SUPPORT,zt)})}),async Ft=>{let{url:Qi,method:zt,data:vn,signal:Fo,cancelToken:Io,timeout:Lr,onDownloadProgress:rs,onUploadProgress:bg,responseType:Pr,headers:xr,withCredentials:Or="same-origin",fetchOptions:Gs}=On(Ft),dg=LA||fetch;Pr=Pr?(Pr+"").toLowerCase():"text";let vi=Ys([Fo,Io&&Io.toAbortSignal()],Lr),fo=null;const Yg=vi&&vi.unsubscribe&&(()=>{vi.unsubscribe()});let Ja;try{if(bg&&xe&&zt!=="get"&&zt!=="head"&&(Ja=await(async(Fs,js)=>{const ls=k.toFiniteNumber(Fs.getContentLength());return ls??(async br=>br==null?0:k.isBlob(br)?br.size:k.isSpecCompliantForm(br)?(await new $A(Nr.origin,{method:"POST",body:br}).arrayBuffer()).byteLength:k.isArrayBufferView(br)||k.isArrayBuffer(br)?br.byteLength:(k.isURLSearchParams(br)&&(br+=""),k.isString(br)?(await Ie(br)).byteLength:void 0))(js)})(xr,vn))!==0){let Fs,js=new $A(Qi,{method:"POST",body:vn,duplex:"half"});if(k.isFormData(vn)&&(Fs=js.headers.get("content-type"))&&xr.setContentType(Fs),js.body){const[ls,br]=Pn(Ja,mn(pr(bg)));vn=Ur(js.body,65536,ls,br)}}k.isString(Or)||(Or=Or?"include":"omit");const ug=Ke&&"credentials"in $A.prototype,zg={...Gs,signal:vi,method:zt.toUpperCase(),headers:xr.normalize().toJSON(),body:vn,duplex:"half",credentials:ug?Or:void 0};fo=Ke&&new $A(Qi,zg);let fg=await(Ke?dg(fo,Gs):dg(Qi,zg));const Ca=Lt&&(Pr==="stream"||Pr==="response");if(Lt&&(rs||Ca&&Yg)){const Fs={};["status","statusText","headers"].forEach(Xs=>{Fs[Xs]=fg[Xs]});const js=k.toFiniteNumber(fg.headers.get("content-length")),[ls,br]=rs&&Pn(js,mn(pr(rs),!0))||[];fg=new re(Ur(fg.body,65536,ls,()=>{br&&br(),Yg&&Yg()}),Fs)}Pr=Pr||"text";let Ra=await Vt[k.findKey(Vt,Pr)||"text"](fg,Ft);return!Ca&&Yg&&Yg(),await new Promise((Fs,js)=>{Qn(Fs,js,{data:Ra,headers:Gt.from(fg.headers),status:fg.status,statusText:fg.statusText,config:Ft,request:fo})})}catch(ug){throw Yg&&Yg(),ug&&ug.name==="TypeError"&&/Load failed|fetch/i.test(ug.message)?Object.assign(new De("Network Error",De.ERR_NETWORK,Ft,fo),{cause:ug.cause||ug}):De.from(ug,ug&&ug.code,Ft,fo)}}},ra=new Map,sa=eA=>{let LA=eA&&eA.env||{};const{fetch:$A,Request:re,Response:Te}=LA,Ke=[re,Te,$A];let Ue,ee,Ie=Ke.length,Fe=ra;for(;Ie--;)Ue=Ke[Ie],ee=Fe.get(Ue),ee===void 0&&Fe.set(Ue,ee=Ie?new Map:Fg(LA)),Fe=ee;return ee},ga=(sa(),{http:null,xhr:Go,fetch:{get:sa}});k.forEach(ga,(eA,LA)=>{if(eA){try{Object.defineProperty(eA,"name",{value:LA})}catch{}Object.defineProperty(eA,"adapterName",{value:LA})}});const qa=eA=>`- ${eA}`,Zg=eA=>k.isFunction(eA)||eA===null||eA===!1,jg=function(eA,LA){eA=k.isArray(eA)?eA:[eA];const{length:$A}=eA;let re,Te;const Ke={};for(let Ue=0;Ue<$A;Ue++){let ee;if(re=eA[Ue],Te=re,!Zg(re)&&(Te=ga[(ee=String(re)).toLowerCase()],Te===void 0))throw new De(`Unknown adapter '${ee}'`);if(Te&&(k.isFunction(Te)||(Te=Te.get(LA))))break;Ke[ee||"#"+Ue]=Te}if(!Te){const Ue=Object.entries(Ke).map(([Ie,Fe])=>`adapter ${Ie} `+(Fe===!1?"is not supported by the environment":"is not available in the build"));let ee=$A?Ue.length>1?`since :
`+Ue.map(qa).join(`
`):" "+qa(Ue[0]):"as no adapter specified";throw new De("There is no suitable adapter to dispatch the request "+ee,"ERR_NOT_SUPPORT")}return Te};function hg(eA){if(eA.cancelToken&&eA.cancelToken.throwIfRequested(),eA.signal&&eA.signal.aborted)throw new Ut(null,eA)}function Xg(eA){return hg(eA),eA.headers=Gt.from(eA.headers),eA.data=ai.call(eA,eA.transformRequest),["post","put","patch"].indexOf(eA.method)!==-1&&eA.headers.setContentType("application/x-www-form-urlencoded",!1),jg(eA.adapter||wa.adapter,eA)(eA).then(function(LA){return hg(eA),LA.data=ai.call(eA,eA.transformResponse,LA),LA.headers=Gt.from(LA.headers),LA},function(LA){return Pi(LA)||(hg(eA),LA&&LA.response&&(LA.response.data=ai.call(eA,eA.transformResponse,LA.response),LA.response.headers=Gt.from(LA.response.headers))),Promise.reject(LA)})}const aa="1.13.1",lg={};["object","boolean","number","function","string","symbol"].forEach((eA,LA)=>{lg[eA]=function($A){return typeof $A===eA||"a"+(LA<1?"n ":" ")+eA}});const rg={};lg.transitional=function(eA,LA,$A){function re(Te,Ke){return"[Axios v"+aa+"] Transitional option '"+Te+"'"+Ke+($A?". "+$A:"")}return(Te,Ke,Ue)=>{if(eA===!1)throw new De(re(Ke," has been removed"+(LA?" in "+LA:"")),De.ERR_DEPRECATED);return LA&&!rg[Ke]&&(rg[Ke]=!0,console.warn(re(Ke," has been deprecated since v"+LA+" and will be removed in the near future"))),!eA||eA(Te,Ke,Ue)}},lg.spelling=function(eA){return(LA,$A)=>(console.warn(`${$A} is likely a misspelling of ${eA}`),!0)};const Lg={assertOptions:function(eA,LA,$A){if(typeof eA!="object")throw new De("options must be an object",De.ERR_BAD_OPTION_VALUE);const re=Object.keys(eA);let Te=re.length;for(;Te-- >0;){const Ke=re[Te],Ue=LA[Ke];if(Ue){const ee=eA[Ke],Ie=ee===void 0||Ue(ee,Ke,eA);if(Ie!==!0)throw new De("option "+Ke+" must be "+Ie,De.ERR_BAD_OPTION_VALUE);continue}if($A!==!0)throw new De("Unknown option "+Ke,De.ERR_BAD_OPTION)}},validators:lg},Rs=Lg.validators;class Ia{constructor(LA){this.defaults=LA||{},this.interceptors={request:new ns,response:new ns}}async request(LA,$A){try{return await this._request(LA,$A)}catch(re){if(re instanceof Error){let Te={};Error.captureStackTrace?Error.captureStackTrace(Te):Te=new Error;const Ke=Te.stack?Te.stack.replace(/^.+\n/,""):"";try{re.stack?Ke&&!String(re.stack).endsWith(Ke.replace(/^.+\n.+\n/,""))&&(re.stack+=`
`+Ke):re.stack=Ke}catch{}}throw re}}_request(LA,$A){typeof LA=="string"?($A=$A||{}).url=LA:$A=LA||{},$A=$r(this.defaults,$A);const{transitional:re,paramsSerializer:Te,headers:Ke}=$A;re!==void 0&&Lg.assertOptions(re,{silentJSONParsing:Rs.transitional(Rs.boolean),forcedJSONParsing:Rs.transitional(Rs.boolean),clarifyTimeoutError:Rs.transitional(Rs.boolean)},!1),Te!=null&&(k.isFunction(Te)?$A.paramsSerializer={serialize:Te}:Lg.assertOptions(Te,{encode:Rs.function,serialize:Rs.function},!0)),$A.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?$A.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:$A.allowAbsoluteUrls=!0),Lg.assertOptions($A,{baseUrl:Rs.spelling("baseURL"),withXsrfToken:Rs.spelling("withXSRFToken")},!0),$A.method=($A.method||this.defaults.method||"get").toLowerCase();let Ue=Ke&&k.merge(Ke.common,Ke[$A.method]);Ke&&k.forEach(["delete","get","head","post","put","patch","common"],Qi=>{delete Ke[Qi]}),$A.headers=Gt.concat(Ue,Ke);const ee=[];let Ie=!0;this.interceptors.request.forEach(function(Qi){typeof Qi.runWhen=="function"&&Qi.runWhen($A)===!1||(Ie=Ie&&Qi.synchronous,ee.unshift(Qi.fulfilled,Qi.rejected))});const Fe=[];let xe;this.interceptors.response.forEach(function(Qi){Fe.push(Qi.fulfilled,Qi.rejected)});let Lt,Vt=0;if(!Ie){const Qi=[Xg.bind(this),void 0];for(Qi.unshift(...ee),Qi.push(...Fe),Lt=Qi.length,xe=Promise.resolve($A);Vt<Lt;)xe=xe.then(Qi[Vt++],Qi[Vt++]);return xe}Lt=ee.length;let Ft=$A;for(;Vt<Lt;){const Qi=ee[Vt++],zt=ee[Vt++];try{Ft=Qi(Ft)}catch(vn){zt.call(this,vn);break}}try{xe=Xg.call(this,Ft)}catch(Qi){return Promise.reject(Qi)}for(Vt=0,Lt=Fe.length;Vt<Lt;)xe=xe.then(Fe[Vt++],Fe[Vt++]);return xe}getUri(LA){return cg(Uo((LA=$r(this.defaults,LA)).baseURL,LA.url,LA.allowAbsoluteUrls),LA.params,LA.paramsSerializer)}}k.forEach(["delete","get","head","options"],function(eA){Ia.prototype[eA]=function(LA,$A){return this.request($r($A||{},{method:eA,url:LA,data:($A||{}).data}))}}),k.forEach(["post","put","patch"],function(eA){function LA($A){return function(re,Te,Ke){return this.request($r(Ke||{},{method:eA,headers:$A?{"Content-Type":"multipart/form-data"}:{},url:re,data:Te}))}}Ia.prototype[eA]=LA(),Ia.prototype[eA+"Form"]=LA(!0)});const sI=Ia;class pI{constructor(LA){if(typeof LA!="function")throw new TypeError("executor must be a function.");let $A;this.promise=new Promise(function(Te){$A=Te});const re=this;this.promise.then(Te=>{if(!re._listeners)return;let Ke=re._listeners.length;for(;Ke-- >0;)re._listeners[Ke](Te);re._listeners=null}),this.promise.then=Te=>{let Ke;const Ue=new Promise(ee=>{re.subscribe(ee),Ke=ee}).then(Te);return Ue.cancel=function(){re.unsubscribe(Ke)},Ue},LA(function(Te,Ke,Ue){re.reason||(re.reason=new Ut(Te,Ke,Ue),$A(re.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(LA){this.reason?LA(this.reason):this._listeners?this._listeners.push(LA):this._listeners=[LA]}unsubscribe(LA){if(!this._listeners)return;const $A=this._listeners.indexOf(LA);$A!==-1&&this._listeners.splice($A,1)}toAbortSignal(){const LA=new AbortController,$A=re=>{LA.abort(re)};return this.subscribe($A),LA.signal.unsubscribe=()=>this.unsubscribe($A),LA.signal}static source(){let LA;return{token:new pI(function($A){LA=$A}),cancel:LA}}}const oC=pI,Ma={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(Ma).forEach(([eA,LA])=>{Ma[LA]=eA});const gI=Ma,Cr=function eA(LA){const $A=new sI(LA),re=QA(sI.prototype.request,$A);return k.extend(re,sI.prototype,$A,{allOwnKeys:!0}),k.extend(re,$A,null,{allOwnKeys:!0}),re.create=function(Te){return eA($r(LA,Te))},re}(wa);Cr.Axios=sI,Cr.CanceledError=Ut,Cr.CancelToken=oC,Cr.isCancel=Pi,Cr.VERSION=aa,Cr.toFormData=zi,Cr.AxiosError=De,Cr.Cancel=Cr.CanceledError,Cr.all=function(eA){return Promise.all(eA)},Cr.spread=function(eA){return function(LA){return eA.apply(null,LA)}},Cr.isAxiosError=function(eA){return k.isObject(eA)&&eA.isAxiosError===!0},Cr.mergeConfig=$r,Cr.AxiosHeaders=Gt,Cr.formToJSON=eA=>ya(k.isHTMLForm(eA)?new FormData(eA):eA),Cr.getAdapter=jg,Cr.HttpStatusCode=gI,Cr.default=Cr;const Sa=Cr;var In=function(){function eA(){m(this,eA)}return N(eA,null,[{key:"fetchRemoteData",value:(LA=p(U().mark(function $A(re){var Te;return U().wrap(function(Ke){for(;;)switch(Ke.prev=Ke.next){case 0:return Ke.prev=0,Ke.next=1,Sa.get(re,{responseType:"arraybuffer"});case 1:return Te=Ke.sent,Ke.abrupt("return",new Uint8Array(Te.data));case 2:throw Ke.prev=2,Ke.catch(0);case 3:case"end":return Ke.stop()}},$A,null,[[0,2]])})),function($A){return LA.apply(this,arguments)})},{key:"string2Uint8Data",value:function($A){for(var re=new Uint8Array($A.length),Te=0;Te<re.length;Te++)re[Te]=255&$A.charCodeAt(Te);return re}},{key:"uint8Data2String",value:function($A){return String.fromCharCode.apply(String,$A)}},{key:"parseMultiFile",value:function($A){var re=eA.uint8Data2String($A).split(`
`),Te=[],Ke=0;return re.forEach(function(Ue){if((Ue=Ue.trim())&&!Ue.startsWith("#"))switch(Ke){case 0:return void(Ke=1);case 1:Ue.match(/^\d+$/)||Te.push(Ue);case 2:case 3:case 4:return void Ke++;case 5:return void(Ke=1)}}),Te}}]);var LA}(),ii=function(){function eA(){m(this,eA),this.instance,this.markerCount=0,this.multiMarkerCount=0,this.cameraCount=0,this.version="0.3.2",console.info("ARToolkit ",this.version)}return N(eA,[{key:"init",value:(Ke=p(U().mark(function Ue(){var ee;return U().wrap(function(Ie){for(;;)switch(Ie.prev=Ie.next){case 0:return Ie.next=1,CA();case 1:return ee=Ie.sent,this.instance=ee.instance,this._decorate(),(typeof window<"u"?window:T.g).artoolkit=this,eA.INSTANCE=this.instance,Ie.abrupt("return",this);case 2:case"end":return Ie.stop()}},Ue,this)})),function(){return Ke.apply(this,arguments)})},{key:"_decorate",value:function(){var Ue=this;for(var ee in["setup","teardown","setupAR2","setLogLevel","getLogLevel","setDebugMode","getDebugMode","getProcessingImage","setMarkerInfoDir","setMarkerInfoVertex","getTransMatSquare","getTransMatSquareCont","getTransMatMultiSquare","getTransMatMultiSquareRobust","getMultiMarkerNum","getMultiMarkerCount","detectMarker","getMarkerNum","detectNFTMarker","getNFTMarker","getNFTData","getMarker","getMultiEachMarker","setProjectionNearPlane","getProjectionNearPlane","setProjectionFarPlane","getProjectionFarPlane","setThresholdMode","getThresholdMode","setThreshold","getThreshold","setPatternDetectionMode","getPatternDetectionMode","setMatrixCodeType","getMatrixCodeType","setLabelingMode","getLabelingMode","setPattRatio","getPattRatio","setImageProcMode","getImageProcMode"].forEach(function(Ie){Ue[Ie]=Ue.instance[Ie]}),this.instance)ee.match(/^AR/)&&(this[ee]=this.instance[ee])}},{key:"loadCamera",value:(Te=p(U().mark(function Ue(ee){var Ie,Fe;return U().wrap(function(xe){for(;;)switch(xe.prev=xe.next){case 0:if(Ie="/camera_param_"+this.cameraCount++,!(ee instanceof Uint8Array)){xe.next=1;break}Fe=ee,xe.next=4;break;case 1:return xe.prev=1,xe.next=2,In.fetchRemoteData(ee);case 2:Fe=xe.sent,xe.next=4;break;case 3:throw xe.prev=3,xe.catch(1);case 4:return this._storeDataFile(Fe,Ie),xe.abrupt("return",this.instance._loadCamera(Ie));case 5:case"end":return xe.stop()}},Ue,this,[[1,3]])})),function(Ue){return Te.apply(this,arguments)})},{key:"addMarker",value:(re=p(U().mark(function Ue(ee,Ie){var Fe,xe;return U().wrap(function(Lt){for(;;)switch(Lt.prev=Lt.next){case 0:if(Fe="/marker_"+this.markerCount++,Ie.indexOf(`
`)===-1){Lt.next=1;break}xe=In.string2Uint8Data(Ie),Lt.next=4;break;case 1:return Lt.prev=1,Lt.next=2,In.fetchRemoteData(Ie);case 2:xe=Lt.sent,Lt.next=4;break;case 3:throw Lt.prev=3,Lt.catch(1);case 4:return this._storeDataFile(xe,Fe),Lt.abrupt("return",this.instance._addMarker(ee,Fe));case 5:case"end":return Lt.stop()}},Ue,this,[[1,3]])})),function(Ue,ee){return re.apply(this,arguments)})},{key:"addMultiMarker",value:($A=p(U().mark(function Ue(ee,Ie,Fe,xe){var Lt;return U().wrap(function(Vt){for(;;)switch(Vt.prev=Vt.next){case 0:Lt="/multi_marker_"+this.multiMarkerCount++,eA.ajax(Ie,Lt,function(Ft){var Qi=In.parseMultiFile(Ft);function zt(){var Fo=eA.INSTANCE._addMultiMarker(ee,Lt),Io=eA.INSTANCE.getMultiMarkerNum(ee,Fo);Fe&&Fe(Fo,Io)}if(!Qi.length)return zt();var vn=Ie.split("/").slice(0,-1).join("/");Qi=Qi.map(function(Fo){return[vn+"/"+Fo,Fo]}),eA.ajaxDependencies(Qi,zt)},function(Ft){xe&&xe(Ft)});case 1:case"end":return Vt.stop()}},Ue,this)})),function(Ue,ee,Ie,Fe){return $A.apply(this,arguments)})},{key:"addNFTMarker",value:(LA=p(U().mark(function Ue(ee,Ie){var Fe,xe,Lt,Vt;return U().wrap(function(Ft){for(;;)switch(Ft.prev=Ft.next){case 0:return Fe="/markerNFT_"+this.markerCount++,xe=["fset","iset","fset3"],Lt=function(){var Qi=p(U().mark(function zt(vn){var Fo,Io,Lr;return U().wrap(function(rs){for(;;)switch(rs.prev=rs.next){case 0:return Fo=Ie+"."+vn,Io=Fe+"."+vn,rs.next=1,In.fetchRemoteData(Fo);case 1:Lr=rs.sent,this._storeDataFile(Lr,Io);case 2:case"end":return rs.stop()}},zt,this)}));return function(zt){return Qi.apply(this,arguments)}}(),Vt=xe.map(Lt,this),Ft.next=1,Promise.all(Vt);case 1:return Ft.abrupt("return",this.instance._addNFTMarker(ee,Fe));case 2:case"end":return Ft.stop()}},Ue,this)})),function(Ue,ee){return LA.apply(this,arguments)})},{key:"_storeDataFile",value:function(Ue,ee){this.instance.FS.writeFile(ee,Ue,{encoding:"binary"})}}],[{key:"UNKNOWN_MARKER",get:function(){return-1}},{key:"PATTERN_MARKER",get:function(){return 0}},{key:"BARCODE_MARKER",get:function(){return 1}},{key:"NFT_MARKER",get:function(){return 2}},{key:"ajax",value:function(Ue,ee,Ie,Fe,xe){var Lt=new XMLHttpRequest;Lt.open("GET",Ue,!0),Lt.responseType="arraybuffer",Lt.onload=function(){if(this.status==200){var Vt=Lt.response,Ft=new Uint8Array(Vt);(function(Qi,zt,vn,Fo){eA.INSTANCE.FS.writeFile(Qi,zt,{encoding:"binary"}),vn(zt,Fo)})(ee,Ft,Ie,xe)}else Fe(this.status)},Lt.send()}},{key:"ajaxDependencies",value:function(Ue,ee){var Ie=Ue.pop();Ie?eA.ajax(Ie[0],Ie[1],function(){eA.ajaxDependencies(Ue,ee)}):ee()}}]);var LA,$A,re,Te,Ke}();function jr(eA,LA){var $A=Object.keys(eA);if(Object.getOwnPropertySymbols){var re=Object.getOwnPropertySymbols(eA);LA&&(re=re.filter(function(Te){return Object.getOwnPropertyDescriptor(eA,Te).enumerable})),$A.push.apply($A,re)}return $A}function Jg(eA){for(var LA=1;LA<arguments.length;LA++){var $A=arguments[LA]!=null?arguments[LA]:{};LA%2?jr(Object($A),!0).forEach(function(re){Y(eA,re,$A[re])}):Object.getOwnPropertyDescriptors?Object.defineProperties(eA,Object.getOwnPropertyDescriptors($A)):jr(Object($A)).forEach(function(re){Object.defineProperty(eA,re,Object.getOwnPropertyDescriptor($A,re))})}return eA}Y(ii,"INSTANCE",void 0);var xg=function(){function eA(ee,Ie,Fe,xe){m(this,eA),this.options=Jg(Jg({},{canvas:null,orientation:"landscape"}),xe),this.id=-1,this.width=ee,this.height=Ie,this.image,this.orientation=this.options.orientation,this.cameraParam=Fe,this.cameraId=-1,this.cameraLoaded=!1,this.artoolkit,this.listeners={},this.defaultMarkerWidth=1,this.patternMarkers={},this.barcodeMarkers={},this.nftMarkers={},this.multiMarkers={},this.transform_mat=new Float32Array(16),this.transformGL_RH=new Float64Array(16),this.videoWidth=ee,this.videoHeight=Ie,this.videoSize=this.videoWidth*this.videoHeight,this.framepointer=null,this.framesize=null,this.dataHeap=null,this.videoLuma=null,this.camera_mat=null,this.marker_transform_mat=null,this.videoLumaPointer=null,this.options.canvas?this.canvas=this.options.canvas:typeof document<"u"&&(this.canvas=document.createElement("canvas")),this.canvas?(this.canvas.width=ee,this.canvas.height=Ie,this.ctx=this.canvas.getContext("2d")):console.warn("No canvas available"),this.nftMarkerFound=!1,this.nftMarkerFoundTime=!1,this.nftMarkerCount=0,this._bwpointer=!1}return N(eA,[{key:"dispose",value:function(){for(var ee in this.cameraId=-1,this.cameraParam="",this.cameraLoaded=!1,this.id>-1&&this.artoolkit.teardown(this.id),this.image&&this.image.srcObject,this)this[ee]=null}},{key:"process",value:function(ee){var Ie=this.detectMarker(ee);Ie!=0&&console.error("[ARController]","detectMarker error:",Ie);var Fe,xe,Lt=this.getMarkerNum();for(Fe in this.patternMarkers)(xe=this.patternMarkers[Fe]).inPrevious=xe.inCurrent,xe.inCurrent=!1;for(Fe in this.barcodeMarkers)(xe=this.barcodeMarkers[Fe]).inPrevious=xe.inCurrent,xe.inCurrent=!1;for(Fe in this.nftMarkers)(xe=this.nftMarkers[Fe]).inPrevious=xe.inCurrent,xe.inCurrent=!1;for(var Vt=0;Vt<Lt;Vt++){var Ft=this.getMarker(Vt),Qi=ii.UNKNOWN_MARKER,zt=this.trackPatternMarkerId(-1);Ft.idPatt>-1&&(Ft.id===Ft.idPatt||Ft.idMatrix===-1)?(zt=this.trackPatternMarkerId(Ft.idPatt),Qi=ii.PATTERN_MARKER,Ft.dir!==Ft.dirPatt&&this.setMarkerInfoDir(Vt,Ft.dirPatt)):Ft.idMatrix>-1&&(zt=this.trackBarcodeMarkerId(Ft.idMatrix),Qi=ii.BARCODE_MARKER,Ft.dir!==Ft.dirMatrix&&this.setMarkerInfoDir(Vt,Ft.dirMatrix)),Qi!==ii.UNKNOWN_MARKER&&zt.inPrevious?this.getTransMatSquareCont(Vt,zt.markerWidth,zt.matrix,zt.matrix):this.getTransMatSquare(Vt,zt.markerWidth,zt.matrix),zt.inCurrent=!0,this.transMatToGLMat(zt.matrix,this.transform_mat),this.transformGL_RH=this.arglCameraViewRHf(this.transform_mat),this.dispatchEvent({name:"getMarker",target:this,data:{index:Vt,type:Qi,marker:Ft,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}})}var vn=this.nftMarkerCount;this.detectNFTMarker();for(var Fo=0;Fo<vn;Fo++){var Io=this.getNFTMarker(Fo),Lr=ii.NFT_MARKER;if(Io.found){this.nftMarkerFound=Fo,this.nftMarkerFoundTime=Date.now();var rs=this.trackNFTMarkerId(Fo);rs.matrix.set(Io.pose),rs.inCurrent=!0,this.transMatToGLMat(rs.matrix,this.transform_mat),this.transformGL_RH=this.arglCameraViewRHf(this.transform_mat),this.dispatchEvent({name:"getNFTMarker",target:this,data:{index:Fo,type:Lr,marker:Io,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}})}else self.nftMarkerFound===Fo&&Date.now()-this.nftMarkerFoundTime>200&&(this.nftMarkerFound=!1,this.dispatchEvent({name:"lostNFTMarker",target:this,data:{index:Fo,type:Lr,marker:Io,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}}))}for(var bg=this.getMultiMarkerCount(),Pr=0;Pr<bg;Pr++){var xr=this.getMultiMarkerPatternCount(Pr),Or=!1;this.artoolkit.getTransMatMultiSquareRobust(this.id,Pr),this.transMatToGLMat(this.marker_transform_mat,this.transform_mat),this.transformGL_RH=this.arglCameraViewRHf(this.transform_mat);for(var Gs=0;Gs<xr;Gs++)if((vi=this.getMultiEachMarker(Pr,Gs)).visible>=0){Or=!0,this.dispatchEvent({name:"getMultiMarker",target:this,data:{multiMarkerId:Pr,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}});break}if(Or)for(var dg=0;dg<xr;dg++){var vi=this.getMultiEachMarker(Pr,dg);this.transMatToGLMat(this.marker_transform_mat,this.transform_mat),this.transformGL_RH=this.arglCameraViewRHf(this.transform_mat),this.dispatchEvent({name:"getMultiMarkerSub",target:this,data:{multiMarkerId:Pr,markerIndex:dg,marker:vi,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}})}}this._bwpointer&&this.debugDraw()}},{key:"detectNFTMarker",value:function(){this.artoolkit.detectNFTMarker(this.id)}},{key:"trackPatternMarkerId",value:function(ee,Ie){var Fe=this.patternMarkers[ee];return Fe||(this.patternMarkers[ee]=Fe={inPrevious:!1,inCurrent:!1,matrix:new Float64Array(12),matrixGL_RH:new Float64Array(12),markerWidth:Ie||this.defaultMarkerWidth}),Ie&&(Fe.markerWidth=Ie),Fe}},{key:"trackBarcodeMarkerId",value:function(ee,Ie){var Fe=this.barcodeMarkers[ee];return Fe||(this.barcodeMarkers[ee]=Fe={inPrevious:!1,inCurrent:!1,matrix:new Float64Array(12),matrixGL_RH:new Float64Array(12),markerWidth:Ie||this.defaultMarkerWidth}),Ie&&(Fe.markerWidth=Ie),Fe}},{key:"trackNFTMarkerId",value:function(ee,Ie){var Fe=this.nftMarkers[ee];return Fe||(this.nftMarkers[ee]=Fe={inPrevious:!1,inCurrent:!1,matrix:new Float64Array(12),matrixGL_RH:new Float64Array(12),markerWidth:Ie||this.defaultMarkerWidth}),Ie&&(Fe.markerWidth=Ie),Fe}},{key:"trackMultiMarkersId",value:function(ee,Ie){var Fe=this.multiMarkers[ee];return Fe||(this.multiMarkers[ee]=Fe={inPrevious:!1,inCurrent:!1,multiMarkerId:ee,matrix:new Float64Array(12),matrixGL_RH:new Float64Array(12),markerWidth:Ie||this.defaultMarkerWidth}),Ie&&(Fe.markerWidth=Ie),Fe}},{key:"getMultiMarkerCount",value:function(){return this.artoolkit.getMultiMarkerCount(this.id)}},{key:"getMultiMarkerPatternCount",value:function(ee){return this.artoolkit.getMultiMarkerNum(this.id,ee)}},{key:"addEventListener",value:function(ee,Ie){this.listeners[ee]||(this.listeners[ee]=[]),this.listeners[ee].push(Ie)}},{key:"removeEventListener",value:function(ee,Ie){if(this.listeners[ee]){var Fe=this.listeners[ee].indexOf(Ie);Fe>-1&&this.listeners[ee].splice(Fe,1)}}},{key:"dispatchEvent",value:function(ee){var Ie=this.listeners[ee.name];if(Ie)for(var Fe=0;Fe<Ie.length;Fe++)Ie[Fe].call(this,ee)}},{key:"debugSetup",value:function(){typeof document<"u"?(document.body.appendChild(this.canvas),this.setDebugMode(!0),this._bwpointer=this.getProcessingImage()):console.log("debugSetup() currently only supports Browser environments")}},{key:"debugDraw",value:function(){for(var ee=new Uint8ClampedArray(this.artoolkit.instance.HEAPU8.buffer,this._bwpointer,this.framesize),Ie=new ImageData(new Uint8ClampedArray(this.canvas.width*this.canvas.height*4),this.canvas.width,this.canvas.height),Fe=0,xe=0;Fe<ee.length;Fe++,xe+=4){var Lt=ee[Fe];Ie.data[xe+0]=Lt,Ie.data[xe+1]=Lt,Ie.data[xe+2]=Lt,Ie.data[xe+3]=255}this.ctx.putImageData(Ie,0,0);for(var Vt=this.getMarkerNum(),Ft=0;Ft<Vt;Ft++)this.drawDebugMarker(this.getMarker(Ft))}},{key:"drawDebugMarker",value:function(ee){var Ie=ee.vertex,Fe=ee.pos,xe=this.ctx;xe.lineWidth=5,xe.strokeStyle="red",xe.beginPath(),xe.moveTo(Ie[0][0],Ie[0][1]),xe.lineTo(Ie[1][0],Ie[1][1]),xe.stroke(),xe.beginPath(),xe.moveTo(Ie[2][0],Ie[2][1]),xe.lineTo(Ie[3][0],Ie[3][1]),xe.stroke(),xe.strokeStyle="green",xe.beginPath(),xe.lineTo(Ie[1][0],Ie[1][1]),xe.lineTo(Ie[2][0],Ie[2][1]),xe.stroke(),xe.beginPath(),xe.moveTo(Ie[3][0],Ie[3][1]),xe.lineTo(Ie[0][0],Ie[0][1]),xe.stroke(),xe.beginPath(),xe.arc(Fe[0],Fe[1],8,0,2*Math.PI),xe.fillStyle="red",xe.fill()}},{key:"loadMarker",value:(Ue=p(U().mark(function ee(Ie){return U().wrap(function(Fe){for(;;)switch(Fe.prev=Fe.next){case 0:return Fe.next=1,this.artoolkit.addMarker(this.id,Ie);case 1:return Fe.abrupt("return",Fe.sent);case 2:case"end":return Fe.stop()}},ee,this)})),function(ee){return Ue.apply(this,arguments)})},{key:"loadMultiMarker",value:(Ke=p(U().mark(function ee(Ie,Fe,xe){return U().wrap(function(Lt){for(;;)switch(Lt.prev=Lt.next){case 0:return Lt.next=1,this.artoolkit.addMultiMarker(this.id,Ie,Fe,xe);case 1:return Lt.abrupt("return",Lt.sent);case 2:case"end":return Lt.stop()}},ee,this)})),function(ee,Ie,Fe){return Ke.apply(this,arguments)})},{key:"loadNFTMarker",value:(Te=p(U().mark(function ee(Ie){var Fe;return U().wrap(function(xe){for(;;)switch(xe.prev=xe.next){case 0:return xe.next=1,this.artoolkit.addNFTMarker(this.id,Ie);case 1:return Fe=xe.sent,this.nftMarkerCount=Fe+1,xe.abrupt("return",Fe);case 2:case"end":return xe.stop()}},ee,this)})),function(ee){return Te.apply(this,arguments)})},{key:"getTransMatSquare",value:function(ee,Ie,Fe){return this.artoolkit.getTransMatSquare(this.id,ee,Ie),Fe.set(this.marker_transform_mat),Fe}},{key:"getTransMatSquareCont",value:function(ee,Ie,Fe,xe){return this.marker_transform_mat.set(Fe),this.artoolkit.getTransMatSquareCont(this.id,ee,Ie),xe.set(this.marker_transform_mat),xe}},{key:"getTransMatMultiSquare",value:function(ee,Ie){return this.artoolkit.getTransMatMultiSquare(this.id,ee),Ie.set(this.marker_transform_mat),Ie}},{key:"getTransMatMultiSquareRobust",value:function(ee,Ie){return this.artoolkit.getTransMatMultiSquare(this.id,ee),Ie.set(this.marker_transform_mat),Ie}},{key:"transMatToGLMat",value:function(ee,Ie,Fe){return Ie==null&&(Ie=new Float64Array(16)),Ie[0]=ee[0],Ie[4]=ee[1],Ie[8]=ee[2],Ie[12]=ee[3],Ie[1]=ee[4],Ie[5]=ee[5],Ie[9]=ee[6],Ie[13]=ee[7],Ie[2]=ee[8],Ie[6]=ee[9],Ie[10]=ee[10],Ie[14]=ee[11],Ie[3]=0,Ie[7]=0,Ie[11]=0,Ie[15]=1,Fe!=null&&Fe!==0&&(Ie[12]*=Fe,Ie[13]*=Fe,Ie[14]*=Fe),Ie}},{key:"arglCameraViewRHf",value:function(ee,Ie,Fe){var xe;return(xe=Ie??new Float64Array(16))[0]=ee[0],xe[4]=ee[4],xe[8]=ee[8],xe[12]=ee[12],xe[1]=-ee[1],xe[5]=-ee[5],xe[9]=-ee[9],xe[13]=-ee[13],xe[2]=-ee[2],xe[6]=-ee[6],xe[10]=-ee[10],xe[14]=-ee[14],xe[3]=0,xe[7]=0,xe[11]=0,xe[15]=1,Fe!=null&&Fe!==0&&(xe[12]*=Fe,xe[13]*=Fe,xe[14]*=Fe),xe}},{key:"detectMarker",value:function(ee){return this._copyImageToHeap(ee)?this.artoolkit.detectMarker(this.id):-99}},{key:"getMarkerNum",value:function(){return this.artoolkit.getMarkerNum(this.id)}},{key:"getMarker",value:function(ee){if(this.artoolkit.getMarker(this.id,ee)===0)return this.artoolkit.markerInfo}},{key:"getNFTMarker",value:function(ee){if(this.artoolkit.getNFTMarker(this.id,ee)===0)return this.artoolkit.NFTMarkerInfo}},{key:"getNFTData",value:function(ee,Ie){return this.artoolkit.getNFTData(ee,Ie)}},{key:"setMarkerInfoVertex",value:function(ee,Ie){for(var Fe=0;Fe<Ie.length;Fe++)this.marker_transform_mat[2*Fe+0]=Ie[Fe][0],this.marker_transform_mat[2*Fe+1]=Ie[Fe][1];return this.artoolkit.setMarkerInfoVertex(this.id,ee)}},{key:"cloneMarkerInfo",value:function(ee){return JSON.parse(JSON.stringify(ee))}},{key:"getMultiEachMarker",value:function(ee,Ie){if(this.artoolkit.getMultiEachMarker(this.id,ee,Ie)===0)return this.artoolkit.multiEachMarkerInfo}},{key:"getTransformationMatrix",value:function(){return this.transform_mat}},{key:"getCameraMatrix",value:function(){return this.camera_mat}},{key:"getMarkerTransformationMatrix",value:function(){return this.marker_transform_mat}},{key:"setDebugMode",value:function(ee){return this.artoolkit.setDebugMode(this.id,ee)}},{key:"getDebugMode",value:function(){return this.artoolkit.getDebugMode(this.id)}},{key:"getProcessingImage",value:function(){return this.artoolkit.getProcessingImage(this.id)}},{key:"setLogLevel",value:function(ee){return this.artoolkit.setLogLevel(ee)}},{key:"getLogLevel",value:function(){return this.artoolkit.getLogLevel()}},{key:"setMarkerInfoDir",value:function(ee,Ie){return this.artoolkit.setMarkerInfoDir(this.id,ee,Ie)}},{key:"setProjectionNearPlane",value:function(ee){return this.artoolkit.setProjectionNearPlane(this.id,ee)}},{key:"getProjectionNearPlane",value:function(){return this.artoolkit.getProjectionNearPlane(this.id)}},{key:"setProjectionFarPlane",value:function(ee){return this.artoolkit.setProjectionFarPlane(this.id,ee)}},{key:"getProjectionFarPlane",value:function(){return this.artoolkit.getProjectionFarPlane(this.id)}},{key:"setThresholdMode",value:function(ee){return this.artoolkit.setThresholdMode(this.id,ee)}},{key:"getThresholdMode",value:function(){return this.artoolkit.getThresholdMode(this.id)}},{key:"setThreshold",value:function(ee){return this.artoolkit.setThreshold(this.id,ee)}},{key:"getThreshold",value:function(){return this.artoolkit.getThreshold(this.id)}},{key:"setPatternDetectionMode",value:function(ee){return this.artoolkit.setPatternDetectionMode(this.id,ee)}},{key:"getPatternDetectionMode",value:function(){return this.artoolkit.getPatternDetectionMode(this.id)}},{key:"setMatrixCodeType",value:function(ee){return this.artoolkit.setMatrixCodeType(this.id,ee)}},{key:"getMatrixCodeType",value:function(){return this.artoolkit.getMatrixCodeType(this.id)}},{key:"setLabelingMode",value:function(ee){return this.artoolkit.setLabelingMode(this.id,ee)}},{key:"getLabelingMode",value:function(){return this.artoolkit.getLabelingMode(this.id)}},{key:"setPattRatio",value:function(ee){return this.artoolkit.setPattRatio(this.id,ee)}},{key:"getPattRatio",value:function(){return this.artoolkit.getPattRatio(this.id)}},{key:"setImageProcMode",value:function(ee){return this.artoolkit.setImageProcMode(this.id,ee)}},{key:"getImageProcMode",value:function(){return this.artoolkit.getImageProcMode(this.id)}},{key:"_initialize",value:(re=p(U().mark(function ee(){var Ie,Fe=this;return U().wrap(function(xe){for(;;)switch(xe.prev=xe.next){case 0:return xe.next=1,new ii().init();case 1:return this.artoolkit=xe.sent,console.log("[ARController]","ARToolkit initialized"),xe.next=2,this.artoolkit.loadCamera(this.cameraParam);case 2:return this.cameraId=xe.sent,console.log("[ARController]","Camera params loaded with ID",this.cameraId),this.id=this.artoolkit.setup(this.width,this.height,this.cameraId),console.log("[ARController]","Got ID from setup",this.id),this._initNFT(),Ie=artoolkit.frameMalloc,this.framepointer=Ie.framepointer,this.framesize=Ie.framesize,this.videoLumaPointer=Ie.videoLumaPointer,this.dataHeap=new Uint8Array(this.artoolkit.instance.HEAPU8.buffer,this.framepointer,this.framesize),this.videoLuma=new Uint8Array(this.artoolkit.instance.HEAPU8.buffer,this.videoLumaPointer,this.framesize/4),this.camera_mat=new Float64Array(this.artoolkit.instance.HEAPU8.buffer,Ie.camera,16),this.marker_transform_mat=new Float64Array(this.artoolkit.instance.HEAPU8.buffer,Ie.transform,12),this.setProjectionNearPlane(.1),this.setProjectionFarPlane(1e3),setTimeout(function(){Fe.dispatchEvent({name:"load",target:Fe})},1),xe.abrupt("return",this);case 3:case"end":return xe.stop()}},ee,this)})),function(){return re.apply(this,arguments)})},{key:"_initNFT",value:function(){this.artoolkit.setupAR2(this.id)}},{key:"_copyImageToHeap",value:function(ee){var Ie;if(ee||(ee=this.image),ee.data)Ie=ee.data;else{if(this.ctx.save(),this.orientation==="portrait"){this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height);var Fe=this.canvas.height/this.canvas.width,xe=this.canvas.width*Fe,Lt=this.canvas.height*Fe,Vt=(this.canvas.width-Lt)/2;this.ctx.drawImage(ee,Vt,0,Lt,xe)}else this.ctx.drawImage(ee,0,0,this.canvas.width,this.canvas.height);this.ctx.restore(),Ie=this.ctx.getImageData(0,0,this.canvas.width,this.canvas.height).data}if(this.videoLuma)for(var Ft=0,Qi=0;Qi<this.videoSize;Qi++){var zt=Ie[Ft+0],vn=Ie[Ft+1],Fo=Ie[Ft+2];this.videoLuma[Qi]=zt+zt+zt+Fo+vn+vn+vn+vn>>3,Ft+=4}return!!this.dataHeap&&(this.dataHeap.set(Ie),!0)}}],[{key:"initWithDimensions",value:($A=p(U().mark(function ee(Ie,Fe,xe,Lt){var Vt;return U().wrap(function(Ft){for(;;)switch(Ft.prev=Ft.next){case 0:return Vt=new eA(Ie,Fe,xe,Lt),Ft.next=1,Vt._initialize();case 1:return Ft.abrupt("return",Ft.sent);case 2:case"end":return Ft.stop()}},ee)})),function(ee,Ie,Fe,xe){return $A.apply(this,arguments)})},{key:"initWithImage",value:(LA=p(U().mark(function ee(Ie,Fe,xe){var Lt,Vt,Ft;return U().wrap(function(Qi){for(;;)switch(Qi.prev=Qi.next){case 0:return Lt=Ie.videoWidth||Ie.width,Vt=Ie.videoHeight||Ie.height,Qi.next=1,eA.initWithDimensions(Lt,Vt,Fe,xe);case 1:return(Ft=Qi.sent).image=Ie,Qi.abrupt("return",Ft);case 2:case"end":return Qi.stop()}},ee)})),function(ee,Ie,Fe){return LA.apply(this,arguments)})}]);var LA,$A,re,Te,Ke,Ue}();const Wa={ARToolkit:ii,ARController:xg}})(),v.default})(),_A.exports=s()},512(_A){_A.exports=function(O,d,s,z){var _=self||window;try{try{var T;try{T=new _.Blob([O])}catch{(T=new(_.BlobBuilder||_.WebKitBlobBuilder||_.MozBlobBuilder||_.MSBlobBuilder)).append(O),T=T.getBlob()}var v=_.URL||_.webkitURL,D=v.createObjectURL(T),h=new _[d](D,s);return v.revokeObjectURL(D),h}catch{return new _[d]("data:application/javascript,".concat(encodeURIComponent(O)),s)}}catch{if(!z)throw Error("Inline worker is not supported");return new _[d](z,s)}}},763(_A,O,d){var s;s=z=>(()=>{var _={818(U){U.exports=z}},T={};function v(U){var j=T[U];if(j!==void 0)return j.exports;var Z=T[U]={exports:{}};return _[U](Z,Z.exports,v),Z.exports}v.d=(U,j)=>{for(var Z in j)v.o(j,Z)&&!v.o(U,Z)&&Object.defineProperty(U,Z,{enumerable:!0,get:j[Z]})},v.o=(U,j)=>Object.prototype.hasOwnProperty.call(U,j),v.r=U=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(U,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(U,"__esModule",{value:!0})};var D={};v.r(D),v.d(D,{DeviceOrientationControls:()=>x,LocationBased:()=>m,WebcamRenderer:()=>u});class h{constructor(){this.EARTH=4007501668e-2,this.HALF_EARTH=2003750834e-2}project(j,Z){return[this.lonToSphMerc(j),this.latToSphMerc(Z)]}unproject(j){return[this.sphMercToLon(j[0]),this.sphMercToLat(j[1])]}lonToSphMerc(j){return j/180*this.HALF_EARTH}latToSphMerc(j){return Math.log(Math.tan((90+j)*Math.PI/360))/(Math.PI/180)*this.HALF_EARTH/180}sphMercToLon(j){return j/this.HALF_EARTH*180}sphMercToLat(j){var Z=j/this.HALF_EARTH*180;return 180/Math.PI*(2*Math.atan(Math.exp(Z*Math.PI/180))-Math.PI/2)}getID(){return"epsg:3857"}}var p=v(818);class m{constructor(j,Z,CA={}){this._scene=j,this._camera=Z,this._proj=new h,this._eventHandlers={},this._lastCoords=null,this._gpsMinDistance=0,this._gpsMinAccuracy=100,this._maximumAge=0,this._watchPositionId=null,this.setGpsOptions(CA),this.initialPosition=null,this.initialPositionAsOrigin=CA.initialPositionAsOrigin||!1,this.useAltitude=CA.useAltitude||!1}setProjection(j){this._proj=j}setGpsOptions(j={}){j.gpsMinDistance!==void 0&&(this._gpsMinDistance=j.gpsMinDistance),j.gpsMinAccuracy!==void 0&&(this._gpsMinAccuracy=j.gpsMinAccuracy),j.maximumAge!==void 0&&(this._maximumAge=j.maximumAge)}startGps(j=0){return this._watchPositionId===null&&(this._watchPositionId=navigator.geolocation.watchPosition(Z=>{this._gpsReceived(Z)},Z=>{this._eventHandlers.gpserror?this._eventHandlers.gpserror(Z.code):alert(`GPS error: code ${Z.code}`)},{enableHighAccuracy:!0,maximumAge:j!=0?j:this._maximumAge}),!0)}stopGps(){return this._watchPositionId!==null&&(navigator.geolocation.clearWatch(this._watchPositionId),this._watchPositionId=null,!0)}fakeGps(j,Z,CA=null,QA=0){CA!==null&&this.setElevation(CA),this._gpsReceived({coords:{longitude:j,latitude:Z,accuracy:QA}})}lonLatToWorldCoords(j,Z){const CA=this._proj.project(j,Z);if(this.initialPositionAsOrigin){if(!this.initialPosition)throw"Trying to use 'initial position as origin' mode with no initial position determined";CA[0]-=this.initialPosition[0],CA[1]-=this.initialPosition[1]}return[CA[0],-CA[1]]}add(j,Z,CA,QA){this.setWorldPosition(j,Z,CA,QA),this._scene.add(j)}setWorldPosition(j,Z,CA,QA){const SA=this.lonLatToWorldCoords(Z,CA);QA!==void 0&&(j.position.y=QA),[j.position.x,j.position.z]=SA}setElevation(j){this._camera.position.y=j}on(j,Z){this._eventHandlers[j]=Z}setWorldOrigin(j,Z){this.initialPosition=this._proj.project(j,Z)}_gpsReceived(j){let Z=Number.MAX_VALUE;j.coords.accuracy<=this._gpsMinAccuracy&&(this._lastCoords===null?this._lastCoords={latitude:j.coords.latitude,longitude:j.coords.longitude}:Z=this._haversineDist(this._lastCoords,j.coords),Z>=this._gpsMinDistance&&(this._lastCoords.longitude=j.coords.longitude,this._lastCoords.latitude=j.coords.latitude,this.initialPositionAsOrigin&&!this.initialPosition&&this.setWorldOrigin(j.coords.longitude,j.coords.latitude),this.setWorldPosition(this._camera,j.coords.longitude,j.coords.latitude,this.useAltitude&&j.coords.altitude!=null?j.coords.altitude:void 0),this._eventHandlers.gpsupdate&&this._eventHandlers.gpsupdate(j,Z)))}_haversineDist(j,Z){const CA=p.MathUtils.degToRad(Z.longitude-j.longitude),QA=p.MathUtils.degToRad(Z.latitude-j.latitude),SA=Math.sin(QA/2)*Math.sin(QA/2)+Math.cos(p.MathUtils.degToRad(j.latitude))*Math.cos(p.MathUtils.degToRad(Z.latitude))*(Math.sin(CA/2)*Math.sin(CA/2));return 2*Math.atan2(Math.sqrt(SA),Math.sqrt(1-SA))*6371e3}}class u{constructor(j,Z){let CA;this.renderer=j,this.renderer.autoClear=!1,this.sceneWebcam=new p.Scene,Z===void 0?(CA=document.createElement("video"),CA.setAttribute("autoplay",!0),CA.setAttribute("playsinline",!0),CA.style.display="none",document.body.appendChild(CA)):CA=document.querySelector(Z),this.geom=new p.PlaneGeometry,this.texture=new p.VideoTexture(CA),this.material=new p.MeshBasicMaterial({map:this.texture});const QA=new p.Mesh(this.geom,this.material);if(this.sceneWebcam.add(QA),this.cameraWebcam=new p.OrthographicCamera(-.5,.5,.5,-.5,0,10),navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){const SA={video:{width:1280,height:720,facingMode:"environment"}};navigator.mediaDevices.getUserMedia(SA).then(UA=>{console.log("using the webcam successfully..."),CA.srcObject=UA,CA.play()}).catch(UA=>{setTimeout(()=>{this.createErrorPopup(`Webcam Error
Name: `+UA.name+`
Message: `+UA.message)},1e3)})}else setTimeout(()=>{this.createErrorPopup("sorry - media devices API not supported")},1e3)}update(){this.renderer.clear(),this.renderer.render(this.sceneWebcam,this.cameraWebcam),this.renderer.clearDepth()}dispose(){this.material.dispose(),this.texture.dispose(),this.geom.dispose()}createErrorPopup(j){if(!document.getElementById("error-popup")){var Z=document.createElement("div");Z.innerHTML=j,Z.setAttribute("id","error-popup"),document.body.appendChild(Z)}}}const l=new p.Vector3(0,0,1),R=new p.Euler,N=new p.Quaternion,Y=new p.Quaternion(-Math.sqrt(.5),0,0,Math.sqrt(.5)),G={type:"change"};class x extends p.EventDispatcher{constructor(j){super(),window.isSecureContext===!1&&console.error("THREE.DeviceOrientationControls: DeviceOrientationEvent is only available in secure contexts (https)");const Z=this,CA=new p.Quaternion;this.object=j,this.object.rotation.reorder("YXZ"),this.enabled=!0,this.deviceOrientation={},this.screenOrientation=0,this.alphaOffset=0,this.TWO_PI=2*Math.PI,this.HALF_PI=.5*Math.PI,this.orientationChangeEventName="ondeviceorientationabsolute"in window?"deviceorientationabsolute":"deviceorientation",this.smoothingFactor=1;const QA=function(UA){Z.deviceOrientation=UA},SA=function(){Z.screenOrientation=window.orientation||0};this.connect=function(){SA(),window.DeviceOrientationEvent!==void 0&&typeof window.DeviceOrientationEvent.requestPermission=="function"?window.DeviceOrientationEvent.requestPermission().then(UA=>{UA==="granted"&&(window.addEventListener("orientationchange",SA),window.addEventListener(Z.orientationChangeEventName,QA))}).catch(function(UA){console.error("THREE.DeviceOrientationControls: Unable to use DeviceOrientation API:",UA)}):(window.addEventListener("orientationchange",SA),window.addEventListener(Z.orientationChangeEventName,QA)),Z.enabled=!0},this.disconnect=function(){window.removeEventListener("orientationchange",SA),window.removeEventListener(Z.orientationChangeEventName,QA),Z.enabled=!1},this.update=function(){if(Z.enabled===!1)return;const UA=Z.deviceOrientation;if(UA){let TA=UA.alpha?p.MathUtils.degToRad(UA.alpha)+Z.alphaOffset:0,pA=UA.beta?p.MathUtils.degToRad(UA.beta):0,hA=UA.gamma?p.MathUtils.degToRad(UA.gamma):0;const uA=Z.screenOrientation?p.MathUtils.degToRad(Z.screenOrientation):0;if(this.smoothingFactor<1){if(this.lastOrientation){const lA=this.smoothingFactor;TA=this._getSmoothedAngle(TA,this.lastOrientation.alpha,lA),pA=this._getSmoothedAngle(pA+Math.PI,this.lastOrientation.beta,lA),hA=this._getSmoothedAngle(hA+this.HALF_PI,this.lastOrientation.gamma,lA,Math.PI)}else pA+=Math.PI,hA+=this.HALF_PI;this.lastOrientation={alpha:TA,beta:pA,gamma:hA}}(function(lA,NA,HA,pe,He){R.set(HA,NA,-pe,"YXZ"),lA.setFromEuler(R),lA.multiply(Y),lA.multiply(N.setFromAxisAngle(l,-He))})(Z.object.quaternion,TA,this.smoothingFactor<1?pA-Math.PI:pA,this.smoothingFactor<1?hA-this.HALF_PI:hA,uA),8*(1-CA.dot(Z.object.quaternion))>1e-6&&(CA.copy(Z.object.quaternion),Z.dispatchEvent(G))}},this._orderAngle=function(UA,TA,pA=this.TWO_PI){return TA>UA&&Math.abs(TA-UA)<pA/2||UA>TA&&Math.abs(TA-UA)>pA/2?{left:UA,right:TA}:{left:TA,right:UA}},this._getSmoothedAngle=function(UA,TA,pA,hA=this.TWO_PI){const uA=this._orderAngle(UA,TA,hA),lA=uA.left,NA=uA.right;uA.left=0,uA.right-=lA,uA.right<0&&(uA.right+=hA);let HA=NA==TA?(1-pA)*uA.right+pA*uA.left:pA*uA.right+(1-pA)*uA.left;return HA+=lA,HA>=hA&&(HA-=hA),HA},this.dispose=function(){Z.disconnect()},this.connect()}}return D})(),_A.exports=s(d(818))},14(_A){_A.exports=xn},818(_A){_A.exports=Ir}},dn={};function Mo(_A){var O=dn[_A];if(O!==void 0)return O.exports;var d=dn[_A]={exports:{}};return ng[_A].call(d.exports,d,d.exports,Mo),d.exports}return Mo.n=_A=>{var O=_A&&_A.__esModule?()=>_A.default:()=>_A;return Mo.d(O,{a:O}),O},Mo.d=(_A,O)=>{for(var d in O)Mo.o(O,d)&&!Mo.o(_A,d)&&Object.defineProperty(_A,d,{enumerable:!0,get:O[d]})},Mo.g=function(){if(typeof globalThis=="object")return globalThis;try{return this||new Function("return this")()}catch{if(typeof window=="object")return window}}(),Mo.o=(_A,O)=>Object.prototype.hasOwnProperty.call(_A,O),(()=>{var _A=Mo(14),O=Mo(818);const d=function(q){this.id=d.id++,this.object3d=q,this.object3d.matrixAutoUpdate=!1,this.object3d.visible=!1};d.id=0,d.prototype=Object.create(O.EventDispatcher.prototype),d.prototype.update=function(){console.assert(!1,"you need to implement your own update")},d.prototype.name=function(){return console.assert(!1,"you need to implement your own .name()"),"Not yet implemented - name()"};const s=d;var z=Mo(512),_=Mo.n(z);function T(){return _()(`(()=>{var A={144(A,I,g){var B;"undefined"!=typeof self&&self,B=()=>(()=>{var A={172:A=>{A.exports=function(A,I){this.v=A,this.k=I},A.exports.__esModule=!0,A.exports.default=A.exports},236:()=>{},373:A=>{A.exports=function(A){var I=Object(A),g=[];for(var B in I)g.unshift(B);return function A(){for(;g.length;)if((B=g.pop())in I)return A.value=B,A.done=!1,A;return A.done=!0,A}},A.exports.__esModule=!0,A.exports.default=A.exports},546:A=>{function I(g,B,C,Q){var E=Object.defineProperty;try{E({},"",{})}catch(g){E=0}A.exports=I=function(A,g,B,C){function Q(g,B){I(A,g,function(A){return this._invoke(g,B,A)})}g?E?E(A,g,{value:B,enumerable:!C,configurable:!C,writable:!C}):A[g]=B:(Q("next",0),Q("throw",1),Q("return",2))},A.exports.__esModule=!0,A.exports.default=A.exports,I(g,B,C,Q)}A.exports=I,A.exports.__esModule=!0,A.exports.default=A.exports},579:(A,I,g)=>{var B=g(738).default;A.exports=function(A){if(null!=A){var I=A["function"==typeof Symbol&&Symbol.iterator||"@@iterator"],g=0;if(I)return I.call(A);if("function"==typeof A.next)return A;if(!isNaN(A.length))return{next:function(){return A&&g>=A.length&&(A=void 0),{value:A&&A[g++],done:!A}}}}throw new TypeError(B(A)+" is not iterable")},A.exports.__esModule=!0,A.exports.default=A.exports},633:(A,I,g)=>{var B=g(172),C=g(993),Q=g(869),E=g(887),i=g(791),o=g(373),D=g(579);function a(){"use strict";var I=C(),g=I.m(a),t=(Object.getPrototypeOf?Object.getPrototypeOf(g):g.__proto__).constructor;function s(A){var I="function"==typeof A&&A.constructor;return!!I&&(I===t||"GeneratorFunction"===(I.displayName||I.name))}var w={throw:1,return:2,break:3,continue:3};function G(A){var I,g;return function(B){I||(I={stop:function(){return g(B.a,2)},catch:function(){return B.v},abrupt:function(A,I){return g(B.a,w[A],I)},delegateYield:function(A,C,Q){return I.resultName=C,g(B.d,D(A),Q)},finish:function(A){return g(B.f,A)}},g=function(A,g,C){B.p=I.prev,B.n=I.next;try{return A(g,C)}finally{I.next=B.n}}),I.resultName&&(I[I.resultName]=B.v,I.resultName=void 0),I.sent=B.v,I.next=B.n;try{return A.call(this,I)}finally{B.p=I.prev,B.n=I.next}}}return(A.exports=a=function(){return{wrap:function(A,g,B,C){return I.w(G(A),g,B,C&&C.reverse())},isGeneratorFunction:s,mark:I.m,awrap:function(A,I){return new B(A,I)},AsyncIterator:i,async:function(A,I,g,B,C){return(s(I)?E:Q)(G(A),I,g,B,C)},keys:o,values:D}},A.exports.__esModule=!0,A.exports.default=A.exports)()}A.exports=a,A.exports.__esModule=!0,A.exports.default=A.exports},738:A=>{function I(g){return A.exports=I="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(A){return typeof A}:function(A){return A&&"function"==typeof Symbol&&A.constructor===Symbol&&A!==Symbol.prototype?"symbol":typeof A},A.exports.__esModule=!0,A.exports.default=A.exports,I(g)}A.exports=I,A.exports.__esModule=!0,A.exports.default=A.exports},756:(A,I,g)=>{var B=g(633)();A.exports=B;try{regeneratorRuntime=B}catch(A){"object"==typeof globalThis?globalThis.regeneratorRuntime=B:Function("r","regeneratorRuntime = r")(B)}},791:(A,I,g)=>{var B=g(172),C=g(546);A.exports=function A(I,g){function Q(A,C,E,i){try{var o=I[A](C),D=o.value;return D instanceof B?g.resolve(D.v).then(function(A){Q("next",A,E,i)},function(A){Q("throw",A,E,i)}):g.resolve(D).then(function(A){o.value=A,E(o)},function(A){return Q("throw",A,E,i)})}catch(A){i(A)}}var E;this.next||(C(A.prototype),C(A.prototype,"function"==typeof Symbol&&Symbol.asyncIterator||"@asyncIterator",function(){return this})),C(this,"_invoke",function(A,I,B){function C(){return new g(function(I,g){Q(A,B,I,g)})}return E=E?E.then(C,C):C()},!0)},A.exports.__esModule=!0,A.exports.default=A.exports},869:(A,I,g)=>{var B=g(887);A.exports=function(A,I,g,C,Q){var E=B(A,I,g,C,Q);return E.next().then(function(A){return A.done?A.value:E.next()})},A.exports.__esModule=!0,A.exports.default=A.exports},884:()=>{},887:(A,I,g)=>{var B=g(993),C=g(791);A.exports=function(A,I,g,Q,E){return new C(B().w(A,I,g,Q),E||Promise)},A.exports.__esModule=!0,A.exports.default=A.exports},902:()=>{},993:(A,I,g)=>{var B=g(546);function C(){var I,g,Q="function"==typeof Symbol?Symbol:{},E=Q.iterator||"@@iterator",i=Q.toStringTag||"@@toStringTag";function o(A,C,Q,E){var i=C&&C.prototype instanceof a?C:a,o=Object.create(i.prototype);return B(o,"_invoke",function(A,B,C){var Q,E,i,o=0,a=C||[],t=!1,s={p:0,n:0,v:I,a:w,f:w.bind(I,4),d:function(A,g){return Q=A,E=0,i=I,s.n=g,D}};function w(A,B){for(E=A,i=B,g=0;!t&&o&&!C&&g<a.length;g++){var C,Q=a[g],w=s.p,G=Q[2];A>3?(C=G===B)&&(i=Q[(E=Q[4])?5:(E=3,3)],Q[4]=Q[5]=I):Q[0]<=w&&((C=A<2&&w<Q[1])?(E=0,s.v=B,s.n=Q[1]):w<G&&(C=A<3||Q[0]>B||B>G)&&(Q[4]=A,Q[5]=B,s.n=G,E=0))}if(C||A>1)return D;throw t=!0,B}return function(C,a,G){if(o>1)throw TypeError("Generator is already running");for(t&&1===a&&w(a,G),E=a,i=G;(g=E<2?I:i)||!t;){Q||(E?E<3?(E>1&&(s.n=-1),w(E,i)):s.n=i:s.v=i);try{if(o=2,Q){if(E||(C="next"),g=Q[C]){if(!(g=g.call(Q,i)))throw TypeError("iterator result is not an object");if(!g.done)return g;i=g.value,E<2&&(E=0)}else 1===E&&(g=Q.return)&&g.call(Q),E<2&&(i=TypeError("The iterator does not provide a '"+C+"' method"),E=1);Q=I}else if((g=(t=s.n<0)?i:A.call(B,s))!==D)break}catch(A){Q=I,E=1,i=A}finally{o=1}}return{value:g,done:t}}}(A,Q,E),!0),o}var D={};function a(){}function t(){}function s(){}g=Object.getPrototypeOf;var w=[][E]?g(g([][E]())):(B(g={},E,function(){return this}),g),G=s.prototype=a.prototype=Object.create(w);function h(A){return Object.setPrototypeOf?Object.setPrototypeOf(A,s):(A.__proto__=s,B(A,i,"GeneratorFunction")),A.prototype=Object.create(G),A}return t.prototype=s,B(G,"constructor",s),B(s,"constructor",t),t.displayName="GeneratorFunction",B(s,i,"GeneratorFunction"),B(G),B(G,i,"Generator"),B(G,E,function(){return this}),B(G,"toString",function(){return"[object Generator]"}),(A.exports=C=function(){return{w:o,m:h}},A.exports.__esModule=!0,A.exports.default=A.exports)()}A.exports=C,A.exports.__esModule=!0,A.exports.default=A.exports}},I={};function B(g){var C=I[g];if(void 0!==C)return C.exports;var Q=I[g]={exports:{}};return A[g](Q,Q.exports,B),Q.exports}B.n=A=>{var I=A&&A.__esModule?()=>A.default:()=>A;return B.d(I,{a:I}),I},B.d=(A,I)=>{for(var g in I)B.o(I,g)&&!B.o(A,g)&&Object.defineProperty(A,g,{enumerable:!0,get:I[g]})},B.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(A){if("object"==typeof window)return window}}(),B.o=(A,I)=>Object.prototype.hasOwnProperty.call(A,I),B.r=A=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(A,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(A,"__esModule",{value:!0})};var C={};return(()=>{"use strict";B.d(C,{default:()=>mI});var A={};function I(A,I,g,B,C,Q,E){try{var i=A[Q](E),o=i.value}catch(A){return void g(A)}i.done?I(o):Promise.resolve(o).then(B,C)}function Q(A){return function(){var g=this,B=arguments;return new Promise(function(C,Q){var E=A.apply(g,B);function i(A){I(E,C,Q,i,o,"next",A)}function o(A){I(E,C,Q,i,o,"throw",A)}i(void 0)})}}function E(A,I){if(!(A instanceof I))throw new TypeError("Cannot call a class as a function")}function i(A){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(A){return typeof A}:function(A){return A&&"function"==typeof Symbol&&A.constructor===Symbol&&A!==Symbol.prototype?"symbol":typeof A},i(A)}function o(A){var I=function(A){if("object"!=i(A)||!A)return A;var I=A[Symbol.toPrimitive];if(void 0!==I){var g=I.call(A,"string");if("object"!=i(g))return g;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(A)}(A);return"symbol"==i(I)?I:I+""}function D(A,I){for(var g=0;g<I.length;g++){var B=I[g];B.enumerable=B.enumerable||!1,B.configurable=!0,"value"in B&&(B.writable=!0),Object.defineProperty(A,o(B.key),B)}}function a(A,I,g){return I&&D(A.prototype,I),g&&D(A,g),Object.defineProperty(A,"prototype",{writable:!1}),A}function t(A,I,g){return(I=o(I))in A?Object.defineProperty(A,I,{value:g,enumerable:!0,configurable:!0,writable:!0}):A[I]=g,A}B.r(A),B.d(A,{hasBrowserEnv:()=>UA,hasStandardBrowserEnv:()=>KA,hasStandardBrowserWebWorkerEnv:()=>YA,navigator:()=>JA,origin:()=>LA});var s,w=B(756),G=B.n(w),h=(s=(s="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0)||"/index.js",function(A){var I,g;(A=void 0!==(A=A||{})?A:{}).ready=new Promise(function(A,B){I=A,g=B});var C,Q,E,o,D,a,t=Object.assign({},A),w=[],G="./this.program",h=function(A,I){throw I},r="object"==("undefined"==typeof window?"undefined":i(window)),R="function"==typeof importScripts,y="object"==("undefined"==typeof process?"undefined":i(process))&&"object"==i(process.versions)&&"string"==typeof process.versions.node,F="";y?(F=R?B(884).dirname(F)+"/":"//",a=function(){D||(o=B(236),D=B(884))},C=function(A,I){var g=bI(A);return g?I?g:g.toString():(a(),A=D.normalize(A),o.readFileSync(A,I?void 0:"utf8"))},E=function(A){var I=C(A,!0);return I.buffer||(I=new Uint8Array(I)),I},Q=function(A,I,g){var B=bI(A);B&&I(B),a(),A=D.normalize(A),o.readFile(A,function(A,B){A?g(A):I(B.buffer)})},process.argv.length>1&&(G=process.argv[1].replace(/\\\\/g,"/")),w=process.argv.slice(2),process.on("uncaughtException",function(A){if(!(A instanceof aA))throw A}),process.on("unhandledRejection",function(A){throw A}),h=function(A,I){if(X())throw process.exitCode=A,I;var g;(g=I)instanceof aA||M("exiting due to exception: "+g),process.exit(A)},A.inspect=function(){return"[Emscripten Module object]"}):(r||R)&&(R?F=self.location.href:"undefined"!=typeof document&&document.currentScript&&(F=document.currentScript.src),s&&(F=s),F=0!==F.indexOf("blob:")?F.substr(0,F.replace(/[?#].*/,"").lastIndexOf("/")+1):"",C=function(A){try{var I=new XMLHttpRequest;return I.open("GET",A,!1),I.send(null),I.responseText}catch(I){var g=bI(A);if(g)return function(A){for(var I=[],g=0;g<A.length;g++){var B=A[g];B>255&&(pI&&k(!1,"Character code "+B+" ("+String.fromCharCode(B)+") at offset "+g+" not in 0x00-0xFF."),B&=255),I.push(String.fromCharCode(B))}return I.join("")}(g);throw I}},R&&(E=function(A){try{var I=new XMLHttpRequest;return I.open("GET",A,!1),I.responseType="arraybuffer",I.send(null),new Uint8Array(I.response)}catch(I){var g=bI(A);if(g)return g;throw I}}),Q=function(A,I,g){var B=new XMLHttpRequest;B.open("GET",A,!0),B.responseType="arraybuffer",B.onload=function(){if(200==B.status||0==B.status&&B.response)I(B.response);else{var C=bI(A);C?I(C.buffer):g()}},B.onerror=g,B.send(null)});var e,n=A.print||console.log.bind(console),M=A.printErr||console.warn.bind(console);Object.assign(A,t),t=null,A.arguments&&(w=A.arguments),A.thisProgram&&(G=A.thisProgram),A.quit&&(h=A.quit),A.wasmBinary&&(e=A.wasmBinary);var S,c=A.noExitRuntime||!0;"object"!=("undefined"==typeof WebAssembly?"undefined":i(WebAssembly))&&AA("no native wasm support detected");var N=!1;function k(A,I){A||AA(I)}var U,J,K,Y,L,d,l,q,H,u="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function f(A,I,g){for(var B=I+g,C=I;A[C]&&!(C>=B);)++C;if(C-I>16&&A.buffer&&u)return u.decode(A.subarray(I,C));for(var Q="";I<C;){var E=A[I++];if(128&E){var i=63&A[I++];if(192!=(224&E)){var o=63&A[I++];if((E=224==(240&E)?(15&E)<<12|i<<6|o:(7&E)<<18|i<<12|o<<6|63&A[I++])<65536)Q+=String.fromCharCode(E);else{var D=E-65536;Q+=String.fromCharCode(55296|D>>10,56320|1023&D)}}else Q+=String.fromCharCode((31&E)<<6|i)}else Q+=String.fromCharCode(E)}return Q}function p(A,I){return A?f(K,A,I):""}function m(A,I,g,B){if(!(B>0))return 0;for(var C=g,Q=g+B-1,E=0;E<A.length;++E){var i=A.charCodeAt(E);if(i>=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&A.charCodeAt(++E)),i<=127){if(g>=Q)break;I[g++]=i}else if(i<=2047){if(g+1>=Q)break;I[g++]=192|i>>6,I[g++]=128|63&i}else if(i<=65535){if(g+2>=Q)break;I[g++]=224|i>>12,I[g++]=128|i>>6&63,I[g++]=128|63&i}else{if(g+3>=Q)break;I[g++]=240|i>>18,I[g++]=128|i>>12&63,I[g++]=128|i>>6&63,I[g++]=128|63&i}}return I[g]=0,g-C}function b(A){for(var I=0,g=0;g<A.length;++g){var B=A.charCodeAt(g);B<=127?I++:B<=2047?I+=2:B>=55296&&B<=57343?(I+=4,++g):I+=3}return I}function W(I){U=I,A.HEAP8=J=new Int8Array(I),A.HEAP16=Y=new Int16Array(I),A.HEAP32=d=new Int32Array(I),A.HEAPU8=K=new Uint8Array(I),A.HEAPU16=L=new Uint16Array(I),A.HEAPU32=l=new Uint32Array(I),A.HEAPF32=q=new Float32Array(I),A.HEAPF64=H=new Float64Array(I)}A.INITIAL_MEMORY;var Z,x=[],V=[],O=[];function X(){return c}function T(A){x.unshift(A)}function v(A){O.unshift(A)}var j=0,P=null,z=null;function _(I){j++,A.monitorRunDependencies&&A.monitorRunDependencies(j)}function $(I){if(j--,A.monitorRunDependencies&&A.monitorRunDependencies(j),0==j&&(null!==P&&(clearInterval(P),P=null),z)){var g=z;z=null,g()}}function AA(I){A.onAbort&&A.onAbort(I),M(I="Aborted("+I+")"),N=!0,I+=". Build with -sASSERTIONS for more info.";var B=new WebAssembly.RuntimeError(I);throw g(B),B}var IA,gA,BA,CA,QA="data:application/octet-stream;base64,";function EA(A){return A.startsWith(QA)}function iA(A){return A.startsWith("file://")}function oA(A){try{if(A==IA&&e)return new Uint8Array(e);var I=bI(A);if(I)return I;if(E)return E(A);throw"both async and sync fetching of the wasm failed"}catch(A){AA(A)}}EA(IA="data:application/octet-stream;base64,AGFzbQEAAAABhwZfYAF/AX9gAX8AYAJ/fwBgAn9/AX9gA39/fwF/YAV/f39/fwBgA39/fwBgBH9/f38AYAR/f39/AX9gBn9/f39/fwF/YAV/f39/fwF/YAZ/f39/f38AYAd/f39/f39/AGAIf39/f39/f38Bf2AAAGAHf39/f39/fwF/YAABf2ABfQF9YAV/fn5+fgBgA39+fwF+YAJ/fABgAn19AX1gBX9/f39+AX9gCH9/f39/f39/AGADf39/AX1gCn9/f39/f39/f38Bf2ABfwF8YAp/f39/f39/f39/AGAEf35+fwBgA39/fQBgB39/f39/fn4Bf2AGf39/f35+AX9gA39/fABgAX8BfWAFf319f38Bf2AGf39/f39/AXxgAXwBfWACfH8BfGAGf399fX9/AX9gBX9/fX1/AGACf38BfWACf38BfGAJf39/f39/f39/AX9gA39/fwF+YAx/f39/f39/f39/f38Bf2AFf39+f38AYAZ/fH9/f38Bf2ABfwF+YAZ/f39/fn8Bf2APf39/f39/f39/f39/f39/AGALf39/f39/f39/f38Bf2AEf39/fwF+YAJ/fQBgBX9/f398AX9gAAF8YA1/f39/f39/f39/f39/AGADf319AX1gBX99fX9/AX1gBH19fX0BfWACf34AYAd/f39/fH9/AX9gBH5+fn4Bf2AEf39/fQBgAn5/AX9gAX0Bf2ADfHx/AXxgAnx8AXxgB39/f39/f30BfWAHf39/f39/fwF9YAN/fn8AYAN/f30BfWAMf39/f39/f39/f3x/AX9gAn5+AXxgBX9/f319AGAGfHx8fHx8AXxgA3x8fAF8YAN9fX0BfWAEf39/fgF+YAZ/fX19fX8Bf2ACfn4BfWADfn5+AX9gA39/fgBgAn9/AX5gBH9/fH8BfGACf30BfWACfX8Bf2ACfH8Bf2AOf39/f39/f39/f3x/f38Bf2AFf399fX8Bf2ADf399AX9gBn9/f39/fQBgBn98fH9/fwBgBH9+f38Bf2AEf39+fgBgA39/fwF8AqECMAFhAWEADgFhAWIAAQFhAWMABgFhAWQACwFhAWUABQFhAWYABgFhAWcAAAFhAWgAFwFhAWkABAFhAWoAAgFhAWsABQFhAWwABgFhAW0AAAFhAW4ACAFhAW8ABAFhAXAANgFhAXEAAgFhAXIABgFh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RQRAA0AgAEECdEHAtwRqIABB/a8CEMgENgIAIABBAWoiAEEGRw0AC0HwtwRBAToAAEHYtwRBwLcEKAIANgIAC0HAtwQhASACQQhqQcC3BBD5AkUNAkHYtwQhASACQQhqQdi3BBD5AkUNAkEYEDciAUUNAQsgASACKQMINwIAIAEgAikDGDcCECABIAIpAxA3AggMAQtBACEBCyACQSBqJAAgASEAQZy5BEEBOgAAQZi5BCAANgIAIAALyQoCBX8PfiMAQeAAayIFJAAgBEL///////8/gyEMIAIgBIVCgICAgICAgICAf4MhCiACQv///////z+DIg1CIIghDiAEQjCIp0H//wFxIQcCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAHQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgtCgICAgICAwP//AFQgC0KAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEKDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQogAyEBDAILIAEgC0KAgICAgIDA//8AhYRQBEAgAiADhFAEQEKAgICAgIDg//8AIQpCACEBDAMLIApCgICAgICAwP//AIQhCkIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQCABIAuEIQJCACEBIAJQBEBCgICAgICA4P//ACEKDAMLIApCgICAgICAwP//AIQhCgwCCyABIAuEUARAQgAhAQwCCyACIAOEUARAQgAhAQwCCyALQv///////z9YBEAgBUHQAGogASANIAEgDSANUCIGG3kgBkEGdK18pyIGQQ9rEIgBQRAgBmshBiAFKQNYIg1CIIghDiAFKQNQIQELIAJC////////P1YNACAFQUBrIAMgDCADIAwgDFAiCBt5IAhBBnStfKciCEEPaxCIASAGIAhrQRBqIQYgBSkDSCEMIAUpA0AhAwsgA0IPhiILQoCA/v8PgyICIAFCIIgiBH4iECALQiCIIhMgAUL/////D4MiAX58Ig9CIIYiESABIAJ+fCILIBFUrSACIA1C/////w+DIg1+IhUgBCATfnwiESAMQg+GIhIgA0IxiIRC/////w+DIgMgAX58IhQgDyAQVK1CIIYgD0IgiIR8Ig8gAiAOQoCABIQiDH4iFiANIBN+fCIOIBJCIIhCgICAgAiEIgIgAX58IhAgAyAEfnwiEkIghnwiF3whASAHIAlqIAZqQf//AGshBgJAIAIgBH4iGCAMIBN+fCIEIBhUrSAEIAQgAyANfnwiBFatfCACIAx+fCAEIAQgESAVVK0gESAUVq18fCIEVq18IAMgDH4iAyACIA1+fCICIANUrUIghiACQiCIhHwgBCACQiCGfCICIARUrXwgAiACIBAgElatIA4gFlStIA4gEFatfHxCIIYgEkIgiIR8IgJWrXwgAiACIA8gFFStIA8gF1atfHwiAlatfCIEQoCAgICAgMAAg1BFBEAgBkEBaiEGDAELIAtCP4ghAyAEQgGGIAJCP4iEIQQgAkIBhiABQj+IhCECIAtCAYYhCyADIAFCAYaEIQELIAZB//8BTgRAIApCgICAgICAwP//AIQhCkIAIQEMAQsCfiAGQQBMBEBBASAGayIHQYABTwRAQgAhAQwDCyAFQTBqIAsgASAGQf8AaiIGEIgBIAVBIGogAiAEIAYQiAEgBUEQaiALIAEgBxD+ASAFIAIgBCAHEP4BIAUpAzAgBSkDOIRCAFKtIAUpAyAgBSkDEISEIQsgBSkDKCAFKQMYhCEBIAUpAwAhAiAFKQMIDAELIARC////////P4MgBq1CMIaECyAKhCEKIAtQIAFCAFkgAUKAgICAgICAgIB/URtFBEAgCiACQgF8IgEgAlStfCEKDAELIAsgAUKAgICAgICAgIB/hYRQRQRAIAIhAQwBCyAKIAIgAkIBg3wiASACVK18IQoLIAAgATcDACAAIAo3AwggBUHgAGokAAsHACAAQRBqCygBAX8gASABQQFrIgJxRQRAIAAgAnEPCyAAIAFPBH8gACABcAUgAAsLrwEBA38gAygCTBogASACbCEFIAMgAygCSCIEQQFrIARyNgJIIAMoAgQiBiADKAIIIgRGBH8gBQUgACAGIAQgBmsiBCAFIAQgBUkbIgQQPhogAyADKAIEIARqNgIEIAAgBGohACAFIARrCyIEBEADQAJAIAMQkQNFBEAgAyAAIAQgAygCIBEEACIGDQELIAUgBGsgAW4PCyAAIAZqIQAgBCAGayIEDQALCyACQQAgARsLowEBA38jAEEgayIBJAAgAUEANgIMIAFBzgI2AgggASABKQMINwMAIAFBEGoiAiABKQIANwIEIAIgADYCACMAQRBrIgMkACAAKAIAQX9HBEAgAyADQQhqIAIQkgYQdyECA0AgACgCAEEBRg0ACyAAKAIARQRAIABBATYCACACEJYHIABBfzYCAAsLIANBEGokACAAKAIEIQAgAUEgaiQAIABBAWsLEgAgABCMBiIAQaDGAzYCACAAC8IFAQl/IwBBEGsiCSQAIAEQoAMjAEEQayIDJAAgAyABNgIMIAlBCGogA0EMahCeASEHIANBEGokACAAQQhqIgAQRiACTQRAAkAgABBGIgMgAkEBaiIBSQRAIwBBIGsiCiQAAkAgASADayIIIAAQMigCACAAKAIEa0ECdU0EQCAAIAgQmwcMAQsgABBeIQsgCkEIaiEBAn8gABBGIAhqIQUjAEEQayIEJAAgBCAFNgIMIAUgABCGByIDTQRAIAAQyAEiBSADQQF2SQRAIAQgBUEBdDYCCCAEQQhqIARBDGoQbygCACEDCyAEQRBqJAAgAwwBCxCVAwALIQMgABBGIQUjAEEQayIEJAAgBEEANgIMIAFBDGogCxDUASADBEAgASgCECADEIUHIQYLIAEgBjYCACABIAYgBUECdGoiBTYCCCABIAU2AgQgARA8IAYgA0ECdGo2AgAgBEEQaiQAIwBBEGsiBiQAIAYgAUEIaiAIEKwDIgQoAgAhAwNAIAQoAgQgA0cEQCABKAIQIAQoAgAQhAcgBCAEKAIAQQRqIgM2AgAMAQsLIAQQsgEgBkEQaiQAIAAQ8gIgABBeIAAoAgAgACgCBCABQQRqIgMQlAIgACADEEkgAEEEaiABQQhqEEkgABAyIAEQPBBJIAEgASgCBDYCACAAIAAQRhC4AiABKAIEIQMDQCADIAEoAghHBEAgASgCEBogASABKAIIQQRrNgIIDAELCyABKAIABEAgASgCECABKAIAIAEQxQYQmAcLCyAKQSBqJAAMAQsgASADSQRAIAAoAgAgAUECdGohASAAEEYhAyAAIAEQgwcgACADEK0DCwsLIAAgAhA6KAIABEAgACACEDooAgAQ4gIaCyAHELkBIQEgACACEDogATYCACAHKAIAIQAgB0EANgIAIAAEQCAAEOICGgsgCUEQaiQAC7gBAQF9IAIgARDjBSEDIAAgACoCACADIAEqAgCUkzgCACAAIAAqAgQgAyABKgIElJM4AgQgACAAKgIIIAMgASoCCJSTOAIIIAAgACoCDCADIAEqAgyUkzgCDCAAIAAqAhAgAyABKgIQlJM4AhAgACAAKgIUIAMgASoCFJSTOAIUIAAgACoCGCADIAEqAhiUkzgCGCAAIAAqAhwgAyABKgIclJM4AhwgACAAKgIgIAMgASoCIJSTOAIgCwgAIABBABB5CzIBAX8jAEEQayIDJAAgAyABNgIMIAAgA0EMahCeASIAQQRqIAIQngEaIANBEGokACAAC/oCAQZ/IAAoAgQhByAAKAIAIQYCQAJAIAAoAhAiBSgCuAMEQCAGIQQMAQsgAkEYSgRAIAIhCCAGIQQMAgsDQCAHRQRAIAUgBSgCGCgCDBEAAEUEQEEADwsgBSgCGCIEKAIEIQcgBCgCACEGCyAGQQFqIQQgB0EBayEHAkAgBi0AACIIQf8BRgRAA0AgB0UEQCAFIAUoAhgoAgwRAABFBEBBAA8LIAUoAhgiBCgCBCEHIAQoAgAhBAsgB0EBayEHIAQtAAAhBkH/ASEIIARBAWohBCAGQf8BRg0ACyAGDQELIAggAUEIdHIhASACQRFIIQkgBCEGIAJBCGoiCCECIAkNAQwDCwsgBSAGNgK4AwsgAiADTgRAIAIhCAwBCyAFKALUAygCKEUEQCAFKAIAIgNB+AA2AhQgBUF/IAMoAgQRAgAgBSgC1ANBATYCKAtBGSEIIAFBGSACa3QhAQsgACAINgIMIAAgATYCCCAAIAc2AgQgACAENgIAQQELCgAgACgCABDeBAsQACAAKAIAEOQEQRh0QRh1Cw0AIAAgAWpBAWsgAW0LDQAgACgCACABQRRsagsQACAAKAIEIAAoAgBrQQxtCwoAIAAoAgBBCGoLBwAgACAAlAskAQJ/IwBBEGsiAiQAIAAgARDxASEDIAJBEGokACABIAAgAxsLRAAgACABcyIAIABBAXZB1arVqgVxayIAQQJ2QbPmzJkDcSAAQbPmzJkDcWoiAEEEdiAAakGPnrz4AHFBgYKECGxBGHYLsgEBBX8CfyACQwAAAD+SIgKLQwAAAE9dBEAgAqgMAQtBgICAgHgLIQUgACgCFCEIQX8hBgJAAn8gAUMAAAA/kiIBi0MAAABPXQRAIAGoDAELQYCAgIB4CyAAKAIQaiIHQQBIDQAgByAAKAIIIglODQAgBSAIaiIFQQBIDQAgBSAAKAIMTg0AIAMgACgCACAFIAlsIAdqQQN0aiIAKgIAOAIAIAQgACoCBDgCAEEAIQYLIAYLDwAgACgCACAAKAIENgIECwkAIAAgARDfBAsJACAAIAEQ5QQLBQAQAAAL5gICBn8CfCMAQTBrIgEkACMAQRBrIgIkACAAKwMARAAAAAAAAAAAZkUEQEGAsgRB8gkQMEHPDxAwQYAdEDBBwwAQM0HxIBAwQZAkEDAQNBAAAAsgAhCfBSAAIAIoAgi3RI3ttaD3xrA+oiACKQMAuaA5AwggAkEQaiQAEJQGIQMgAUEgaiICENkFIAIQQCEEIABBEGoiBRBAIQYgAQJ8AkAgACsDACIHRAAAAAAAAAAAZgRAIAArAwgiCEQAAAAAAAAAAGZFDQEgCCAHoQwCC0GAsgRB8gkQMEHPDxAwQYAdEDBB0AAQM0HxIBAwQZAkEDAQNBAAAAtBgLIEQckrEDBBzw8QMEGAHRAwQdEAEDNB8SAQMEGQMBAwEDQQAAALRAAAAAAAQI9AojkDECABIAY2AgwgAUGl5AE2AgggASAENgIEIAFBzj82AgAgA0GQNiABENYFIAIQOBogBRA4GiABQTBqJAALCwAgACABNgIAIAALLQAgAkUEQCAAKAIEIAEoAgRGDwsgACABRgRAQQEPCyAAKAIEIAEoAgQQoAJFCyMBAX8gACgCACECIAAgATYCACACBEAgAiAAEFMoAgARAQALCw0AIAAoAgAQ3AQaIAALDQAgACgCABDjBBogAAsQACAAKAIEIAAoAgBrQRRtCwwAIAAgARCoAUEBcwssAQF/IAAQ8gIgACgCAARAIAAQ3QYgABAyGiAAKAIAIQEgABDIARogARAxCwsJACAAQRBqEHwLEAAgACgCBCAAKAIAa0EkbQsRACAAIAEgACgCACgCHBEDAAt1AQF+IAAgASAEfiACIAN+fCADQiCIIgIgAUIgiCIEfnwgA0L/////D4MiAyABQv////8PgyIBfiIFQiCIIAMgBH58IgNCIIh8IAEgAn4gA0L/////D4N8IgFCIIh8NwMIIAAgBUL/////D4MgAUIghoQ3AwALGAAgAC0AAEEgcUUEQCABIAIgABDdAxoLC2kBA38CQCAAIgFBA3EEQANAIAEtAABFDQIgAUEBaiIBQQNxDQALCwNAIAEiAkEEaiEBIAIoAgAiA0F/cyADQYGChAhrcUGAgYKEeHFFDQALA0AgAiIBQQFqIQIgAS0AAA0ACwsgASAAawttAQJ/IAAoAkwaIAAQ0QIaIAAgACgCDBEAABogAC0AAEEBcUUEQCAAKAI0IgEEQCABIAAoAjg2AjgLIAAoAjgiAgRAIAIgATYCNAsgAEGImgQoAgBGBEBBiJoEIAI2AgALIAAoAmAQMSAAEDELCwQAQQALWQECfyMAQRBrIgIkACAAEK0BBEAgACgCACEDIAAQ/QEaIAMQMQsgACABKAIINgIIIAAgASkCADcCACABQQAQnAEgAkEAOgAPIAEgAkEPahCbASACQRBqJAALUAEBfgJAIANBwABxBEAgASADQUBqrYYhAkIAIQEMAQsgA0UNACACIAOtIgSGIAFBwAAgA2utiIQhAiABIASGIQELIAAgATcDACAAIAI3AwgLbwEBfyMAQYACayIFJAAgBEGAwARxIAIgA0xyRQRAIAUgAUH/AXEgAiADayIDQYACIANBgAJJIgEbEDkaIAFFBEADQCAAIAVBgAIQgwEgA0GAAmsiA0H/AUsNAAsLIAAgBSADEIMBCyAFQYACaiQAC6EBAQJ/AkAgABA1RSACIAFrQQVIcg0AIAEgAhC+AyACQQRrIQQgABBAIgIgABA1aiEFAkADQAJAIAIsAAAhACABIARPDQAgAEEATCAAQf8ATnJFBEAgASgCACACLAAARw0DCyABQQRqIQEgAiAFIAJrQQFKaiECDAELCyAAQQBMIABB/wBOcg0BIAIsAAAgBCgCAEEBa0sNAQsgA0EENgIACwsMACAAIAEQ3wRBAXMLDAAgACABEOUEQQFzCw0AIAAoAgQgACgCAGsLYAAgAEKAgICAgICA+L9/NwMIIABCgICAgICAgPi/fzcDACAAQRBqIAEQlgEaIwBBEGsiASQAIAEQnwUgACABKAIIt0SN7bWg98awPqIgASkDALmgOQMAIAFBEGokACAACwkAIAAgATYCBAswAQJ9An9BASABKgIAIgIgACoCACIDXQ0AGkEAIAIgA14NABogASgCBCAAKAIESQsLCwAgAEG8uQQQywELxwYCCn8BfSMAQSBrIgQkACAEQQE2AhggBCABNgIcIAFBAE4EQCAEIAE2AgggBCAAQdwAaiIBIARBCGoiABBLNgIQIAQQRzYCCAJAIARBEGogABBPBEAgBEEIaiIFIAQoAhw2AgAgBSAEKAIYNgIEIwBBEGsiBiQAIAZBCGohCiMAQSBrIgAkACABEDwaIAUoAgAhByABEJQBIQMgAEEAOgAfAkACQCADRQ0AIAEgByADEF8iCBA6KAIAIgJFDQADQCACKAIAIgJFDQEgByACKAIERwRAIAIoAgQgAxBfIAhHDQILIAEQXiACQQhqIAUQjAJFDQALDAELIwBBEGsiCSQAIABBEGogARAyIgJBARDcBSAJQQhqIAJBABCtAhCsAiICKAIAIgtBCGogBSgCADYCACALIAUoAgQ2AgwgAhBTQQE6AAQgAigCACAHNgIEIAIoAgBBADYCACAJQRBqJAAgARA8KAIAIQIgARBeIQUCQCADBEAgAkEBarMgBSoCACADs5ReRQ0BCyAAIAMQiwJBAXMgA0EBdHI2AgwgAAJ/IAEQPCgCAEEBarMgARBeKgIAlY0iDEMAAIBPXSAMQwAAAABgcQRAIAypDAELQQALNgIIIAEgAEEMaiAAQQhqEG8oAgAQrwIgByABEJQBIgMQXyEICwJAIAEgCBA6KAIAIgJFBEAgACgCECABQQhqIgIoAgA2AgAgASAAKAIQNgIIIAEgCBA6IAI2AgAgACgCECgCAEUNASAAKAIQIQIgASAAKAIQKAIAKAIEIAMQXxA6IAI2AgAMAQsgACgCECACKAIANgIAIAIgACgCEDYCAAsgAEEQaiIDELkBIQIgARA8IgEgASgCAEEBajYCACAAQQE6AB8gAygCACEBIANBADYCACABBEAgAxBTIgMtAAQEQCADKAIAGgsgAQRAIAMoAgAaIAEQMQsLCyAKIABBEGogAhB3IABBH2oQrgIgAEEgaiQAIAQgBigCCBB3IAYtAAw6AAQgBkEQaiQADAELIARBEGoQbSIAIAAoAgRBAWo2AgQLIARBIGokAA8LQYCyBEGKiAEQMEH/gwEQMEGAHRAwQaICEDNB8SAQMEGbigEQMBA0EAAAC5EEAQN/AkACQAJAAkACQAJAAkACQAJAIAFBAE4EQCAAKAI0IgUgAUwNASACQQBIDQIgACgCOCIGIAJMDQMgA0EASA0EIAAoAjwiByADTA0FIARBAEgNBiAAKAJAIARMDQcgAiAFbCABaiIBIAAoAlQgA2xqIAAoAlggBGxqIgAgBCAHbCADaiAFIAZsbCABakoNCCAADwtBgLIEQfmMARAwQf+DARAwQYAdEDBBpQEQM0HxIBAwQcCOARAwEDQMCAtBgLIEQa+QARAwQf+DARAwQYAdEDBBpgEQM0HxIBAwQcCOARAwEDQMBwtBgLIEQeKSARAwQf+DARAwQYAdEDBBpwEQM0HxIBAwQZaTARAwEDQMBgtBgLIEQdeWARAwQf+DARAwQYAdEDBBqAEQM0HxIBAwQZaTARAwEDQMBQtBgLIEQcmYARAwQf+DARAwQYAdEDBBqQEQM0HxIBAwQY6bARAwEDQMBAtBgLIEQfmcARAwQf+DARAwQYAdEDBBqgEQM0HxIBAwQY6bARAwEDQMAwtBgLIEQaWfARAwQf+DARAwQYAdEDBBqwEQM0HxIBAwQa6gARAwEDQMAgtBgLIEQfKhARAwQf+DARAwQYAdEDBBrAEQM0HxIBAwQa6gARAwEDQMAQtBgLIEQaWlARAwQf+DARAwQYAdEDBBsAEQM0HxIBAwQZuKARAwEDQLEAAACwkAIAAQUygCAAsJACAAIAE2AgALIgEBfyMAQRBrIgIkACAAIAEgARCEARD7BiACQRBqJAAgAAsLACAAQcS5BBDLAQsRACAAIAEgASgCACgCFBECAAsPACAAIAAoAgAoAhARAAALEQAgACABIAAoAgAoAiwRAwALDAAgACABLQAAOgAACwkAIAAgAToACwvMCQIEfgR/IwBB8ABrIgokACAEQv///////////wCDIQUCQAJAIAFQIgkgAkL///////////8AgyIGQoCAgICAgMD//wB9QoCAgICAgMCAgH9UIAZQG0UEQCADQgBSIAVCgICAgICAwP//AH0iCEKAgICAgIDAgIB/ViAIQoCAgICAgMCAgH9RGw0BCyAJIAZCgICAgICAwP//AFQgBkKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCEEIAEhAwwCCyADUCAFQoCAgICAgMD//wBUIAVCgICAgICAwP//AFEbRQRAIARCgICAgICAIIQhBAwCCyABIAZCgICAgICAwP//AIWEUARAQoCAgICAgOD//wAgAiABIAOFIAIgBIVCgICAgICAgICAf4WEUCIJGyEEQgAgASAJGyEDDAILIAMgBUKAgICAgIDA//8AhYRQDQEgASAGhFAEQCADIAWEQgBSDQIgASAD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AKIiAaIgAERpUO7gQpP5PqJEJx4P6IfAVr+goiABREI6BeFTVaU/oiAARIFeDP3//9+/okQAAAAAAADwP6CgoLYLFQAgACABELUGIABBBGogAUEEahBJCxIAIAAQMigCACAAKAIAa0ECdQsSACAAKAIAIgAEQCAAEMIEGgsLEQAgACABKAIAEMIENgIAIAALQgEBfyAAKAIAIQIgARBhIQAgAkEIaiIBEEYgAEsEfyABIAAQOigCAEEARwVBAAtFBEAQdQALIAJBCGogABA6KAIACzYAIAIEfyACBEADQCAAIAEoAgA2AgAgAEEEaiEAIAFBBGohASACQQFrIgINAAsLQQAFIAALGgsQACACBEAgACABIAIQPhoLC/oBAgN+An8jAEEQayIFJAACfiABvSIDQv///////////wCDIgJCgICAgICAgAh9Qv/////////v/wBYBEAgAkI8hiEEIAJCBIhCgICAgICAgIA8fAwBCyACQoCAgICAgID4/wBaBEAgA0I8hiEEIANCBIhCgICAgICAwP//AIQMAQsgAlAEQEIADAELIAUgAkIAIAOnZ0EgaiACQiCIp2cgAkKAgICAEFQbIgZBMWoQiAEgBSkDACEEIAUpAwhCgICAgICAwACFQYz4ACAGa61CMIaECyECIAAgBDcDACAAIAIgA0KAgICAgICAgIB/g4Q3AwggBUEQaiQAC0IBAX8gASACbCEEIAQCfyADKAJMQQBIBEAgACAEIAMQ3QMMAQsgACAEIAMQ3QMLIgBGBEAgAkEAIAEbDwsgACABbgt3ACAAIAEqAgAgApQ4AgAgACABKgIEIAKUOAIEIAAgASoCCCAClDgCCCAAIAEqAgwgApQ4AgwgACABKgIQIAKUOAIQIAAgASoCFCAClDgCFCAAIAEqAhggApQ4AhggACABKgIcIAKUOAIcIAAgASoCICAClDgCIAs9AQF/IAAoAgQiAARAIAAQ4gIEQAJAIABBCGoiASgCAARAIAEQ9QNBf0cNAQsgACAAKAIAKAIQEQEACwsLCxEAIAAgACgCAEEIazYCACAACy4BAX8gABDsAiAAKAIABEAgABDTBiAAEDIaIAAoAgAhASAAELoBGiABEDELIAALDwAgABDnAUEEaiABEHcaC1kBAn8jAEEQayICJAAgABCtAQRAIAAoAgAhAyAAEP0BGiAD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AwwBCwsgACABNgIECygBAX9BBBAGEIQEIgBBkPYDNgIAIABBpPYDNgIAIABBlPcDQQ0QBQALDwAgACAAKAIAKAIkEQAACxEAIAAgASABKAIAKAIgEQIACxEAIAAgASABKAIAKAIsEQIACwwAIABBgoaAIDYAAAugAQEEfyMAQRBrIgckAAJAIABFDQAgBCgCDCEGIAIgAWsiCEEASgRAIAAgASAIEMMCIAhHDQELIAYgAyABayIBa0EAIAEgBkgbIgFBAEoEQCAAIAcgASAFEKIHIgUQQCABEMMCIQYgBRA4GiABIAZHDQELIAMgAmsiAUEASgRAIAAgAiABEMMCIAFHDQELIAQQnQcgACEJCyAHQRBqJAAgCQsuAQF/IwBBEGsiASQAIAFBCGogABBAIAAQNUECdGoQdygCACEAIAFBEGokACAACysBAX8jAEEQayIBJAAgAUEIaiAAEEAgABA1ahB3KAIAIQAgAUEQaiQAIAALFgAgACABIAIgAyAAKAIAKAIgEQgAGgspACAAQQh0QYCA/AdxIABBGHRyIABBCHZBgP4DcSAAQRh2cnIgACABGwsOACAAKAIIQf////8HcQtQAQF+AkAgA0HAAHEEQCACIANBQGqtiCEBQgAhAgwBCyADRQ0AIAJBwAAgA2uthiABIAOtIgSIhCEBIAIgBIghAgsgACABNwMAIAAgAjcDCAvbAQIBfwJ+QQEhBAJAIABCAFIgAUL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgAkIAUiADQv///////////wCDIgZCgICAgICAwP//AFYgBkKAgICAgIDA//8AURsNACAAIAKEIAUgBoSEUARAQQAPCyABIAODQgBZBEBBfyEEIAAgAlQgASADUyABIANRGw0BIAAgAoUgASADhYRCAFIPC0F/IQQgACACViABIANVIAEgA1EbDQAgACAChSABIAOFhEIAUiEECyAEC1IBAn9BjPsDKAIAIgEgAEEHakF4cSICaiEAAkAgAkEAIAAgAU0bDQAgAD8AQRB0SwRAIAAQG0UNAQtBjPsDIAA2AgAgAQ8LQYiZBEEwNgIAQX8LogEBAn8jAEGgAWsiBCQAQX8hBSAEIAFBAWtBACABGzYClAEgBCAAIARBngFqIAEbIgA2ApABIARBAEGQARA5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IAMgAToAACABEMMBC0F/ELsBRQ0AIABBADYCAAsLCQAgABCCAxAxC4sCAgd/AXwjAEEgayIGJAAgBiAEQQR0EDciCjYCECAKBEACQCAGIARBGGwQNyILNgIUIAtFDQAgBEEAIARBAEobIQwDQCAJIAxGRQRAIAogCUEEdCIHaiIIIAIgB2oiBysDADkDACAIIAcrAwg5AwggCyAJQRhsIghqIgcgAyAIaiIIKwMAOQMAIAcgCCsDCDkDCCAHIAgrAxA5AxAgCUEBaiEJDAELCyAGIAQ2AhggACgCACAGQRBqIAEgBSAGQQhqEN4CQQBIBEAgBkKAgICAwPD1y8EANwMICyAGKAIQEDEgBigCFBAxIAYrAwghDSAGQSBqJAAgDQ8LC0EAQQNB/g1BABA2QQEQAQALCAAgACgCEEULCQAgABCEAxAxCwoAIABBGHRBGHULFAAgAEHolAM2AgAgAEEEahBFIAALDAAgABDNAhogABAxCwkAIAAgARDwBAvTAwICfgJ/IwBBIGsiBCQAAkAgAUL///////////8AgyIDQoCAgICAgMCAPH0gA0KAgICAgIDA/8MAfVQEQCABQgSGIABCPIiEIQMgAEL//////////w+DIgBCgYCAgICAgIAIWgRAIANCgYCAgICAgIDAAHwhAgwCCyADQoCAgICAgICAQH0hAiAAQoCAgICAgICACFINASACIANCAYN8IQIMAQsgAFAgA0KAgICAgIDA//8AVCADQoCAgICAgMD//wBRG0UEQCABQgSGIABCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiADQv///////7//wwBWDQBCACECIANCMIinIgVBkfcASQ0AIARBEGogACABQv///////z+DQoCAgICAgMAAhCICIAVBgfcAaxCIASAEIAAgAkGB+AAgBWsQ/gEgBCkDCEIEhiAEKQMAIgBCPIiEIQIgBCkDECAEKQMYhEIAUq0gAEL//////////w+DhCIAQoGAgICAgICACFoEQCACQgF8IQIMAQsgAEKAgICAgICAgAhSDQAgAkIBgyACfCECCyAEQSBqJAAgAiABQoCAgICAgICAgH+DhL8LRQEBfyMAQRBrIgUkACAFIAEgAiADIARCgICAgICAgICAf4UQnQEgBSkDACEBIAAg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ACABEEoLFwEBfyAAEIABIQEgABDaBiAAIAEQ2AYLBABBAQsxAQF/IAAQ0gYgACgCAARAIAAgACgCABDQBiAAEDIaIAAoAgAhASAAEJACGiABEDELCywBAX8gABDbBiAAKAIABEAgABDaBiAAEDIaIAAoAgAhASAAEO8BGiABEDELCxgBAX8gABBGIQIgACABEMgGIAAgAhCtAwtUAQJ/IwBBIGsiAiQAAkAgABDvASABSQRAIAAQ1AYgAUkNASAAEDIhAyAAIAJBCGogASAAEIABIAMQkAQiABCOBCAAEI0ECyACQSBqJAAPCxCRAgAL5AcBB38gASAAEKIBIgJLBEAjAEEgayIIJAACQCABIAJrIgUgABAyKAIAIAAoAgRrQQV1TQRAIwBBEGsiAyQAIAMgADYCACADIAAoAgQiATYCBCADIAEgBUEFdGo2AgggAygCBCECIAMoAgghAQNAIAEgAkYEQCADEHIgA0EQaiQABSAAEDIaIAIQzgYgAyACQSBqIgI2AgQMAQsLDAELIAAQMiEHIAhBCGohAgJ/IAAQogEgBWohAyMAQRBrIgYkACAGIAM2AgwjAEEQayIEJAAgABAyGiAEQf///z82AgwgBEH/////BzYCCCAEQQxqIARBCGoQlQIoAgAhASAEQRBqJAAgASADTwRAIAAQkAIiAyABQQF2SQRAIAYgA0EBdDYCCCAGQQhqIAZBDGoQbygCACEBCyAGQRBqJAAgAQwBCxCRAgALIQYgABCiASEDQQAhASMAQRBrIgQkACAEQQA2AgwgAkEMaiAHENQBIAYEQCACKAIQGiAGQf///z9LBEAQ8wEACyAGQQV0EFshAQsgAiABNgIAIAIgASADQQV0aiIDNgIIIAIgAzYCBCACEDwgASAGQQV0ajYCACAEQRBqJAAjAEEQayIDJAAgAyACKAIINgIAIAIoAgghASADIAJBCGo2AgggAyABIAVBBXRqNgIEIAMoAgAhBQNAIAMoAgQgBUcEQCACKAIQGiADKAIAEM4GIAMgAygCAEEgaiIFNgIADAELCyADELIBIANBEGokACAAENIGIAAQMhogACgCACEDIAAoAgQhBSACQQRqIQcDQCADIAVHBEAgBygCAEEgayIEQgA3AgAgBEIANwIQIARCADcCCCAEQRhqIgEQswIaIAQgBUEgayIFKAIANgIA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CwALIAQgAjsBACACIANODQVBACEKIAxBACAMQQBKGyELIAAhAQNAIAogC0YNBiADIAEoAgBGBEAgASACNgIACyAKQQFqIQogAUEEaiEBDAALAAsgBEECay4BACIBQQBKBEAgA0ECdCAAakEEaygCACICIAFB//8DcUECdCAAakEEaygCACIDSgRAIAQgAzsBAEEAIQogDEEAIAxBAEobIQsgACEBA0AgCiALRgRAIAMhAgwHCyACIAEoAgBGBEAgASADNgIACyAKQQFqIQogAUEEaiEBDAALAAsgBCACOwEAIAIgA04NBEEAIQogDEEAIAxBAEobIQsgACEBA0AgCiALRg0FIAMgASgCAEYEQCABIAI2AgALIApBAWohCiABQQRqIQEMAAsACyAEIAM7AQAgA0EcbCAQaiICQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACAOajYCACAJIAJBEGsiASgCAEgEQCABIAk2AgALIAJBBGsgDjYCAAwFCyACQQBKBEAgBCACOwEAIAFBHGwgEGoiAkEcayIBIAEoAgBBAWo2AgAgAkEYayIBIAEoAgAgCWo2AgAgAkEUayIBIAEoAgAgDmo2AgAgCSACQQxrIgEoAgBKBEAgASAJNgIACyACQQRrIA42AgAMBQsgBEECay8BACICQRB0QRB1IgFBAEoEQCAEIAE7AQAgAkEcbCAQaiICQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACAOajYCACACQQxrIgEoAgAgCU4NBSABIAk2AgAMBQsgDEGAgAJOBEBBAEEDQeQLQQAQNkF/IQoMCQsgBCAMQQFqIgE7AQAgACAMQQJ0aiABQRB0QRB1NgIAIBAgDEEcbGoiAiAONgIYIAIgDjYCFCACIAk2AhAgAiAJNgIMIAIgDjYCCCACIAk2AgQgAkEBNgIAIAEhDAwECyAEQQA7AQAMAwsgBEEEaiEEIA5BAWohDiAGIAhqQQRqIQYMBQsgAkEQdEEQdUEcbCAQaiICQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACAOajYCAAwBCyACQRB0QRB1QRxsIBBqIgJBBGsgDjYCACACQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACAOajYCAAsgBEECaiEEIAZBAmohBiAJQQFqIQkMAAsACwsgDEEAIAxBAEobQQFqIQNBASEBQQEhBiAAIQkDQCABIANHBEACQCABIAkoAgAiAkYEQCAGIgpBAWohBgwBCyACQQJ0IABqQQRrKAIAIQoLIAkgCjYCACAJQQRqIQkgAUEBaiEBDAELCyAHIAZBAWsiCTYCCEEAIAlFDQEaIAdBjIAIaiEIIAdBDGpBACAJQQJ0EDkhBiAHQZCAKGpBACAJQQR0EDkhBUEAIQEDQCABIAlOBEBBACEJIAxBACAMQQBKGyEEA0AgBCAJRgRAQQAhCiAHKAIIIgBBACAAQQBKGyEAQQAhAQNAIAAgAUYNBSAFIAFBBHRqIgIgAisDACAGIAFBAnRqKAIAtyIXozkDACACIAIrAwggF6M5AwggAUEBaiEBDAALAAsgBiAAIAlBAnRqKAIAQQFrIgJBAnQiA2oiASABKAIAIBAgCUEcbGoiDCgCAGo2AgAgBSACQQR0IgFqIgIgAisDACAMKAIEt6A5AwAgAiACKwMIIAwoAgi3oDkDCCAMKAIMIgIgASAIaiIBKAIASARAIAEgAjYCAAsgDCgCECICIAggA0ECdCIDQQRyaiIBKAIASgRAIAEgAjYCAAsgDCgCFCICIAggA0EIcmoiASgCAEgEQCABIAI2AgALIAwoAhgiAiAIIANBDHJqIgEoAgBKBEAgASACNgIACyAJQQFqIQkMAAsABSAIIAFBBHRqIgIgEjYCACACQQA2AgQgAiAUNgIIIAJBADYCDCABQQFqIQEgBygCCCEJDAELAAsACyAKCw8LIAgEQAJ/IAAhBEEAIQMgASIGQQAgAUEAShshACAHKAIAIgEgAiIFQQFrIgsgBmxBAXRqIQkgASECA0AgACADRwRAIAlBADsBACACQQA7AQAgA0EBaiEDIAJBAmohAiAJQQJqIQkMAQsLIAVBACAFQQBKGyEMIAEgBkEBayIKQQF0aiEJQQAhAyABIQIDQCADIAxHBEAgCUEAOwEAIAJBADsBACADQQFqIQMgCSAGQQF0IgBqIQkgACACaiECDAELCyALQQEgC0EBShshEiAHQZCA0ABqIQ0gB0GQgMgAaiEAIAggBkEBaiICaiEIIAIgBGohDiAKQQEgCkEBShsiFEEBayEQIAEgAkEBdGohAkEAIAZrQQF0IRVBACEMQQEhDwJAA0AgDyASRwRAIA4gEGohFiAIIBBqIRFBASEJA0ACQAJAAkAgCSAURwRAIA4tAAAgCC0AAEsEQCACIBVqIgQvAQAiA0EQdEEQdSIBQQBKBEAgAiABOwEAIANBHGwgDWoiA0EEayAPNgIAIANBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAlqNgIAIANBFGsiASABKAIAIA9qNgIADAULIARBAmsvAQAiA0EQdEEQdSEBIAQuAQIiBEEASgRAIAFBAEoEQCAEQQJ0IABqQQRrKAIAIgEgA0ECdCAAakEEaygCACIESgRAIAIgBDsBAEEAIQogDEEAIAxBAEobIQsgACEDA0AgCiALRgRAIAQhAQwICyABIAMoAgBGBEAgAyAENgIACyAKQQFqIQogA0EEaiEDDAALAAsgAiABOwEAIAEgBE4NBUEAIQogDEEAIAxBAEobIQsgACEDA0AgCiALRg0GIAQgAygCAEYEQCADIAE2AgALIApBAWohCiADQQRqIQMMAAsACyACQQJrLgEAIgNBAEoEQCAEQQJ0IABqQQRrKAIAIgEgA0H//wNxQQJ0IABqQQRrKAIAIgRKBEAgAiAEOwEAQQAhCiAMQQAgDEEAShshCyAAIQMDQCAKIAtGBEAgBCEBDAcLIAEgAygCAEYEQCADIAQ2AgALIApBAWohCiADQQRqIQMMAAsACyACIAE7AQAgASAETg0EQQAhCiAMQQAgDEEAShshCyAAIQMDQCAKIAtGDQUgBCADKAIARgRAIAMgATYCAAsgCkEBaiEKIANBBGohAwwACwALIAIgBDsBACAEQRxsIA1qIgNBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAlqNgIAIANBFGsiASABKAIAIA9qNgIAIAkgA0EQayIBKAIASARAIAEgCTYCAAsgA0EEayAPNgIADAULIAFBAEoEQCACIAE7AQAgA0EcbCANaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACAPajYCACAJIANBDGsiASgCAEoEQCABIAk2AgALIANBBGsgDzYCAAwFCyACQQJrLwEAIgNBEHRBEHUiAUEASgRAIAIgATsBACADQRxsIA1qIgNBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAlqNgIAIANBFGsiASABKAIAIA9qNgIAIANBDGsiASgCACAJTg0FIAEgCTYCAAwFCyAMQYCAAk4EQEEAQQNB5AtBABA2QX8hCgwJCyACIAxBAWoiATsBACAAIAxBAnRqIAFBEHRBEHU2AgAgDSAMQRxsaiIDIA82AhggAyAPNgIUIAMgCTYCECADIAk2AgwgAyAPNgIIIAMgCTYCBCADQQE2AgAgASEMDAQLIAJBADsBAAwDCyACQQRqIQIgEUECaiEIIBZBAmohDiAPQQFqIQ8MBQsgAUEQdEEQdUEcbCANaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACAPajYCAAwBCyABQRB0QRB1QRxsIA1qIgNBBGsgDzYCACADQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACAPajYCAAsgAkECaiECIAhBAWohCCAOQQFqIQ4gCUEBaiEJDAALAAsLIAxBACAMQQBKG0EBaiECQQEhA0EBIQggACEJA0AgAiADRwRAAkAgAyAJKAIAIgFGBEAgCCIKQQFqIQgMAQsgAUECdCAAakEEaygCACEKCyAJIAo2AgAgCUEEaiEJIANBAWohAwwBCwsgByAIQQFrIgk2AghBACAJRQ0BGiAHQYyACGohCiAHQQxqQQAgCUECdBA5IQsgB0GQgChqQQAgCUEEdBA5IQhBACEDA0AgAyAJTgRAQQAhCSAMQQAgDEEAShshBANAIAQgCUYEQEEAIQogBygCCCIAQQAgAEEAShshAEEAIQMDQCAAIANGDQUgCCADQQR0aiIBIAErAwAgCyADQQJ0aigCALciF6M5AwAgASABKwMIIBejOQMIIANBAWohAwwACwALIAsgACAJQQJ0aigCAEEBayICQQJ0IgNqIgEgASgCACANIAlBHGxqIgUoAgBqNgIAIAggAkEEdCIBaiICIAIrAwAgBSgCBLegOQMAIAIgAisDCCAFKAIIt6A5AwggBSgCDCICIAEgCmoiASgCAEgEQCABIAI2AgALIAUoAhAiAiAKIANBAnQiA0EEcmoiASgCAEoEQCABIAI2AgALIAUoAhQiAiAKIANBCHJqIgEoAgBIBEAgASACNgIACyAFKAIYIgIgCiADQQxyaiIBKAIASgRAIAEgAjYCAAsgCUEBaiEJDAALAAUgCiADQQR0aiIBIAY2AgAgAUEANgIEIAEgBTYCCCABQQA2AgwgA0EBaiEDIAcoAgghCQwBCwALAAsgCgsPCyAGRQRAAn8gACEEQQAhAyABIghBACABQQBKGyEAIAcoAgAiASACIgZBAWsiCSAIbEEBdGohCyABIQIDQCAAIANHBEAgC0EAOwEAIAJBADsBACADQQFqIQMgAkECaiECIAtBAmohCwwBCwsgBkEAIAZBAEobIQwgASAIQQFrIgpBAXRqIQtBACEDIAEhAgNAIAMgDEcEQCALQQA7AQAgAkEAOwEAIANBAWohAyALIAhBAXQiAGohCyAAIAJqIQIMAQsLIAlBASAJQQFKGyEQIAdBkIDQAGohDiAHQZCAyABqIQAgBCAIQQFqIgJqIQwgCkEBIApBAUobIhJBAWshFCABIAJBAXRqIQJBACAIa0EBdCEVQQAhCkEBIQ0CQANAIA0gEEcEQCAMIBRqIRZBASELA0ACQAJAAkAgCyASRwRAIAUgDC0AAEgEQCACIBVqIgQvAQAiA0EQdEEQdSIBQQBKBEAgAiABOwEAIANBHGwgDmoiA0EEayANNgIAIANBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA1qNgIADAULIARBAmsvAQAiA0EQdEEQdSEBIAQuAQIiBEEASgRAIAFBAEoEQCAEQQJ0IABqQQRrKAIAIgEgA0ECdCAAakEEaygCACIESgRAIAIgBDsBAEEAIQkgCkEAIApBAEobIREgACEDA0AgCSARRgRAIAQhAQwICyABIAMoAgBGBEAgAyAENgIACyAJQQFqIQkgA0EEaiEDDAALAAsgAiABOwEAIAEgBE4NBUEAIQkgCkEAIApBAEobIREgACEDA0AgCSARRg0GIAQgAygCAEYEQCADIAE2AgALIAlBAWohCSADQQRqIQMMAAsACyACQQJrLgEAIgNBAEoEQCAEQQJ0IABqQQRrKAIAIgEgA0H//wNxQQJ0IABqQQRrKAIAIgRKBEAgAiAEOwEAQQAhCSAKQQAgCkEAShshESAAIQMDQCAJIBFGBEAgBCEBDAcLIAEgAygCAEYEQCADIAQ2AgALIAlBAWohCSADQQRqIQMMAAsACyACIAE7AQAgASAETg0EQQAhCSAKQQAgCkEAShshESAAIQMDQCAJIBFGDQUgBCADKAIARgRAIAMgATYCAAsgCUEBaiEJIANBBGohAwwACwALIAIgBDsBACAEQRxsIA5qIgNBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA1qNgIAIAsgA0EQayIBKAIASARAIAEgCzYCAAsgA0EEayANNgIADAULIAFBAEoEQCACIAE7AQAgA0EcbCAOaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACALajYCACADQRRrIgEgASgCACANajYCACALIANBDGsiASgCAEoEQCABIAs2AgALIANBBGsgDTYCAAwFCyACQQJrLwEAIgNBEHRBEHUiAUEASgRAIAIgATsBACADQRxsIA5qIgNBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA1qNgIAIANBDGsiASgCACALTg0FIAEgCzYCAAwFCyAKQYCAAk4EQEEAQQNB5AtBABA2QX8hCQwJCyACIApBAWoiATsBACAAIApBAnRqIAFBEHRBEHU2AgAgDiAKQRxsaiIDIA02AhggAyANNgIUIAMgCzYCECADIAs2AgwgAyANNgIIIAMgCzYCBCADQQE2AgAgASEKDAQLIAJBADsBAAwDCyACQQRqIQIgFkECaiEMIA1BAWohDQwFCyABQRB0QRB1QRxsIA5qIgNBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA1qNgIADAELIAFBEHRBEHVBHGwgDmoiA0EEayANNgIAIANBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA1qNgIACyACQQJqIQIgDEEBaiEMIAtBAWohCwwACwALCyAKQQAgCkEAShtBAWohAkEBIQNBASEMIAAhCwNAIAIgA0cEQAJAIAMgCygCACIBRgRAIAwiCUEBaiEMDAELIAFBAnQgAGpBBGsoAgAhCQsgCyAJNgIAIAtBBGohCyADQQFqIQMMAQsLIAcgDEEBayILNgIIQQAgC0UN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AyACQQJqIQIgCUECaiEJDAELCyAFQQAgBUEAShshByABIAZBAWsiCkEBdGohCUEAIQMgASECA0AgAyAHRwRAIAlBADsBACACQQA7AQAgA0EBaiEDIAkgBkEBdCIAaiEJIAAgAmohAgwBCwsgC0EBIAtBAUobIRIgDEGQgNAAaiEPIAxBkIDIAGohACAIIAZBAWoiAmohByACIARqIQ4gDCgCBCACaiENIApBASAKQQFKGyIUQQFrIRAgASACQQF0aiECQQAgBmtBAXQhFUEAIQhBASETAkADQCASIBNHBEAgDiAQaiEWIAcgEGohEUEBIQkDQAJAAkACQCAJIBRHBEAgDi0AACAHLQAATQRAIA1B/wE6AAAgAiAVaiIELwEAIgNBEHRBEHUiAUEASgRAIAIgATsBACADQRxsIA9qIgNBBGsgEzYCACADQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACATajYCAAwFCyAEQQJrLwEAIgNBEHRBEHUhASAELgECIgRBAEoEQCABQQBKBEAgBEECdCAAakEEaygCACIBIANBAnQgAGpBBGsoAgAiBEoEQCACIAQ7AQBBACEKIAhBACAIQQBKGyELIAAhAwNAIAogC0YEQCAEIQEMCAsgASADKAIARgRAIAMgBDYCAAsgCkEBaiEKIANBBGohAwwACwALIAIgATsBACABIARODQVBACEKIAhBACAIQQBKGyELIAAhAwNAIAogC0YNBiAEIAMoAgBGBEAgAyABNgIACyAKQQFqIQogA0EEaiEDDAALAAsgAkECay4BACIDQQBKBEAgBEECdCAAakEEaygCACIBIANB//8DcUECdCAAakEEaygCACIESgRAIAIgBDsBAEEAIQogCEEAIAhBAEobIQsgACEDA0AgCiALRgRAIAQhAQwHCyABIAMoAgBGBEAgAyAENgIACyAKQQFqIQogA0EEaiEDDAALAAsgAiABOwEAIAEgBE4NBEEAIQogCEEAIAhBAEobIQsgACEDA0AgCiALRg0FIAQgAygCAEYEQCADIAE2AgALIApBAWohCiADQQRqIQMMAAsACyACIAQ7AQAgBEEcbCAPaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACATajYCACAJIANBEGsiASgCAEgEQCABIAk2AgALIANBBGsgEzYCAAwFCyABQQBKBEAgAiABOwEAIANBHGwgD2oiA0EcayIBIAEoAgBBAWo2AgAgA0EYayIBIAEoAgAgCWo2AgAgA0EUayIBIAEoAgAgE2o2AgAgCSADQQxrIgEoAgBKBEAgASAJNgIACyADQQRrIBM2AgAMBQsgAkECay8BACIDQRB0QRB1IgFBAEoEQCACIAE7AQAgA0EcbCAPaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACATajYCACADQQxrIgEoAgAgCU4NBSABIAk2AgAMBQsgCEGAgAJOBEBBAEEDQeQLQQAQNkF/IQoMCQsgAiAIQQFqIgE7AQAgACAIQQJ0aiABQRB0QRB1NgIAIA8gCEEcbGoiAyATNgIYIAMgEzYCFCADIAk2AhAgAyAJNgIMIAMgEzYCCCADIAk2AgQgA0EBNgIAIAEhCAwECyACQQA7AQAgDUEAOgAADAMLIA1BAmohDSACQQRqIQIgEUECaiEHIBZBAmohDiATQQFqIRMMBQsgAUEQdEEQdUEcbCAPaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACATajYCAAwBCyABQRB0QRB1QRxsIA9qIgNBBGsgEzYCACADQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACAJajYCACADQRRrIgEgASgCACATajYCAAsgDUEBaiENIAJBAmohAiAHQQFqIQcgDkEBaiEOIAlBAWohCQwACwALCyAIQQAgCEEAShtBAWohAkEBIQNBASEHIAAhCQNAIAIgA0cEQAJAIAMgCSgCACIBRgRAIAciCkEBaiEHDAELIAFBAnQgAGpBBGsoAgAhCgsgCSAKNgIAIAlBBGohCSADQQFqIQMMAQsLIAwgB0EBayIJNgIIQQAgCUUNARogDEGMgAhqIQogDEEMakEAIAlBAnQQOSELIAxBkIAoakEAIAlBBHQQOSEHQQAhAwNAIAMgCU4EQEEAIQkgCEEAIAhBAEobIQQDQCAEIAlGBEBBACEKIAwoAggiAEEAIABBAEobIQBBACEDA0AgACADRg0FIAcgA0EEdGoiASABKwMAIAsgA0ECdGooAgC3IhejOQMAIAEgASsDCCAXozkDCCADQQFqIQMMAAsACyALIAAgCUECdGooAgBBAWsiAkECdCIDaiIBIAEoAgAgDyAJQRxsaiIFKAIAajYCACAHIAJBBHQiAWoiAiACKwMAIAUoAgS3oDkDACACIAIrAwggBSgCCLegOQMIIAUoAgwiAiABIApqIgEoAgBIBEAgASACNgIACyAFKAIQIgIgCiADQQJ0IgNBBHJqIgEoAgBKBEAgASACNgIACyAFKAIUIgIgCiADQQhyaiIBKAIASARAIAEgAjYCAAsgBSgCGCICIAogA0EMcmoiASgCAEoEQCABIAI2AgALIAlBAWohCQwACwAFIAogA0EEdGoiASAGNgIAIAFBADYCBCABIAU2AgggAUEANgIMIANBAWohAyAMKAIIIQkMAQsACwALIAoLDwsgBkUEQAJ/IAAhBEEAIQMgASIIQQAgAUEAShshACAHIgwoAgAiASACIgZBAWsiCSAIbEEBdGohCyABIQIDQCAAIANHBEAgC0EAOwEAIAJBADsBACADQQFqIQMgAkECaiECIAtBAmohCwwBCwsgBkEAIAZBAEobIQcgASAIQQFrIgpBAXRqIQtBACEDIAEhAgNAIAMgB0cEQCALQQA7AQAgAkEAOwEAIANBAWohAyALIAhBAXQiAGohCyAAIAJqIQIMAQsLIAlBASAJQQFKGyEQIAxBkIDQAGohDSAMQZCAyABqIQAgBCAIQQFqIgJqIQcgDCgCBCACaiEOIApBASAKQQFKGyISQQFrIRQgASACQQF0aiECQQAgCGtBAXQhFUEAIQpBASEPAkADQCAPIBBHBEAgByAUaiEWQQEhCwNAAkACQAJAIAsgEkcEQCAFIActAABOBEAgDkH/AToAACACIBVqIgQvAQAiA0EQdEEQdSIBQQBKBEAgAiABOwEAIANBHGwgDWoiA0EEayAPNgIAIANBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA9qNgIADAULIARBAmsvAQAiA0EQdEEQdSEBIAQuAQIiBEEASgRAIAFBAEoEQCAEQQJ0IABqQQRrKAIAIgEgA0ECdCAAakEEaygCACIESgRAIAIgBDsBAEEAIQkgCkEAIApBAEobIREgACEDA0AgCSARRgRAIAQhAQwICyABIAMoAgBGBEAgAyAENgIACyAJQQFqIQkgA0EEaiEDDAALAAsgAiABOwEAIAEgBE4NBUEAIQkgCkEAIApBAEobIREgACEDA0AgCSARRg0GIAQgAygCAEYEQCADIAE2AgALIAlBAWohCSADQQRqIQMMAAsACyACQQJrLgEAIgNBAEoEQCAEQQJ0IABqQQRrKAIAIgEgA0H//wNxQQJ0IABqQQRrKAIAIgRKBEAgAiAEOwEAQQAhCSAKQQAgCkEAShshESAAIQMDQCAJIBFGBEAgBCEBDAcLIAEgAygCAEYEQCADIAQ2AgALIAlBAWohCSADQQRqIQMMAAsACyACIAE7AQAgASAETg0EQQAhCSAKQQAgCkEAShshESAAIQMDQCAJIBFGDQUgBCADKAIARgRAIAMgATYCAAsgCUEBaiEJIANBBGohAwwACwALIAIgBDsBACAEQRxsIA1qIgNBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA9qNgIAIAsgA0EQayIBKAIASARAIAEgCzYCAAsgA0EEayAPNgIADAULIAFBAEoEQCACIAE7AQAgA0EcbCANaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACALajYCACADQRRrIgEgASgCACAPajYCACALIANBDGsiASgCAEoEQCABIAs2AgALIANBBGsgDzYCAAwFCyACQQJrLwEAIgNBEHRBEHUiAUEASgRAIAIgATsBACADQRxsIA1qIgNBHGsiASABKAIAQQFqNgIAIANBGGsiASABKAIAIAtqNgIAIANBFGsiASABKAIAIA9qNgIAIANBDGsiASgCACALTg0FIAEgCzYCAAwFCyAKQYCAAk4EQEEAQQNB5AtBABA2QX8hCQwJCyACIApBAWoiATsBACAAIApBAnRqIAFBEHRBEHU2AgAgDSAKQRxsaiIDIA82AhggAyAPNgIUIAMgCzYCECADIAs2AgwgAyAPNgIIIAMgCzYCBCADQQE2AgAgASEKDAQLIAJBADsBACAOQQA6AAAMAwsgDkECaiEOIAJBBGohAiAWQQJqIQcgD0EBaiEPDAULIAFBEHRBEHVBHGwgDWoiA0EcayIBIAEoAgBBAWo2AgAgA0EYayIBIAEoAgAgC2o2AgAgA0EUayIBIAEoAgAgD2o2AgAMAQsgAUEQdEEQdUEcbCANaiIDQQRrIA82AgAgA0EcayIBIAEoAgBBAWo2AgAgA0EYayIBIAEoAgAgC2o2AgAgA0EUayIBIAEoAgAgD2o2AgALIA5BAWohDiACQQJqIQIgB0EBaiEHIAtBAWohCwwACwALCyAKQQAgCkEAShtBAWohAkEBIQNBASEHIAAhCwNAIAIgA0cEQAJAIAMgCygCACIBRgRAIAciCUEBaiEHDAELIAFBAnQgAGpBBGsoAgAhCQsgCyAJNgIAIAtBBGohCyADQQFqIQMMAQsLIAwgB0EBayILNgIIQQAgC0UNARogDEGMgAhqIQkgDEEMakEAIAtBAnQQOSEHIAxBkIAoakEAIAtBBHQQOSEFQQAhAwNAIAMgC04EQEEAIQsgCkEAIApBAEobIQQDQCAEIAtGBEBBACEJIAwoAggiAEEAIABBAEobIQBBACEDA0AgACADRg0FIAUgA0EEdGoiASABKwMAIAcgA0ECdGooAgC3IhejOQMAIAEgASsDCCAXozkDCCADQQFqIQMMAAsACyAHIAAgC0ECdGooAgBBAWsiAkECdCIDaiIBIAEoAgAgDSALQRxsaiIGKAIAajYCACAFIAJBBHQiAWoiAiACKwMAIAYoAgS3oDkDACACIAIrAwggBigCCLegOQMIIAYoAgwiAiABIAlqIgEoAgBIBEAgASACNgIACyAGKAIQIgIgCSADQQJ0IgNBBHJqIgEoAgBKBEAgASACNgIACyAGKAIUIgIgCSADQQhyaiIBKAIASARAIAEgAjYCAAsgBigCGCICIAkgA0EMcmoiASgCAEoEQCABIAI2AgALIAtBAWohCwwACwAFIAkgA0EEdGoiASAINgIAIAFBADYCBCABIAY2AgggAUEANgIMIANBAWohAyAMKAIIIQsMAQsACwALIAkLDwsCfyAAIQYgASIIQQJtIhBBACAQQQBKGyEAIAcoAgAiAyACQQJtIhRBAWsiCiAQbEEBdGohCUEAIQEgAyEEA0AgACABRwRAIAlBADsBACAEQQA7AQAgAUEBaiEBIARBAmohBCAJQQJqIQkMAQsLIBRBACAUQQBKGyECIAMgEEEBayIMQQF0aiEJQQAhASADIQQDQCABIAJHBEAgCUEAOwEAIARBADsBACABQQFqIQEgCSAQQQF0IgBqIQkgACAEaiEEDAELCyAKQQEgCkEBShshFSAMQQEgDEEBShshFiAHQZCA0ABqIQ4gB0GQgMgAaiEAIBBBAWoiASAHKAIEaiEMIAhBAXQgBmpBAmohEiADIAFBAXRqIQRBACAQa0EBdCERQQAhBkEBIQ0CQANAIA0gFUcEQEEBIQkDQAJAAkACQCAJIBZHBEAgBSASLQAATgRAIAxB/wE6AAAgBCARaiIDLwEAIgJBEHRBEHUiAUEASgRAIAQgATsBACACQRxsIA5qIgJBBGsgDTYCACACQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACANajYCAAwFCyADQQJrLwEAIgFBEHRBEHUhAiADLgECIgNBAEoEQCACQQBKBEAgA0ECdCAAakEEaygCACICIAFBAnQgAGpBBGsoAgAiA0oEQCAEIAM7AQBBACEKIAZBACAGQQBKGyELIAAhAQNAIAogC0YEQCADIQIMCAsgAiABKAIARgRAIAEgAzYCAAsgCkEBaiEKIAFBBGohAQwACwALIAQgAjsBACACIANODQVBACEKIAZBACAGQQBKGyELIAAhAQNAIAogC0YNBiADIAEoAgBGBEAgASACNgIACyAKQQFqIQogAUEEaiEBDAALAAsgBEECay4BACIBQQBKBEAgA0ECdCAAakEEaygCACICIAFB//8DcUECdCAAakEEaygCACIDSgRAIAQgAzsBAEEAIQogBkEAIAZBAEobIQsgACEBA0AgCiALRgRAIAMhAgwHCyACIAEoAgBGBEAgASADNgIACyAKQQFqIQogAUEEaiEBDAALAAsgBCACOwEAIAIgA04NBEEAIQogBkEAIAZBAEobIQsgACEBA0AgCiALRg0FIAMgASgCAEYEQCABIAI2AgALIApBAWohCiABQQRqIQEMAAsACyAEIAM7AQAgA0EcbCAOaiICQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACANajYCACAJIAJBEGsiASgCAEgEQCABIAk2AgALIAJBBGsgDTYCAAwFCyACQQBKBEAgBCACOwEAIAFBHGwgDmoiAkEcayIBIAEoAgBBAWo2AgAgAkEYayIBIAEoAgAgCWo2AgAgAkEUayIBIAEoAgAgDWo2AgAgCSACQQxrIgEoAgBKBEAg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IAcgFGohFkEBIQsDQAJAAkACQCALIBJHBEAgBSAHLQAASARAIA5B/wE6AAAgAiAVaiIELwEAIgNBEHRBEHUiAUEASgRAIAIgATsBACADQRxsIA1qIgNBBGsgDzYCACADQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACALajYCACADQRRrIgEgASgCACAPajYCAAwFCyAEQQJrLwEAIgNBEHRBEHUhASAELgECIgRBAEoEQCABQQBKBEAgBEECdCAAakEEaygCACIBIANBAnQgAGpBBGsoAgAiBEoEQCACIAQ7AQBBACEJIApBACAKQQBKGyERIAAhAwNAIAkgEUYEQCAEIQEMCAsgASADKAIARgRAIAMgBDYCAAsgCUEBaiEJIANBBGohAwwACwALIAIgATsBACABIARODQVBACEJIApBACAKQQBKGyERIAAhAwNAIAkgEUYNBiAEIAMoAgBGBEAgAyABNgIACyAJQQFqIQkgA0EEaiEDDAALAAsgAkECay4BACIDQQBKBEAgBEECdCAAakEEaygCACIBIANB//8DcUECdCAAakEEaygCACIESgRAIAIgBDsBAEEAIQkgCkEAIApBAEobIREgACEDA0AgCSARRgRAIAQhAQwHCyABIAMoAgBGBEAgAyAENgIACyAJQQFqIQkgA0EEaiEDDAALAAsgAiABOwEAIAEgBE4NBEEAIQkgCkEAIApBAEobIREgACEDA0AgCSARRg0FIAQgAygCAEYEQCADIAE2AgALIAlBAWohCSADQQRqIQMMAAsACyACIAQ7AQAgBEEcbCANaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACALajYCACADQRRrIgEgASgCACAPajYCACALIANBEGsiASgCAEgEQCABIAs2AgALIANBBGsgDzYCAAwFCyABQQBKBEAgAiABOwEAIANBHGwgDWoiA0EcayIBIAEoAgBBAWo2AgAgA0EYayIBIAEoAgAgC2o2AgAgA0EUayIBIAEoAgAgD2o2AgAgCyADQQxrIgEoAgBKBEAgASALNgIACyADQQRrIA82AgAMBQsgAkECay8BACIDQRB0QRB1IgFBAEoEQCACIAE7AQAgA0EcbCANaiIDQRxrIgEgASgCAEEBajYCACADQRhrIgEgASgCACALajYCACADQRRrIgEgASgC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ACACIANODQRBACEKIAZBACAGQQBKGyELIAAhAQNAIAogC0YNBSADIAEoAgBGBEAgASACNgIACyAKQQFqIQogAUEEaiEBDAALAAsgBCADOwEAIANBHGwgDmoiAkEcayIBIAEoAgBBAWo2AgAgAkEYayIBIAEoAgAgCWo2AgAgAkEUayIBIAEoAgAgDWo2AgAgCSACQRBrIgEoAgBIBEAgASAJNgIACyACQQRrIA02AgAMBQsgAkEASgRAIAQgAjsBACABQRxsIA5qIgJBHGsiASABKAIAQQFqNgIAIAJBGGsiASABKAIAIAlqNgIAIAJBFGsiASABKAIAIA1qNgIAIAkgAkEMayIBKAIASgRAIAEgCTYCAAsgAkEEayANNgIADAULIARBAmsvAQAiAkEQdEEQdSIBQQBKBEAgBCABOwEAIAJBHGwgDmoiAkEcayIBIAEoAgBBAWo2AgAgAkEYayIBIAEoAgAgCWo2AgAgAkEUayIBIAEoAgAgDWo2AgAgAkEMayIBKAIAIAlODQUgASAJNgIADAULIAZBgIACTgRAQQBBA0HkC0EAEDZBfyEKDAkLIAQgBkEBaiIBOwEAIAAgBkECdGogAUEQdEEQdTYCACAOIAZBHGxqIgIgDTYCGCACIA02AhQgAiAJNgIQIAIgCTYCDCACIA02AgggAiAJNgIEIAJBATYCACABIQYMBAsgBEEAOwEAIAxBADoAAAwDCyAMQQJqIQwgBEEEaiEEIA1BAWohDSAIIBJqQQRqIRIMBQsgAkEQdEEQdUEcbCAOaiICQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACANajYCAAwBCyACQRB0QRB1QRxsIA5qIgJBBGsgDTYCACACQRxrIgEgASgCAEEBajYCACACQRhrIgEgASgCACAJajYCACACQRRrIgEgASgCACANajYCAAsgDEEBaiEMIARBAmohBCASQQJqIRIgCUEBaiEJDAALAAsLIAZBACAGQQBKG0EBaiEDQQEhAUEBIQwgACEJA0AgASADRwRAAkAgASAJKAIAIgJGBEAgDCIKQQFqIQwMAQsgAkECdCAAakEEaygCACEKCyAJIAo2AgAgCUEEaiEJIAFBAWohAQwBCwsgByAMQQFrIgk2AghBACAJRQ0BGiAHQYyACGohDCAH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BEGYpwQoAgBBAWoiBTYCACAAIAU2AgAgAwRAA0AgAiAEQQN0aiIGKAIARQRAIAYgBTYCACACIARBA3RqIgAgATYCBCAAQQA2AgggAyQBIAIPCyAEQQFqIgQgA0cNAAsLIAAgASACIANBBHRBCHIQ0AIgA0EBdCIAEPYEIQEgACQBIAELHwBBkKcEKAIARQRAQZCnBCAANgIAQZSnBCABNgIACwu+DwIFfw9+IwBB0AJrIgUkACAEQv///////z+DIQsgAkL///////8/gyEKIAIgBIVCgICAgICAgICAf4MhDSAEQjCIp0H//wFxIQgCQAJAIAJCMIinQf//AXEiCUH//wFrQYKAfk8EQCAIQf//AWtBgYB+Sw0BCyABUCACQv///////////wCDIgxCgICAgICAwP//AFQgDEKAgICAgIDA//8AURtFBEAgAkKAgICAgIAghCENDAILIANQIARC////////////AIMiAkKAgICAgIDA//8AVCACQoCAgICAgMD//wBRG0UEQCAEQoCAgICAgCCEIQ0gAyEBDAILIAEgDEKAgICAgIDA//8AhYRQBEAgAyACQoCAgICAgMD//wCFhFAEQEIAIQFCgICAgICA4P//ACENDAMLIA1CgICAgICAwP//AIQhDUIAIQEMAgsgAyACQoCAgICAgMD//wCFhFAEQEIAIQEMAgsgASAMhFAEQEKAgICAgIDg//8AIA0gAiADhFAbIQ1CACEBDAILIAIgA4RQBEAgDUKAgICAgIDA//8AhCENQgAhAQwCCyAMQv///////z9YBEAgBUHAAmogASAKIAEgCiAKUCIGG3kgBkEGdK18pyIGQQ9rEIgBQRAgBmshBiAFKQPIAiEKIAUpA8ACIQELIAJC////////P1YNACAFQbACaiADIAsgAyALIAtQIgcbeSAHQQZ0rXynIgdBD2sQiAEgBiAHakEQayEGIAUpA7gCIQsgBSkDsAIhAwsgBUGgAmogC0KAgICAgIDAAIQiEkIPhiADQjGIhCICQgBCgICAgLDmvIL1ACACfSIEQgAQggEgBUGQAmpCACAFKQOoAn1CACAEQgAQggEgBUGAAmogBSkDmAJCAYYgBSkDkAJCP4iEIgRCACACQgAQggEgBUHwAWogBEIAQgAgBSkDiAJ9QgAQggEgBUHgAWogBSkD+AFCAYYgBSkD8AFCP4iEIgRCACACQgAQggEgBUHQAWogBEIAQgAgBSkD6AF9QgAQggEgBUHAAWogBSkD2AFCAYYgBSkD0AFCP4iEIgRCACACQgAQggEgBUGwAWogBEIAQgAgBSkDyAF9QgAQggEgBUGgAWogAkIAIAUpA7gBQgGGIAUpA7ABQj+IhEIBfSICQgAQggEgBUGQAWogA0IPhkIAIAJCABCCASAFQfAAaiACQgBCACAFKQOoASAFKQOgASIMIAUpA5gBfCIEIAxUrXwgBEIBVq18fUIAEIIBIAVBgAFqQgEgBH1CACACQgAQggEgBiAJIAhraiEGAn8gBSkDcCITQgGGIg4gBSkDiAEiD0IBhiAFKQOAAUI/iIR8IhBC5+wAfSIUQiCIIgIgCkKAgICAgIDAAIQiFUIBhiIWQiCIIgR+IhEgAUIBhiIMQiCIIgsgECAUVq0gDiAQVq0gBSkDeEIBhiATQj+IhCAPQj+IfHx8QgF9IhNCIIgiEH58Ig4gEVStIA4gDiATQv////8PgyITIAFCP4giFyAKQgGGhEL/////D4MiCn58Ig5WrXwgBCAQfnwgBCATfiIRIAogEH58Ig8gEVStQiCGIA9CIIiEfCAOIA4gD0IghnwiDlatfCAOIA4gFEL/////D4MiFCAKfiIRIAIgC358Ig8gEVStIA8gDyATIAxC/v///w+DIhF+fCIPVq18fCIOVq18IA4gBCAUfiIYIBAgEX58IgQgAiAKfnwiCiALIBN+fCIQQiCIIAogEFatIAQgGFStIAQgClatfHxCIIaEfCIEIA5UrXwgBCAPIAIgEX4iAiALIBR+fCILQiCIIAIgC1atQiCGhHwiAiAPVK0gAiAQQiCGfCACVK18fCICIARUrXwiBEL/////////AFgEQCAWIBeEIRUgBUHQAGogAiAEIAMgEhCCASABQjGGIAUpA1h9IAUpA1AiAUIAUq19IQpCACABfSELIAZB/v8AagwBCyAFQeAAaiAEQj+GIAJCAYiEIgIgBEIBiCIEIAMgEhCCASABQjCGIAUpA2h9IAUpA2AiDEIAUq19IQpCACAMfSELIAEhDCAGQf//AGoLIgZB//8BTgRAIA1CgICAgICAwP//AIQhDUIAIQEMAQsCfiAGQQBKBEAgCkIBhiALQj+IhCEKIARC////////P4MgBq1CMIaEIQwgC0IBhgwBCyAGQY9/TARAQgAhAQwCCyAFQUBrIAIgBEEBIAZrEP4BIAVBMGogDCAVIAZB8ABqEIgBIAVBIGogAyASIAUpA0AiAiAFKQNIIgwQggEgBSkDOCAFKQMoQgGGIAUpAyAiAUI/iIR9IAUpAzAiBCABQgGGIgFUrX0hCiAEIAF9CyEEIAVBEGogAyASQgNCABCCASAFIAMgEkIFQgAQggEgDCACIAIgAyACQgGDIgEgBHwiA1QgCiABIANWrXwiASASViABIBJRG618IgJWrXwiBCACIAIgBEKAgICAgIDA//8AVCADIAUpAxBWIAEgBSkDGCIEViABIARRG3GtfCICVq18IgQgAiAEQoCAgICAgMD//wBUIAMgBSkDAFYgASAFKQMIIgNWIAEgA1Ebca18IgEgAlStfCANhCENCyAAIAE3AwAgACANNwMIIAVB0AJqJAALxAECAX8CfkF/IQMCQCAAQgBSIAFC////////////AIMiBEKAgICAgIDA//8AViAEQoCAgICAgMD//wBRGw0AQQAgAkL///////////8AgyIFQoCAgICAgMD//wBWIAVCgICAgICAwP//AFEbDQAgACAEIAWEhFAEQEEADwsgASACg0IAWQRAQQAgASACUyABIAJRGw0BIAAgASAChYRCAFIPCyAAQgBSIAEgAlUgASACURsNACAAIAEgAoWEQgBSIQMLIAMLiQwBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkAgACACayIAQbSjBCgCAEcEQCACQf8BTQRAIAAoAggiBCACQQN2IgJBA3RByKMEakYaIAAoAgwiAyAERw0CQaCjBEGgowQoAgBBfiACd3E2AgAMAwsgACgCGCEGAkAgACAAKAIMIgJHBEAgACgCCCIDQbCjBCgCAEkaIAMgAjYCDCACIAM2AggMAQsCQCAAQRRqIgQoAgAiAw0AIABBEGoiBCgCACIDDQBBACECDAELA0AgBCEHIAMiAkEUaiIEKAIAIgMNACACQRBqIQQgAigCECIDDQALIAdBADYCAAsgBkUNAgJAIAAoAhwiBEECdEHQpQRqIgMoAgAgAEYEQCADIAI2AgAgAg0BQaSjBEGkowQoAgBBfiAEd3E2AgAMBAsgBkEQQRQgBigCECAARhtqIAI2AgAgAkUNAwsgAiAGNgIYIAAoAhAiAwRAIAIgAzYCECADIAI2AhgLIAAoAhQiA0UNAiACIAM2AhQgAyACNgIYDAILIAUoAgQiAkEDcUEDRw0BQaijBCABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAsCQCAFKAIEIgJBAnFFBEBBuKMEKAIAIAVGBEBBuKMEIAA2AgBBrKMEQayjBCgCACABaiIBNgIAIAAgAUEBcjYCBCAAQbSjBCgCAEcNA0GoowRBADYCAEG0owRBADYCAA8LQbSjBCgCACAFRgRAQbSjBCAANgIAQaijBEGoowQoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIADwsgAkF4cSABaiEBAkAgAkH/AU0EQCAFKAIIIgQgAkEDdiICQQN0QcijBGpGGiAEIAUoAgwiA0YEQEGgowRBoKMEKAIAQX4gAndxNgIADAILIAQgAzYCDCADIAQ2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgJHBEAgBSgCCCIDQbCjBCgCAEkaIAMgAjYCDCACIAM2AggMAQsCQCAFQRRqIgMoAgAiBA0AIAVBEGoiAygCACIEDQBBACECDAELA0AgAyEHIAQiAkEUaiIDKAIAIgQNACACQRBqIQMgAigCECIEDQALIAdBADYCAAsgBkUNAAJAIAUoAhwiBEECdEHQpQRqIgMoAgAgBUYEQCADIAI2AgAgAg0BQaSjBEGkowQoAgBBfiAEd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAI2AgAgAkUNAQsgAiAGNgIYIAUoAhAiAwRAIAIgAzYCECADIAI2AhgLIAUoAhQiA0UNACACIAM2AhQgAyACNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABBtKMEKAIARw0BQaijBCABNgIADwsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgALIAFB/wFNBEAgAUF4cUHIowRqIQICf0GgowQoAgAiA0EBIAFBA3Z0IgFxRQRAQaCjBCABIANyNgIAIAIMAQsgAigCCAshASACIAA2AgggASAANgIMIAAgAjYCDCAAIAE2AggPC0EfIQQgAUH///8HTQRAIAFBCHYiAiACQYD+P2pBEHZBCHEiBHQiAiACQYDgH2pBEHZBBHEiA3QiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAEciACcmsiAkEBdCABIAJBFWp2QQFxckEcaiEECyAAIAQ2AhwgAEIANwIQIARBAnRB0KUEaiEHAkACQEGkowQoAgAiA0EBIAR0IgJxRQRAQaSjBCACIANyNgIAIAcgADYCACAAIAc2AhgMAQsgAUEAQRkgBEEBdmsgBEEfRht0IQQgBygCACECA0AgAiIDKAIEQXhxIAFGDQIgBEEddiECIARBAXQhBCADIAJBBHFqIgdBEGooAgAiAg0ACyAHIAA2AhAgACADNgIYCyAAIAA2AgwgACAANgIIDwsgAygCCCIBIAA2AgwgAyAANgIIIABBADYCGCAAIAM2AgwgACABNgIICwsSACAARQRAQQAPCyAAIAEQ2AMLdAEDfyAARQRAQQBBA0GGwABBABA2DwsgACgCACIBRQRADwsgASgCABAxQQAhAQN/IAAoAgAiAygCCCECIAMoAgwgAUwEfyACEDEgACgCABAxIABBADYCAEEABSACIAFBDGxqKAIAEDEgAUEBaiEBDAELCxoL5R4CD38FfiMAQZABayIEJAAgBEEAQZABEDkiA0F/NgJMIAMgADYCLCADQYMCNgIgIAMgADYCVCABIQQgAiEOQQAhACMAQbACayIGJAAgAygCTBoCQAJAAkACQCADKAIEDQAgAxCRAxogAygCBA0ADAELIAQtAAAiAUUNAgJAAkACQAJAA0ACQAJAIAFB/wFxEN0BBEADQCAEIgFBAWohBCABLQABEN0BDQALIANCABDEAQNAAn8gAygCBCICIAMoAmhHBEAgAyACQQFqNgIEIAItAAAMAQsgAxBRCxDdAQ0ACyADKAIEIQQgAykDcEIAWQRAIAMgBEEBayIENgIECyAEIAMoAixrrCADKQN4IBR8fCEUDAELAn8CQAJAIAQtAABBJUYEQCAELQABIgFBKkYNASABQSVHDQILIANCABDEAQJAIAQtAABBJUYEQANAAn8gAygCBCIBIAMoAmhHBEAgAyABQQFqNgIEIAEtAAAMAQsgAxBRCyIBEN0BDQALIARBAWohBAwBCyADKAIEIgEgAygCaEcEQCADIAFBAWo2AgQgAS0AACEBDAELIAMQUSEBCyAELQAAIAFHBEAgAykDcEIAWQRAIAMgAygCBEEBazYCBAsg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TARAIAEgCiADIAkQ/wEEQCABIQQMAgsgBUHwAGogASACQgBCABBdIAUpA3ghAiAFKQNwIQQMAQsgBgR+IAEFIAVB4ABqIAEgCkIAQoCAgICAgMC7wAAQXSAFKQNoIgpCMIinQfgAayEGIAUpA2ALIQQgB0UEQCAFQdAAaiADIAlCAEKAgICAgIDAu8AAEF0gBSkDWCIJQjCIp0H4AGshByAFKQNQIQMLIAlC////////P4NCgICAgICAwACEIQkgCkL///////8/g0KAgICAgIDAAIQhCiAGIAdKBEADQAJ+IAogCX0gAyAEVq19IgtCAFkEQCALIAQgA30iBIRQBEAgBUEgaiABIAJCAEIAEF0gBSkDKCECIAUpAyAhBAwFCyALQgGGIARCP4iEDAELIApCAYYgBEI/iIQLIQogBEIBhiEEIAZBAWsiBiAHSg0ACyAHIQYLAkAgCiAJfSADIARWrX0iCUIAUwRAIAohCQwBCyAJIAQgA30iBIRCAFINACAFQTBqIAEgAkIAQgAQXSAFKQM4IQIgBSkDMCEEDAELIAlC////////P1gEQANAIARCP4ghASAGQQFrIQYgBEIBhiEEIAEgCUIBhoQiCUKAgICAgIDAAFQNAAsLIAhBgIACcSEHIAZBAEwEQCAFQUBrIAQgCUL///////8/gyAGQfgAaiAHcq1CMIaEQgBCgICAgICAwMM/EF0gBSkDSCECIAUpA0AhBAwBCyAJQv///////z+DIAYgB3KtQjCGhCECCyAAIAQ3AwAgACACNwMIIAVBgAFqJAALvwIBAX8jAEHQAGsiBCQAAkAgA0GAgAFOBEAgBEEgaiABIAJCAEKAgICAgICA//8AEF0gBCkDKCECIAQpAyAhASADQf//AUkEQCADQf//AGshAwwCCyAEQRBqIAEgAkIAQoCAgICAgID//wAQXSADQf3/AiADQf3/AkgbQf7/AWshAyAEKQMYIQIgBCkDECEBDAELIANBgYB/Sg0AIARBQGsgASACQgBCgICAgICAgDkQXSAEKQNIIQIgBCkDQCEBIANB9IB+SwRAIANBjf8AaiEDDAELIARBMGogASACQgBCgICAgICAgDkQXSADQeiBfSADQeiBfUobQZr+AWohAyAEKQM4IQIgBCkDMCEBCyAEIAEgAkIAIANB//8Aaq1CMIYQXSAAIAQpAwg3AwggACAEKQMANwMAIARB0ABqJAALNQAgACABNwMAIAAgAkL///////8/gyAEQjCIp0GAgAJxIAJCMIinQf//AXFyrUIwhoQ3AwgLEAAgACABIAJBAEEAEIkFGgvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAgALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC20BBH8gACgCACwAABCuAUUEQEEADwsDQCAAKAIAIQNBfyEBIAJBzJmz5gBNBEBBfyADLAAAQTBrIgQgAkEKbCIBaiAEIAFB/////wdzShshAQsgACADQQFqNgIAIAEhAiADLAABEK4BDQALIAILDAAgACAAKAIAEPEEC/8SAhJ/AX4jAEHQAGsiCCQAIAggATYCTCAIQTdqIRcgCEE4aiESAkACQAJAAkADQCABIQwgByAOQf////8Hc0oNASAHIA5qIQ4CQAJAAkAgDCIHLQAAIgkEQANAAkACQCAJQf8BcSIBRQRAIAchAQwBCyABQSVHDQEgByEJA0AgCS0AAUElRwRAIAkhAQwCCyAHQQFqIQcgCS0AAiEKIAlBAmoiASEJIApBJUYNAAsLIAcgDGsiByAOQf////8HcyIYSg0HIAAEQCAAIAwgBxCDAQsgBw0GIAggATYCTCABQQFqIQdBfyEPAkAgASwAARCuAUUNACABLQACQSRHDQAgAUEDaiEHIAEsAAFBMGshD0EBIRMLIAggBzYCTEEAIQ0CQCAHLAAAIglBIGsiAUEfSwRAIAchCgwBCyAHIQpBASABdCIBQYnRBHFFDQADQCAIIAdBAWoiCjYCTCABIA1yIQ0g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ABpBAiABQZYBSw0AGkEAQQFBlgEgAWt0IgFBAWsgAHENABpBAUECIAAgAXEbCwsTACAAQQF0QYCAgAhqQYGAgAhJCxUBAX8jAEEQayIBIAA4AgwgASoCDAsQACABjCABIAAbEJYFIAGUCwwAIAAgAJMiACAAlQs5AQF+An4gACgCTEEASARAIAAQmwUMAQsgABCbBQsiAUKAgICACFkEQEGImQRBPTYCAEF/DwsgAacLDAAgACAAKAIAEOYEC3ACAn8BfiAAKAIoIQJBASEBAkAgAEIAIAAtAABBgAFxBH9BAUECIAAoAhQgACgCHEYbBUEBCyACERMAIgNCAFMNACADIAAoAggiAQR/IABBBGoFIAAoAhwiAUUNASAAQRRqCygCACABa6x8IQMLIAMLWQEBfyAAIAAoAkgiAUEBayABcjYCSCAAKAIAIgFBCHEEQCAAIAFBIHI2AgBBfw8LIABCADcCBCAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQQQALLAAgACgCABogACgCACAAENwBahogACgCACAAEI0BahogACgCACAAENwBahoLlwIBBX8gASgCTBpB/wEhBSAAIQMCQANAAkACQAJAIAEoAgQiAiABKAIIIgRGDQACfyACQQogBCACaxDcAyIGBEAgBiABKAIEIgJrQQFqDAELIAEoAgggASgCBCICawshBCADIAIgBCAFIAQgBUkbIgIQPhogASABKAIEIAJqIgQ2AgQgAiADaiEDIAYNAiAFIAJrIgVFDQIgBCABKAIIRg0AIAEgBEEBajYCBCAELQAAIQIMAQsgARCQAyICQQBODQBBACECIAAgA0YNAyABLQAAQRBxDQEMAwsgAyACOgAAIANBAWohAyACQf8BcUEKRg0AIAVBAWsiBQ0BCwsgAEUEQEEAIQIMAQsgA0EAOgAAIAAhAgsgAgt1AgJ8AX4gAAJ+EA8iAUQAAAAAAECPQKMiAplEAAAAAAAA4ENjBEAgArAMAQtCgICAgICAgICAfwsiAzcDACAAAn8gASADQugHfrmhRAAAAAAAQI9AoiIBmUQAAAAAAADgQWMEQCABqgwBC0GAgICAeAs2AggLRQIBfgF8An4QD0QAAAAAAECPQKMiAplEAAAAAAAA4ENjBEAgArAMAQtCgICAgICAgICAfwshASAABEAgACAB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QQFqOwEGIAEgC2ogAGoiAiAELQAYQQFqOwEAIAIgBC0AGUEBajsBAiACIAQtABpBAWo7AQQgAiAELQAbQQFqOwEGIAEgD2ogAGoiASAELQAcQQFqOwEAIAEgBC0AHUEBajsBAiABIAQtAB5BAWo7AQQgASAELQAfQQFqOwEGIARBIGohBCAHQQFqIgdBBEcNAAsgDUGAC2okAAvLAwEEfyAAKALkAyAAQQFB/A8gACgCBCgCABEEACIAQfwHaiIBNgIoIABC/////w83AvgHIABCgYCAgCA3AoAIIABCg4CAgMAANwKICCAAQv3///9vNwLwByAAQoWAgIDgADcCkAggAEL7////TzcC6AcgAEKHgICAgAE3ApgIIABC+f///69/NwLgByAAQomAgICgATcCoAggAEL3////j383AtgHIABCi4CAgMABNwKoCCAAQvX////vfjcC0AcgAEKNgICA4AE3ArAIIABC8////89+NwLIByAAQQ82ArgIIABC8f///69+NwLAB0EQIQJBECEDA0AgASADQQJ0IgBqIAI2AgAgASAAa0EAIAJrIgQ2AgAgASAAQQRyaiACNgIAIAEgA0F/c0ECdGogBDYCACACQQFqIQJBMCEAIANBAmoiA0EwRw0ACwNAIAEgAEECdCICakEgNgIAIAEgAmtBYDYCACABIAJBBHJqQSA2AgAgASAAQX9zQQJ0akFgNgIAIAEgAkEIcmpBIDYCACABQX4gAGtBAnRqQWA2AgAgASACQQxyakEgNgIAIAFBfSAAa0ECdGpBYDYCACAAQQRqIgBBgAJHDQALC/cCAQp/IAAoAuQDIgQgACgCWCIBQQFGIgI2AhwgBCAAQQFB/gVBgAIgAhsgACgCeCAAKAIEKAIIEQgANgIYIAAoAnhBAEoEQCAEKAIUIQYgAUEBRyEIA0AgBiAEIAdBAnQiAWooAiAiAm0hBiAIRQRAIAQoAhggAWoiAyADKAIAQf8BajYCAAsgAkH+AWogAkEBayIJQQF0IgptIQUgBCgCGCABaigCACEBQQAhAkEAIQMDQCADIAVKBEADQCADIAJBAWoiAkEBdEEBckH/AWwgCWogCm0iBUoNAAsLIAEgA2ogAiAGbDoAACADQQFqIgNBgAJHDQALIAhFBEBBASECA0AgASACayIFIAEtAAA6AAAgASACaiIDIAEtAP8BOgD/ASABIAJBf3NqIAEtAAA6AAAgAyABLQD/AToAgAIgBUECayABLQAAOgAAIAMgAS0A/wE6AIECIAJBA2oiAkGAAkcNAAsLIAdBAWoiByAAKAJ4SA0ACwsLLAEBfyAAEJ0FIAAoAgAEQCAAEJoFIAAQMhogACgCACEBIAAQ3AEaIAEQMQsLGAAgACgCACIBQTM2AhQgACABKAIAEQEAC/oDAQl/QfCT69wDIAJuIQggACgCBCEEIAJB8ZPr3ANPBEAgACgCACIHQcgANgIUIAAgBygCABEBAAsgBCAIIAMgAyAIShsiCDYCUCAAIAEgA0ECdBDVAiEKIAMEQCABQQJJIQtBACEHA0AgACgCBCEFIAggAyAHayIEIAQgCEsbIgggAmwiBEHxk+vcA08EQCAAKAIAQriAgIAwNwIUIAAgACgCACgCABEBAAsgBEEIIARBB3EiBmtBACAGG2ohBiALRQRAIAAoAgAiBCABNgIYIARBDzYCFCAAIAAoAgAoAgARAQALIAZBEGoiCRA3IgRFBEAgACgCAEK4gICAwAA3AhQgACAAKAIAKAIAEQEACyAFIAUoAkwgCWo2AkwgBSABQQJ0aiIFKAI8IQkgBEEANgIIIAQgBjYCBCAEIAk2AgAgBSAENgI8AkAgCEUNACAEQRBqIQVBACEGIAgiBEEDcSIJBEADQCAKIAdBAnRqIAU2AgAgBEEBayEEIAIgBWohBSAHQQFqIQcgBkEBaiIGIAlHDQALCyAIQQFrQQNJDQADQCAKIAdBAnRqIgYgBTYCACAGIAIgBWoiBSACaiIJIAJqIgw2AgwgBiAJNgIIIAYgBTYCBCAHQQRqIQcgAiAMaiEFIARBBGsiBA0ACwsgAyAHSw0ACwsgCgv0AwEJf0Hwk+vcAyACQQd0IgtuIQUgACgCBCEEIAtB8ZPr3ANPBEAgACgCACIGQcgANgIUIAAgBigCABEBAAsgBCAFIAMgAyAFShsiBTYCUCAAIAEgA0ECdBDVAiEKIAMEQCABQQJJIQwgAkEHdCEJQQAhBgNAIAAoAgQhBCALIAUgAyAGayICIAIgBUsbIgVsIgdB8ZPr3ANPBEAgACgCAEK4gICAMDcCFCAAIAAoAgAoAgARAQALIAxFBEAgACgCACICIAE2AhggAkEPNgIUIAAgACgCACgCABEBAAsgB0EQciIIEDciAkUEQCAAKAIAQriAgIDAADcCFCAAIAAoAgAoAgARAQALIAQgBCgCTCAIajYCTCAEIAFBAnRqIgQoAjwhCCACQQA2AgggAiAHNgIEIAIgCDYCACAEIAI2AjwCQCAFRQ0AIAJBEGohAkEAIQcgBSEEIAVBA3EiCARAA0AgCiAGQQJ0aiACNgIAIARBAWshBCAGQQFqIQYgAiAJaiECIAdBAWoiByAIRw0ACwsgBUEBa0EDSQ0AA0AgCiAGQQJ0aiIHIAI2AgAgByACIAlqIgIgCWoiCDYCCCAHIAI2AgQgByAIIAlqIgI2AgwgAiAJaiECIAZBBGohBiAEQQRrIgQNAAsLIAMgBksNAAsLIAoLCgAgACgCACABaguuQwMtfwd8AX4jAEEQayInJAAgBUEAIAVBAEobITQDQCAtIDRHBEAgCyAuQQh0aiIfIAQgLUGw8QRsaiIFKAIANgIAAkAgCSAFKwMItiAFKwMQtiAnQQxqICdBCGoQ4QFBAEgNACAfICcqAgy7OQM4IB9BQGsgJyoCCLs5AwAgBUEcaiE1IAVB3LgCaiE2IAUoAhgaIAVBnPEEaiEzIB9ByABqIS8gH0GoAWohKCMAQRBrIiMkAEECEPIDIRdBAhDyAyEgQQJBAhCxASEZQQAhGwJ/AkADQCAbQQRHBEACfyAzIBtBAWoiGEECdGooAgAiDiAzIBtBAnRqKAIAIgVrQQFqt0SamZmZmZmpP6JEAAAAAAAA4D+gIjsgBbegIjyZRAAAAAAAAOBBYwRAIDyqDAELQYCAgIB4CyEFAn8gDrcgO6EiO5lEAAAAAAAA4EFjBEAgO6oMAQtBgICAgHgLIAVrIhBBfyAQQQBOG0EBaiERQQAhDiAQQQFqQQIQsQEhIQNAIA4gEUcEQCAJIDUgBSAOakECdCIQaigCALIgECA2aigCALIgI0EMaiAjQQhqEOEBQQBIDQQgISgCACAOQQR0aiIQICMqAgy7OQMAIBAgIyoCCLs5AwggDkEBaiEODAELC0F/IRMCQCAhKAIEIhVBAkgNACAhKAIIIgVBAkgNACAZKAIIIAVHDQAgFSAFIAUgFUobIg4gGSgCBEcNACAXKAIEIA5HDQAgICgCBCAFRw0AAn8gISgCBCAhKAIIELEBIhAEQEF/IQ8CQCAQKAIEIg4gISgCBEcNACAQKAIIIhIgISgCCEcNAEEAIQ8gDkEAIA5BAEobIRQgEkEAIBJBAEobIRpBACEOA0AgDiAURg0BIA4gEmwhFkEAIREDQCARIBpHBEAgESAWakEDdCIdIBAoAgBqICEoAgAgHWorAwA5AwAgEUEBaiERDAELCyAOQQFqIQ4MAAsACyAQIA9BAE4NARogEBBDC0EACyIaRQ0AQQAhDkEAIQ9BfyERAkAgGigCBCISQQBMDQAgGigCCCIQQQBMDQAgICgCBCAQRw0AA0AgDiAQRwRAICAoAgAgDkEDdGpCADcDACAOQQFqIQ4MAQsLIBooAgAhEQNAIA8gEkYEQCAStyE7QQAhEUEAIQ4DQCAOIBBGDQMgICgCACAOQQN0aiIPIA8rAwAgO6M5AwAgDkEBaiEODAALAAUgICgCACEOQQAhFANAIBAgFEcEQCAOIBErAwAgDisDAKA5AwAgFEEBaiEUIA5BCGohDiARQQhqIREMAQsLIA9BAWohDwwBCwALAAsCQCARQQBIDQBBfyEUAkAgGigCCCIOICAoAgRHDQBBACEUIA5BACAOQQBKGyEQIBooAgQiDkEAIA5BAEobIRYgGigCACEOQQAhEQNAIBEgFkYNASAgKAIAIRJBACEPA0AgDyAQRwRAIA4gDisDACASKwMAoTkDACAPQQFqIQ8gDkEIaiEOIBJBCGohEgwBCwsgEUEBaiERDAALAAsgFEEASA0AIBW3nyE7QQAhDiAFIBVsIgVBACAFQQBKGyEFA0AgBSAORwRAIBooAgAgDkEDdGoiECAQKwMAIDujOQMAIA5BAWohDgwBCwsCf0EAIQ5BfyERAkACQCAaKAIEIhBBAkgNACAaKAIIIgVBAkgNACAZKAIIIAVHDQAgBSAQIAUgEEgbIhYgGSgCBEcNACAXKAIEIBZHDQACQCAWIBYgFhCxASIVKAIERgRAIBUoAgggFkYNAQsMAgsCQCAFIBBNIjdFBEBBfyEUAkAgGigCBCITIBUoAgRHDQAgFSgCCCATRw0AQQAhFCATQQAgE0EAShshIiAaKAIIIh1BACAdQQBKGyEcIBUoAgAiHiEFA0AgDiAiRg0BIA4gHWwhKUEAIREDQAJAIBEgE0cEQCAOIBFLBEAgBSAeIBEgE2wgDmpBA3RqKwMAOQMADAILIBooAgAhECAFQgA3AwAgECApQQN0aiESIBAgESAdbEEDdGohD0EAIRBEAAAAAAAAAAAhOwNAIBAgHEYNAiAFIBIrAwAgDysDAKIgO6AiOzkDACAQQQFqIRAgD0EIaiEPIBJBCGohEgwACwALIA5BAWohDgwCCyARQQFqIREgBUEIaiEFDAALAAsACyAUQQBODQEMAwtBfyEQAkAgGigCCCIRIBUoAgRHDQAgFSgCCCARRw0AQQAhECARQQAgEUEAShshHSAaKAIEIgVBACAFQQBKGyEiIBUoAgAiHCETA0BBACEFIA4gHUYNAQNAAkAgBSARRwRAIAUgDkkEQCATIBwgBSARbCAOakEDdGorAwA5AwAMAgsgGigCACEPIBNCADcDACAPIAVBA3RqIRIgDyAOQQN0aiEPQQAhFEQAAAAAAAAAACE7A0AgFCAiRg0CIBMgDysDACASKwMAoiA7oCI7OQMAIBRBAWohFCASIBFBA3QiHmohEiAPIB5qIQ8MAAsACyAOQQFqIQ4MAgsgBUEBaiEFIBNBCGohEwwACwALAAsgEEEATg0ADAILIwBBEGsiIiQAQX8hEQJAIBUoAgQiHUECSA0AIB0gFSgCCEcNACAXKAIEIB1HDQAgHRDyAyIpRQ0AICIgHUEBayIUNgIMICIgKSgCAEEIajYCCEEAIRAjAEEQayITJABBfyEkAkAgFSgCCCIPIBUoAgRHDQAgDyAXKAIERw0AIA8gIigCDEEBakcNACAPQQJrIhxBACAcQQBKGyEqA0ACQCAqIBAiEkcEQCASQQN0IiQgFygCAGogFSgCACAPIBJsQQN0aiIeICRqKwMAOQMAIBMgHiASQQFqIhBBA3QiK2oiLDYCCCATIA8gEkF/c2oiJTYCDEEAIQUCQCATQQhqIg4gDhDuA58iO0QAAAAAAAAAAGENACAOKAIAIiYgJisDACI8IDuaIDsgPEQAAAAAAAAAAGMbIjugIjw5AwBEAAAAAAAA8D8gOyA8op+jITwgDigCBCIOQQAgDkEAShshDgNAIAUgDkYNASAmIAVBA3RqIjAgPCAwKwMAojkDACAFQQFqIQUMAAsACyAiKAIIICRqIDuaIjs5AwAgECEFIDtEAAAAAAAAAABhDQIDQEQAAAAAAAAAACE7IBAhDiAFIA9ODQIDQCAFIA5NBEAgBSAPbCEkIAUhDgNAIA4gD0gEQCAVKAIAIA4gJGpBA3RqKwMAIB4gDkEDdGorAwCiIDugITsgDkEBaiEODAELCyAXKAIAIAVBA3RqIDs5AwAgBUEBaiEFDAIFIBUoAgAgDiAPbCAFakEDdGorAwAgHiAOQQN0aisDAKIgO6AhOyAOQQFqIQ4MAQsACwALAAsCQAJAIA9BAk4EQCAXKAIAIgUgHEEDdCIOaiAVKAIAIhAgDyAcbCISIBxqQQN0aisDADkDACAiKAIIIA5qIBAgD0EBayIOIBJqQQN0aisDADkDAAwBCyAPQQFHDQEgFygCACEFIBUoAgAhEEEAIQ4LIAUgDkEDdGogECAOIA9sIA5qQQN0aisDADkDAAtBACEkIA9BACAPQQBKGyEmIA8hBQNAIAVBAEwNAyAVKAIAIAVBAWsiECAPbEEDdGohHgJAIAUgHEoNACAPIAVrISUgHiAFQQN0aiEqIAUhEgNAIA8gEkwNASATICU2AgwgEyAlNgIEIBMgKjYCCCATIBUoAgAgDyASbCIrIAVqQQN0ajYCACATQQhqIBMQ7gOaITsgBSEOA0AgDiAPSARAIBUoAgAgDiArakEDdGoiLCA7IB4gDkEDdGorAwCiICwrAwCgOQMAIA5BAWohDgwBCwsgEkEBaiESDAALAAtBACEOA0AgDiAmRwRAIB4gDkEDdGpCADcDACAOQQFqIQ4MAQsLIB4gEEEDdGpCgICAgICAgPg/NwMAIBAhBQwACwALIBMgJTYCDCATICU2AgQgEyAsNgIIIBMgFygCACArajYCACATQQhqIBMQ7gNEAAAAAAAA4L+iITsgDyEFA0AgBUEBayIFIBJMDQEgFygCACIkIAVBA3QiDmoiJSA7IA4gHmorAwAiPKIgJSsDAKAiPTkDACAFIA9sISUgBSEOA0AgDiAPTg0BIBUoAgAgDiAlakEDdGoiJiAmKwMAIDwgJCAOQQN0IiZqKwMAoiA9IB4gJmorAwCioKE5AwAgDkEBaiEODAALAAsACwALIBNBEGokAAJAICRBAEgNACApKAIAIhNCADcDACAUIRADQCAQIgUiEUEATARAQQAhBQNAIAUgFEYEQEEAIREMBAsgFygCACIPIAVBA3RqIhIrAwAiPCE7IAVBAWoiECERIAUhDgNAIBEgHUgEQCAPIBFBA3RqKwMAIj0gOyA7ID1jIhMbITsgESAOIBMbIQ4gEUEBaiERDAELCyAPIA5BA3RqIDw5AwAgEiA7OQMAIBUoAgAiDyAFIB1sQQN0aiERIA8gDiAdbEEDdGohDkEAIQUDQCAFIB1GBEAgECEFDAIFIA4rAwAhOyAOIBErAwA5AwAgESA7OQMAIAVBAWohBSARQQhqIREgDkEIaiEODAELAAsACwALA0ACQCARIg5BAEwEQEEAIQ4MAQsgEyAOQQN0IhBqKwMAmSAXKAIAIg8gDkEBayIRQQN0aisDAJkgDyAQaisDAJmgRI3ttaD3xrA+omQNAQsLIAVBAWshECAFIA5GDQAgDiAFIAUgDkgbISYgEyAFQQN0IipqISQgDkEDdCIrIBNqISxBACERA0AgEUHkAEYNASARQQFqIRIgFygCACIcICtqKwMAIBwgKmoiMCsDACI7oSAkKwMAIjwgPKIiPCAcIBBBA3RqIjgrAwAgO6FEAAAAAAAA4D+iIjsgPCA7IDuioJ8iPJogPCA7RAAAAAAAAAAAYxugo6AhPiAsKwMIIT0gDiEFA0AgBSAmRwRAAkAgPpkiOyA9mWYEQCA7RLyJ2Jey0pw8ZEUEQEQAAAAAAADwPyE7RAAAAAAAAAAAITwMAgsgPZogPqMiO0QAAAAAAADwPyA7IDuiRAAAAAAAAPA/oJ+jIjuiITwMAQsgPpogPaMiO0QAAAAAAADwPyA7IDuiRAAAAAAAAPA/oJ+jIjyiITsLIBwgBUEDdCIlaiIRIBErAwAiPyA8ID8gHCAFQQFqIg9BA3QiEWoiMSsDACI/oSJAIDyiIDsgO6AgESATaiIeKwMAoqCiIkGhOQMAIDEgPyBBoDkDACAFIA5KBEAgEyAlaiIRIDsgESsDAKIgPSA8oqE5AwALIDyaIT8gHiA8IDsgQKIgPEQAAAAAAAAAwKIgHisDACJAoqCiIECgOQMAIA8gHWwhMSAFIB1sITlBACERA0AgESAdRwRAIBUoAgAiMiARIDlqQQN0aiI6IDsgOisDACI+oiAyIBEgMWpBA3RqIjIrAwAiPSA/oqA5AwAgMiA8ID6iIDsgPaKgOQMAIBFBAWohEQwBCwsgBSAQTiERIA8hBSARDQEgHisDACE+IBMgJWoiESA7IBErAxAiO6I5AxAgOyA/oiE9DAELCyASIREgJCsDAJkgOCsDAJkgMCsDAJmgRI3ttaD3xrA+omQNAAsMAAsACyApEKkCCyAiQRBqJAAgEUEASA0BAkAgN0UEQEEAIQ5BfyEPAkAgGigCBCIFQQBMDQAgGigCCCITQQBMDQAgFSgCBCAFRw0AIBUoAgggBUcNACAZKAIEIAVHDQAgGSgCCCATRw0AIBcoAgQgBUcNACAZKAIAIRQDQAJAIAUgDkYEQCAFIQ4MAQsgFygCACAOQQN0aisDACI7RLyJ2Jey0pw8Yw0AIAUgDmwhFkQAAAAAAADwPyA7mZ+jITxBACERA0AgESATRwRAIBooAgAgEUEDdGohECAVKAIAIBZBA3RqIQ9BACESRAAAAAAAAAAAITsDQCAFIBJHBEAgEkEBaiESIA8rAwAgECsDAKIgO6AhOyAQIBNBA3RqIRAgD0EIaiEPDAELCyAUIDwgO6I5AwAgEUEBaiERIBRBCGohFAwBCwsgDkEBaiEODAELCyAOIAUgBSAOSBshBUEAIQ8gE0EAIBNBAEobIRADQCAFIA5GDQEgFygCACAOQQN0akIANwMAQQAhEgNAIBAgEkcEQCAUQgA3AwAgEkEBaiESIBRBCGohFAwBCwsgDkEBaiEODAALAAsgD0EATg0BDAMLQQAhBSAWQQAgFkEAShshDiAZKAIAIRAgFSgCACESA0ACQCAFIA5HBEBBACERIBcoAgAgBUEDdGorAwBEvInYl7LSnDxjRQ0BIAUhDgsgDiAWIA4gFkobIQUDQCAFIA5GDQMgFygCACAOQQN0akIANwMAQQAhEQNAIBEgFkcEQCAQQgA3AwAgEUEBaiERIBBBCGohEAwBCwsgDkEBaiEODAALAAsDQCARIBZHBEAgECASKwMAOQMAIBFBAWohESAQQQhqIRAgEkEIaiESDAELCyAFQQFqIQUMAAsACyAVEENBACERCyARDAELIBUQQ0F/CyETIBoQQ0EAIQ4gFygCBCIFQQAgBUEAShshEEQAAAAAAAAAACE7QQAhBQNAIAUgEEYEQANAIA4gEEYNBCAXKAIAIA5BA3RqIgUgBSsDACA7ozkDACAOQQFqIQ4MAAsABSA7IBcoAgAgBUEDdGorAwCgITsgBUEBaiEFDAELAAsACyAaEEMLIBNBAEgNAiAvIBtBGGxqIgUgGSgCACIOKwMIIjs5AwAgBSAOKwMAIjyaOQMIIAUgOyAgKAIAIgUrAwCiIDwgBSsDCKKhmjkDECAhEEMgGCEbDAELCyAZEEMgIBCpAiAXEKkCQQAhDgNAQQAgDkEERg0CGkF/IC8gDkEBa0EDcUEYbGoiBSsDACAvIA5BGGxqIhArAwgiPKIgBSsDCCI9IBArAwCioSI7mUQtQxzr4jYaP2MNAhogKCAOQQR0aiIRID0gECsDEKIgBSsDECA8oqEgO6M5AwAgESAQKwMAIAUrAxCiIBArAxAgBSsDAKKhIDujOQMIIA5BAWohDgwACwALICEQQyAZEEMgIBCpAiAXEKkCQX8LIQUgI0EQaiQAIAVBAEgNACAfQQhqIRMgH0EUaiEhIB9BKGohIiAfQQxqIRIgH0EYaiEaIB9BMGohFSAfQfABaiEOIB9B+AFqISAjAEGQ4ABrIhckAEEBIQUCQCAIQQJrQQJLDQAgDUGOFkYEQCAHQQJBDkEqIAAgASACIAMgCSAoRAAAAAAAAOw/IBdBEGoQswNBAEgEQCASQX82AgBBeiEFDAILIBdBEGohGSAOIRFBACEPQQAhDiMAQbABayIYJAAgGELDgYCA0AE3A5gBIBhCgICAgOAWNwOQAUH/ASEFA0AgD0EERwRAIBkgGEGQAWogD0ECdGooAgBqLQAAIhAgBUH/AXEiBSAFIBBLGyEFIBAgDkH/AXEiDiAOIBBJGyEOIA9BAWohDwwBCwsCfyAOQf8BcSIOIAVB/wFxIgVrQR1MBEAgGkEANgIAIBVCgICAgICAgPi/fzcDAEF+DAELIAUgDmpBAXYhHUEAIQVBACEPIBUCfAJAAkACQANAIA9BBEYEQAJAAkACQANAIAUiEEEERg0BIBBBAWohBSAYQawBaiAQai0AAEEBRw0AIBhBrAFqIAVBA3FqLQAAQQFHDQAgGEGsAWogEEECakEDcWotAAANAAtBACEWQfcAIRRBDSEFQf8BIRsCQCAQIg4OBAIHBgMACyAaIBA2AgBEAAAAAAAA8D8MCAsgGkEANgIAIBVCgICAgICAgPi/fzcDAEF9DAgLA0AgDkEORg0GIA5BDmwhFiAOQf7///8HcSEjQQAhDwNAIA9BDkcEQAJAIA5BA0kgD0EDa0EHS3JFIA5BC0lxDQAgD0H+////B3EiBUUgDkECSXENACAjQQxGIhwgBUVxIAVBDEYgHHFyDQAgFCAYaiAZIA8gFmpqLQAAIB1rIgVBH3Y6AAAgBSAFQR91IhxzIBxrIgUgGyAFIBtIGyEbIBRBAWshFAsgD0EBaiEPDAELCyAOQQFqIQ4MAAsACwUgGEGsAWogD2ogHSAZIBhBkAFqIA9BAnRqKAIAai0AAEs6AAAgD0EBaiEPDAELCwNAQQAhDyAFQQBIDQMgBUF+cSEOIAVBA2shIwNAIA9BDkcEQAJAIA9BA0kgI0EHS3JFIA9BC0lxDQAgDkUgD0H+////B3FBDEZxIA9BAkkiFiAOQQxGcSAORSAWcXJyDQAgFCAYaiAZIA9BDmwgBWpqLQAAIB1rIhZBH3Y6AAAgFiAWQR91IhxzIBxrIhYgGyAWIBtIGyEbIBRBAWshFAsgD0EBaiEPDAELCyAFQQFrIQUMAAsACwNAIAVBAEgNAiAFQQ5sIRYgBUF+cSEjQQ0hDwNAIA9BAE4EQAJAIAVBA0kgD0EDa0EHS3JFIAVBC0lxDQAgD0F+cSIOQQxGIhwgI0EMRnENACAcIAVBAkkiHnEgDkUgHnFyDQAgFCAYaiAZIA8gFmpqLQAAIB1rIg5BH3Y6AAAgDiAOQR91IhxzIBxrIg4gGyAOIBtIGyEbIBRBAWshFAsgD0EBayEPDAELCyAFQQFrIQUMAAsACwNAIBZBDkYNASAWQf7///8HcSEFIBZBA2shI0ENIQ8DQCAPQQBOBEACQCAPQQNJICNBB0tyRSAPQQtJcQ0AIAVFIA9BfnEiDkEMRnENACAFQQxGIhwgDkEMRnEgHCAPQQJJcXINACAUIBhqIBkgD0EObCAWamotAAAgHWsiDkEfdjoAACAOIA5BH3UiHHMgHGsiDiAbIA4gG0gbIRsgFEEBayEUCyAPQQFrIQ8MAQsLIBZBAWohFgwACwALIBogEDYCAEQAAAAAAADwPyAbQR5KDQAaIBu3RAAAAAAAAD5Aows5AwBBfEGOFkIAIBggGEGIAWoQ4gYiBUEASA0AGiARBEAgESAFNgIACyAXIBgpA4gBNwMIQQALIQUgGEGwAWokACAFQQBIBEAgEkF/NgIADAILIBcpAwgiQkJ/UQRAIBJBfzYCAEF7IQUMAgsgEiBCp0H//wFxQQAgQkKAgP7/D4NQGzYCACAgRQ0BICAgQjcDAAwBCyAHQQIgDUH/AXEiDyAPQQNsIAAgASACIAMgCSAoIAogF0EQahCzA0EASARAIBJBfzYCAEF6IQUMAQsgF0EQaiEUIA4hEUEAIQVBACEOQgAhQiMAQTBrIhgkAAJ/IA9BCWtBeU0EQCASQX82AgAgGkEANgIAIBVCgICAgICAgPi/fzcDAEF/DAELIBhBADYCECAYIA9BAWsiEDYCHCAYIA8gD2wiFkEBazYCGCAYIA8gEGw2AhRB/wEhGwNAIAVBBEcEQCAUIBhBEGogBUECdGooAgBqLQAAIhkgG0H/AXEiGyAZIBtJGyEbIBkgDkH/AXEiDiAOIBlJGyEOIAVBAWohBQwBCwsgDkH/AXEiBSAbQf8BcSIOa0EdTARAIBJBfzYCACAaQQA2AgAgFUKAgICAgICA+L9/NwMAQX4MAQsgBSAOakEBdiEZQQAhDkEAIQUCQANAIAVBBEYEQAJAAkADQCAOIgVBBEYNASAFQQFqIQ4gGEEsaiAFai0AAEEBRw0AIBhBLGogDkEDcWotAABBAUcNACAYQSxqIAVBAmpBA3FqLQAADQALIBogBTYCAEEAIQVB/wEhGwNAIAUgFkcEQCAFIBRqIg4gDi0AACIOIBlJOgAAIA4gGWsiDiAOQR91Ig5zIA5rIg4gGyAOIBtIGyEbIAVBAWohBQwBCwsgECEOAkACQAJAIBooAgAOBAABAgQHCyAPIRlBACEOA0AgDiAZRg0HIA4gD2whFkEAIQUDQCAFIA9HBEACQCAFIA5yRQ0AIA4gEEYiHSAFRXEgBSAQRiAdcXINACAUIAUgFmpqLQAAQQBHrSBCQgGGhCFCCyAFQQFqIQUMAQsLIA5BAWohDgwACwALIA8hGUEAIQ4DQCAOIBlGDQYgECEFA0AgBUEATgRAAkAgDkUgBSAQRnENACAOIBBGIhYgBSAQRnEgFiAFRXFyDQAgFCAFIA9sIA5qai0AAEEAR60gQkIBhoQhQgsgBUEBayEFDAELCyAOQQFqIQ4MAAsACwNAIA5BAEgNBSAOIA9sIRkgECEFA0AgBUEATgRAIAUgEEYiFiAOIBBGcSAFIA5yRSAWIA5FcXJyRQRAIBQgBSAZamotAABBAEetIEJCAYaEIUILIAVBAWshBQwBCwsgDkEBayEODAALAAsgEkF/NgIAIBpBADYCACAVQoCAgICAgID4v383AwBBfQwECwUgGEEsaiAFaiAZIBQgGEEQaiAFQQJ0aigCAGotAABLOgAAIAVBAWohBQwBCwsgDyEZA0AgDkEASA0BQQAhBQNAIAUgGUcEQCAFIA5yRSAORSAFIBBGcXJBACAOIBBGIAUbckUEQCAUIAUgD2wgDmpqLQAAQQBHrSBCQgGGhCFCCyAFQQFqIQUMAQsLIA5BAWshDgwACwALIBUgG7dEAAAAAAAAPkCjRAAAAAAAAPA/IBtBHkwbOQMAAkACQAJAIA1BhQpGIA1BhAhrQQJJcg0AIA1BgwRHBEAgDUGEBkYNASANQYMCRw0CIBggQqdB8OMAajAAADcDCEKW06Wzmc2ly+kAIEKIQgGDUA0DIBJBfzYCACAVQoCAgICAgID4v383AwBBfAwECyAYIEKnQbDjAGowAAA3AwggQkL/////D4MhQiARBEAgEUL+zu/u2/f28/4AIEKIp0EBcTYCAAtCgLCQgaCIgICBfyBCiEIBg1ANAiASQX82AgAgFUKAgICAgICA+L9/NwMAQXwMAwsgDSBCQQAgGEEIahDiBiIFQQBIBEAgEkF/NgIAIBVCgICAgICAgPi/fzcDAEF8DAMLIBFFIAVFcg0BIBEgBTYCAAwBCyAYIEI3AwgLIBIgGCkDCD4CAEEACyEFIBhBMGokACAgRQ0AICBCADcDAAsCQCAIQQJGIAhBBEtyDQACfyAGRQRAIBNBfzYCAEF/DAELAkACQCAIDgQAAQEAAQsgB0EAIAYoAhwiDiAOQQJ0IAAgASACIAMgCSAoIAogF0EQahCzA0EASARAIBNBfzYCAEF6DAILIAZBACAXQRBqIAYoAhwgEyAhICIQ5AYMAQsgB0EBIAYoAhwiDiAOQQJ0IAAgASACIAMgCSAoIAogF0EQahCzA0EASARAIBNBfzYCAEF6DAELIAZBASAXQRBqIAYoAhwgEyAhICIQ5AYLIQ4gBUEBRgRAIA4hBQwBCyAOQQFGDQAgBSAOcUEfdSAOcSEFCyAXQZDgAGokACAFQQZqIgVBBk0EQCAfIAVBAnRBkOMAaigCADYC7AELIAhBAk0EQCAfIBMgEiAIQQJJIgUbKAIANgIEIB8gISAaIAUbKAIANgIQIB8gIiAVIAUbKwMAOQMgCyAuQQFqIS4LIC1BAWohLQwBCwsgDCAuNgIAICdBEGokAEEAC4wIAQ9/IAAoAgAhCyAAKAIEIQxBAUG8IBCGAyIGRQRAQQBBA0H+DUEAEDZBARABAAtBBBBbEIMEIg0hD0EYEFsQgwQiCUEEahCNAhpByAYQWyIEQQxqEFIaIARBQGsQswIaIARByABqEI0CGiAEQdwAaiIBQczZATYCACABQQRqEFIaIAFCADcCGCABQgA3AhAgAUHc2QE2AgAgAUEgahBSGiABQSxqEFIaIAFBOGoQUhogBEGgAWoiA0KKgICAoAE3AgggA0IANwIAIANBEGoQUhogA0EBOgAcIANBIGoQUkIANwIMIANCgICAgICAgJDBADcCNCADQTxqEFIaIANByABqEFIaIANBgIDAiAQ2AlggA0HcAGoiAUIANwIMIAFCADcCACABQgA3AhQgAUEcahBSGiABQShqEFIaIANBkAFqEFIhASADQYgnEN4GIAFBJBCTAiAEQbwCaiIBQbDfAUEMEO0BIAFBMGpB4N8BQQwQ7QEgAUHgAGpBkOABQQwQ7QEgAUGQAWpBwOABQQwQ7QEgAUHAAWpB8OABQQwQ7QEgAUHwAWpBoOEBQQwQ7QEgAULNmbP4g4CA8MAANwK4AiABQs2Zs/az5sz5PjcCsAIgAUKAgID048yZ0z43AqgCIAFCzZmz7rPmzJk+NwKgAiAEQfwEahBSQbPmzPkDNgIMIARBjAVqIgFCADcCACABQQE6ABAgAUIANwIIIAFBFGpBAEHIABA5GiABQdwAahCNAhogAUHwAGoQUhogAUH8AGoQUhogBEGUBmoQUiIHQQxqEFIaIAdBGGoiARBSGiAHQYDIABCTAgJAIAEQPSICQYAISQRAIwBBIGsiCiQAAkBBgAggAmsiCCABEDIoAgAgASgCBGtBA3VNBEAgASAIEPwDDAELIAEQMiECIApBCGogASABED0gCGoQ+wMgARA9IAIQtgIhBSMAQRBrIgIkACACIAUoAgg2AgAgBSgCCCEOIAIgBUEIajYCCCACIA4gCEEDdGo2AgQgAigCACEIA0AgAigCBCAIRwRAIAUoAhAaIAIoAgAQlwYgAiACKAIAQQhqIgg2AgAMAQsLIAIQsgEgAkEQaiQAIAEgBRDoAiAFEOcCCyAKQSBqJAAMAQsgAkGACEsEQCABKAIAQYBAayECIAEQPSEFIAEgAhCvAyABIAUQjAQLCyAHQTI2AjAgB0GoCDYCLCAHQYAINgIoIAdDCtcjPDgCJCADQwAAQEA4AjQgA0MAAIBAOAI4IANB9AMQ3gYgBEEBOgAIIARCiICAgICAgKDAADcCACAJIAQQrQYgDyAJEK4GIAZCgYCAgHA3AhQgBiAMNgIQIAYgCzYCDCAGQQE2AgggBiAANgIEIAYgDTYCACAGC1IAIABCADcCaCAAQdoBNgIQIABB2wE2AgwgAEHcATYCCCAAQd0BNgIEIABB3gE2AgAgAEIANwJ8IABC/gA3AnQgAEGQwwI2AnAgAEEANgIUIAAL9wICBX8FfSMAQRBrIgUkAEF/IQcjAEFAaiIGJAACfyAAKgIcIAAqAiwiCiADlJMhDSAAKgIgIgsgA5QgACoCEJMhDiAAKgIMIAogApSTIQpBfyALIAKUIAAqAgCTIgsgACoCJCIMIAOUIAAqAhSTIgOUIA4gDCAClCAAKgIEkyIMlJMiAkMAAAAAWw0AGiAFIAMgCpQgDSAMjJSSIAKVOAIMIAUgCyANlCAKIA6UkyAClTgCCEEACyEAIAZBQGskAAJAIABBAEgNAAJ/IAUqAgwgASoCDCIClEMzM8tBlUMAAAA/kiIDi0MAAABPXQRAIAOoDAELQYCAgIB4CyIAQQBIDQAgASgCBCIIIABMDQACfyABKAIIIgmyIAIgBSoCCJRDMzPLwZWSQwAAAD+SIgKLQwAAAE9dBEAgAqgMAQtBgICAgHgLIgZBAEggBiAJTnINACAEIAEoAgAgBiAIbCAAamotAAA6AABBACEHCyAFQRBqJAAgBwvZAQEDfwJAIAAoArQCDQACQCAAKAIoQQNrDgUAAQEBAAELIAAoAiRBA0cNACAAKAIsQQJHDQAgACgCeEEDRw0AIAAoArACDQAgACgC2AEiASgCCEECRw0AIAEoAmBBAUcNACABKAK4AUEBRw0AIAEoAgxBAkoNACABKAJkQQFHDQAgASgCvAFBAUcNACABKAIkIgIgACgCxAJHDQAgASgCfCACRw0AIAEoAtQBIAJHDQAgASgCKCICIAAoAsgCRw0AIAEoAoABIAJHDQAgASgC2AEgAkYhAwsgAwvCAgIBfwR9IwBBQGoiBiQAAkAgAARAIABBCGogASAGQRBqELADQX8hASAAQbgBaiIAIAYqAhwgBioCECAClCAGKgIUIAOUkpIgBioCPCAGKgIwIAKUIAYqAjQgA5SSkiIHlSIIIAYqAiwgBioCICAClCAGKgIkIAOUkpIgB5UiAiAEIAUQcUEASA0BIAAgBCoCACAFKgIAIAZBDGogBkEIahDhAUEASA0BQX9BACAIIAYqAgyTIgMgA5QgAiAGKgIIkyICIAKUkkMAAIA/XhshAQwBCyABKgIcIQcgASoCFCEIIAEqAhAhCSAEIAEqAgwgASoCACAClCABKgIEIAOUkpIgASoCLCABKgIgIAKUIAEqAiQgA5SSkiIKlTgCACAFIAcgCSAClCAIIAOUkpIgCpU4AgBBACEBCyAGQUBrJAAgAQvaCgIKfwF9IAMoAhghDAJAQQEgAnRBoOABcUUgAkEOS3JFBEBBACADKAIQIgJrIgcgAygCFEEBaiIIIAcgCEobIQ5BACADKAIIIghrIgkgAygCDEEBaiILIAkgC0obIQ8gACAEIAhBAXRrIAUgAkEBdGsgAWxqaiEFIAFBAXQhAUEAIQsDQCAJIQIgBSEIIAcgDkYNAgNAIAIgD0ZFBEAgDC8BACIEQYAgRwRAIAsgCC0AACIAaiELIAAgBGwgDWohDSAAIABsIApqIQoLIAJBAWohAiAMQQJqIQwgCEECaiEIDAELCyAHQQFqIQcgASAFaiEFDAALAAsgAkEBTQRAQQAgAygCEGsiByADKAIUQQFqIgIgAiAHSBshDgNAIAcgDkYNAkEAIAMoAggiAmsiCCADKAIMQQFqIgkgCCAJShshDyAAIAdBAXQgBWogAWwgBGogAkEBdGtBA2xqIQIDQCAIIA9GRQRAIAwvAQAiEEGAIEcEQCALIAItAAIgAi0AASACLQAAampBA24iCWohCyAJIBBsIA1qIQ0gCSAJbCAKaiEKCyAIQQFqIQggDEECaiEMIAJBBmohAgwBCwsgB0EBaiEHDAALAAsgAkF+cUECRgRAQQAgAygCEGsiByADKAIUQQFqIgIgAiAHSBshDgNAIAcgDkYNAkEAIAMoAggiAmsiCCADKAIMQQFqIgkgCCAJShshDyAAIAdBAXQgBWogAWwgBGogAkEBdGtBAnRqIQIDQCAIIA9GRQRAIAwvAQAiEEGAIEcEQCALIAItAAIgAi0AASACLQAAampBA24iCWohCyAJIBBsIA1qIQ0gCSAJbCAKaiEKCyAIQQFqIQggDEECaiEMIAJBCGohAgwBCwsgB0EBaiEHDAALAAsgAkF9cUEERgRAQQAgAygCEGsiByADKAIUQQFqIgIgAiAHSBshDgNAIAcgDkYNAkEAIAMoAggiAmsiCCADKAIMQQFqIgkgCCAJShshDyAAIAdBAXQgBWogAWwgBGogAkEBdGtBAnRqIQIDQCAIIA9GRQRAIAwvAQAiEEGAIEcEQCALIAItAAMgAi0AAiACLQABampBA24iCWohCyAJIBBsIA1qIQ0gCSAJbCAKaiEKCyAIQQFqIQggDEECaiEMIAJBCGohAgwBCwsgB0EBaiEHDAALAAsCQAJAIAJBB2sOAgABAgtBACADKAIQayIHIAMoAhRBAWoiAiACIAdIGyEOA0AgByAORg0CQQAgAygCCCIIayICIAMoAgxBAWoiCSACIAlKGyEPIAAgB0EBdCAFaiABbCAEaiAIQQF0a0EBdGohCANAIAIgD0ZFBEAgDC8BACIQQYAgRwRAIAsgCC0AASIJaiELIAkgEGwgDWohDSAJIAlsIApqIQoLIAJBAWohAiAMQQJqIQwgCEEEaiEIDAELCyAHQQFqIQcMAAsAC0EAIAMoAhBrIgcgAygCFEEBaiICIAIgB0gbIQ4DQCAHIA5GDQFBACADKAIIIghrIgIgAygCDEEBaiIJIAIgCUobIQ8gACAHQQF0IAVqIAFsIARqIAhBAXRrQQF0aiEIA0AgAiAPRkUEQCAMLwEAIhBBgCBHBEAgCyAILQAAIglqIQsgCSAQbCANaiENIAkgCWwgCmohCgsgAkEBaiECIAxBAmohDCAIQQRqIQgMAQsLIAdBAWohBwwACwALQQAhDCAGIAsgC2wgAygCJCIAbSIBIApHBH8gDSADKAIgIAtsIABta0HkAGwgAygCHG1B5ABsAn8gCiABa7KRIhGLQwAAAE9dBEAgEagMAQtBgICAgHgLbQVBAAs2AgAL8wEBBn8gACgC4AMiASAAQQFBgAggACgCBCgCABEEADYCCCABIABBAUGACCAAKAIEKAIAEQQANgIMIAEgAEEBQYAIIAAoAgQoAgARBAA2AhAgASAAQQFBgAggACgCBCgCABEEACIDNgIUIAEoAhAhBCABKAIMIQUgASgCCCEGQQAhAUGAfyEAA0AgBiABQQJ0IgJqIABB6c0FbEGAgAJqQRB1NgIAIAIgBWogAEGiiwdsQYCAAmpBEHU2AgAgAiAEaiAAQa6SfWw2AgAgAiADaiAAQefPfmxBgIACajYCACAAQQFqIQAgAUEBaiIBQYACRw0ACwtFAQJ9IAEqAgAgACoCACIDkyACKgIEIAAqAgQiBJOUIAEqAgQgBJMgAioCACADk5STQwAAAD+UIgOMIAMgA0MAAAAAXRsL2gYBB39BASEBAkACQCAAKALUAiICQQFGBEAgACAAKALYAiICKAIcNgLoAiAAIAIoAiAiAzYC7AIgAkEBNgJAIAJCgYCAgBA3AjggAkEBNgJIIAIgAigCJDYCRCACIAMgAigCDCICcCIDIAIgAxs2AkwgAEIBNwPwAgwBCyACQQVrQXtNBEAgACgCACIBIAI2AhggAUEbNgIUIAAoAgBBBDYCHCAAIAAoAgAoAgARAQALIAAgACgCHCAAKAKsAyAAKAK8AmwQajYC6AIgACgCICAAKAKsAyAAKALAAmwQaiECIABBADYC8AIgACACNgLsAiAAKALUAkEATA0BIABB9AJqIQQDQCAAIANBAnRqKALYAiIBIAEoAggiBTYCOCABIAEoAgwiBjYCPCABIAUgBmwiAjYCQCABIAUgASgCJGw2AkQgASABKAIcIAVwIgcgBSAHGzYCSCABIAEoAiAgBnAiASAGIAEbNgJMIAAoAvACIAJqQQtOBEAgACgCACIBQQ42AhQgACABKAIAEQEACwJAIAJBAEwNACACQQFrIQVBACEBIAJBA3EiBgRAA0AgACAAKALwAiIHQQFqNgLwAiAAIAdBAnRqIAM2AvQCIAJBAWshAiABQQFqIgEgBkcNAAsLIAVBA0kNAANAIAAgACgC8AIiAUEBajYC8AIgBCABQQJ0aiADNgIAIAAgACgC8AIiAUEBajYC8AIgBCABQQJ0aiADNgIAIAAgACgC8AIiAUEBajYC8AIgBCABQQJ0aiADNgIAIAAgACgC8AIiAUEBajYC8AIgBCABQQJ0aiADNgIAIAJBBWshASACQQRrIQIgAUF+SQ0ACwsgA0EBaiIDIAAoAtQCIgFIDQALIAFBAEwNAQtBACECA0AgACACQQJ0aigC2AIiAygCUEUEQAJAIAMoAhAiAUEDTQRAIAAgAUECdGooAqQBDQELIAAoAgAiBCABNgIYIARBNjYCFCAAIAAoAgAoAgARAQALIAMgAEEBQYQBIAAoAgQoAgARBAAgACABQQJ0aigCpAFBhAEQPjYCUCAAKALUAiEBCyACQQFqIgIgAUgNAAsLIAAgACgC1AMoAgARAQAgACAAKALEAygCABEBACAAKALMAyAAKALEAygCBDYCAAubDQMPfQZ/AX4jAEEgayIVJAACQAJAIAJBAEgNAAJAAkACQAJAAkAgAg4EAAECAwQLIAVBAm2yIQogBEECbbIhCyAFQQhtsiEMIARBCG2yIQkgBUEHbEEIbbIhDSAEQQdsQQhtsiEOQQAhAkF/IQQDQAJAAkACQCAAIAJBGGxqIgEoAgxBAWoOAgIAAQsgASoCECIGIAldIAYgDl5yDQAgASoCFCIHIAxdIAcgDV5yDQAgBiALkyIGIAaUIAcgCpMiBiAGlJIiBiAIXkUNACACIQQgBiEICyACQQFqIQIMAQsLQX8hAiAEQX9GDQUgACAEQRhsakEBNgIMIAQhAgwFCyAFQQhtsiEKIARBCG2yIQsgBUEHbEEIbbIhDCAEQQdsQQhtsiEJQX8hBEEAIQIDQAJAAkACQCAAIAJBGGxqIgEoAgxBAWoOAgIAAQsgASoCECIGIAtdIAYgCV5yDQAgASoCFCIHIApdIAcgDF5yDQAgBiADKgIAkyIGIAaUIAcgAyoCBJMiBiAGlJIiBiAIXkUNACAGIQggAiEECyACQQFqIQIMAQsLQX8hAiAEQX9GDQQgACAEQRhsakEBNgIMIAQhAgwECyAFQQhtsiEKIARBCG2yIQsgBUEHbEEIbbIhDCAEQQdsQQhtsiEJQX8hBEEAIQIDQAJAAkACQCAAIAJBGGxqIgEoAgxBAWoOAgIAAQsgASoCECIGIAtdIAYgCV5yDQAgASoCFCIHIApdIAcgDF5yDQAgBiADKgIAIgaTIAMqAgwgAyoCBCINk5QgAyoCCCAGkyAHIA2TlJMiBiAGlCIGIAheRQ0AIAYhCCACIQQLIAJBAWohAgwBCwtBfyECIARBf0YNAyAAIARBGGxqQQE2AgwgBCECDAMLIAMgA0EIaiAVQRxqIBVBGGoQ4gMgAyADQRBqIBVBFGogFUEQahDiA0ECQQEgFSoCFCIHIBUqAhgiCpQiCCAVKgIcIgsgFSoCECIMlCIGk0MAAAAAYCIYGyEWQQFBAiAYGyEZIAYgCJMhDiADQRhqIRogBUEIbbIhDyAEQQhtsiEQIAVBB2xBCG2yIREgBEEHbEEIbbIhEiAKjCETIAyMIRRBfyECQQAhBUMAAAAAIQgDQAJAAkACQCAAIAVBGGxqIgEoAgxBAWoOAgIAAQsgASoCECIGIBBdIAYgEl5yDQAgASoCFCIJIA9dIAkgEV5yDQAgAyAGOAIYIAMgASoCFDgCHCADIBogFUEMaiAVQQhqEOIDAkAgGEUgFSoCDCIGIAqUIAsgFSoCCCINjCIJlJJDAAAAAGBFckUEQEEDQQIgBiAMlCAHIAmUkkMAAAAAYCIBGyEEQQJBAyABGyEBQQEhFwwBCyAGIAyUIAcgCZSSQwAAAABgRSAOQwAAAABgRXJFBEBBA0EBIAYgCpQgCyAJlJJDAAAAAGAiARshBEEBQQMgARshAUECIRcMAQsgCyANlCAGIBOUkkMAAAAAYEUNAUEDIRcgGSEBIBYhBCAHIA2UIAYgFJSSQwAAAABgRQ0BCyADIAMgF0EDdGogAyABQQN0aiIBELYFIAMgASADIARBA3RqELYFkiIGIAheRQ0AIAYhCCAFIQILIAVBAWohBQwBCwsgAkF/Rg0CIAAgAkEYbGpBATYCDAwCCwJAA0ACQAJAAkAgASAWQRhsaiIDKAIMQQFqDgICAAELIANBATYCDEEAIQIDQAJAAkAgACACQRhsaiIEKAIMQQFqDgIDAAELIAMoAgAgBCgCAEcNACADKAIEIAAgAkEYbGoiBSgCBEcNACADKAIIIAUoAghGDQULIAJBAWohAgwACwALIBZBAWohFgwBCwsgAUF/NgIMQQAhAkHIlQRBAEHIlQQoAgAiAQR/IAEFQYCbBEEAEKAFp0EBa603AwBByJUEKAIAC0EBaiIBIAFBgAFGGzYCAEEAIQUDQAJAAkACQCAAIAJBGGxqKAIMQQFqDgICAAELIAVBAWohBQsgAkEBaiECDAELCyAFRQ0BAn9BgJsEQYCbBCkDAEKt/tXk1IX9qNgAfkIBfCIbNwMAIAWyIBtCIYinspRDAAAAMJQiCItDAAAAT10EQCAIqAwBC0GAgICAeAshAUEAIQVBACEEA0ACQAJAIAAgBUEYbGoiAygCDCICQQFqDgIFAAELIAEgBEYEQCADQQE2AgwgBSECDAULIARBAWohBAsgBUEBaiEFDAALAAsgBEEBNgIMDAELQX8hAgsgFUEgaiQAIAILJgEBfyAAKAIEIgEEQCAAIAEoAigRAQALIABBADYCFCAAQQA2AgQLOwEBfyAAKAIEIgEEQCAAQQEgASgCJBECACAAKAIQBEAgAEEANgK4AiAAQcgBNgIUDwsgAEHkADYCFAsL/wgCC38CfSMAQTBrIgQkACAEQoiAgIAQNwIkIAQgADYCICAEQQE2AhggBCADNgIUIAQgATYCECAEQQg2AgggBCADNgIEIAQgAjYCAAJAAn8gBCIJKAIIIAQoAgQQxgYiAARAQX8hBgJAIAAoAgQiAiAJKAIIRw0AIAAoAggiASAJKAIERw0AQQAhBiACQQAgAkEAShshByABQQAgAUEAShshCCAAKAIAIQNBACEBA0AgASAHRg0BIAkoAgAgAUECdGohBEEAIQUDQCAFIAhHBEAgAyAEKgIAOAIAIAVBAWohBSADQQRqIQMgBCACQQJ0aiEEDAELCyABQQFqIQEMAAsACyAAIAZBAE4NARogABBDC0EACyINRQRAQX8hAAwBCwJAIA0gCRC7BiILRQRAQX8hAAwBCwJAIA0gCUEQahC7BiIORQRAQX8hAAwBC0EAIQBBACEDIAsoAgAhByALKAIEIQZBACEBIwBB0A9rIggkAAJAIAZB9ANKDQACQAJAAkAgBg4CAwABCyAHQwAAgD8gByoCAJU4AgAMAQsgBkEAIAZBAEobIQwDQCABIAxGBEADQCADIAxGBEBBACEDA0AgDCADIgFGDQUDQAJAIAEgBkYEQCAGIQEMAQsgCCABQQJ0aigCACADRg0AIAFBAWohAQwBCwsgCCABQQJ0IgJqIAggA0ECdCIBaigCADYCACABIAdqIQEgAiAHaiEEQQAhBQNAIAUgDEcEQCAEKgIAIQ8gBCABKgIAOAIAIAEgDzgCACAFQQFqIQUgASAGQQJ0IgJqIQEgAiAEaiEEDAELCyADQQFqIQMMAAsAC0MAAAAAIQ9BfyEFIAcgAyIBIAZsQQJ0aiICIQQDQCABIAZHBEAgBCoCAIsiECAPIA8gEF0iChshDyABIAUgChshBSABQQFqIQEgBCAGQQJ0aiEEDAELC0EAIQEgBUF/RiAPQ//m2y5fcg0EIAggBUECdGoiASgCACEEIAEgCCADQQJ0aiIBKAIANgIAIAEgBDYCACAHIAUgBmxBAnRqIQFBACEFIAIhBANAIAUgBkcEQCABKgIAIQ8gASAEKgIAOAIAIAQgDzgCACAFQQFqIQUgBEEEaiEEIAFBBGohAQwBCwsgAioCACEPQQEhBCACIQEDQCAEIAZHBEAgASABKgIEIA+VOAIAIARBAWohBCABQQRqIQEMAQsLIAFDAACAPyAPlTgCAEEAIQoDQCAGIApHBEAgAyAKRwRAIAcgBiAKbEECdGoiASoCAIwhD0EBIQQgAiEFA0AgBCAGRwRAIAEgDyAFKgIAlCABKgIEkjgCACAFQQRqIQUgBEEBaiEEIAFBBGohAQwBCwsgASAFKgIAIA+UOAIACyAKQQFqIQoMAQsLIANBAWohAwwACwAFIAggAUECdGogATYCACABQQFqIQEMAQsACwALIAchAQsgCEHQD2okAAJAQQBBfyABG0EASARAQX8hAAwBCyAJQSBqIAsgDhCxBhoLIA4QQwsgCxBDCyANEEMLIAlBMGokACAAC7sEAhN9AX8jAEEwayIXJAACQCAABEAgAEEIaiABIBcQsAMgFyoCHCIIIBcqAhAiECACKgIAIgSUIg8gAioCBCIFIBcqAhQiB5QiCpKSIBcqAiwiCyAXKgIgIgwgBJQiESAFIBcqAiQiDZQiEpKSIgaVIQkgFyoCDCIOIBcqAgAiEyAElCIUIAUgFyoCBCIVlCIWkpIgBpUhBiAIIA8gBUMAACBBkiIFIAeUkpIgCyARIAUgDZSSkiIHlSEPIA4gFCAFIBWUkpIgB5UhByAIIBAgBEMAACBBkiIElCAKkpIgCyAMIASUIBKSkiIFlSEIIA4gEyAElCAWkpIgBZUhBAwBCyABKgIcIgkgASoCECIIIAIqAgAiBJQiECACKgIEIgVDAAAgQZIiBiABKgIUIgqUkpIgASoCLCILIAEqAiAiDCAElCIRIAYgASoCJCINlJKSIgeVIQ8gASoCDCIOIAEqAgAiEiAElCITIAYgASoCBCIGlJKSIAeVIQcgCSAIIARDAAAgQZIiBJQgBSAKlCIKkpIgCyAMIASUIAUgDZQiDJKSIg2VIQggDiASIASUIAUgBpQiBZKSIA2VIQQgCSAQIAqSkiALIBEgDJKSIgaVIQkgDiATIAWSkiAGlSEGCyADIAQgBpMiBCAElCAIIAmTIgQgBJSSIgQgByAGkyIFIAWUIA8gCZMiBSAFlJIiBSAEIAVdIgAbkUNcjyJAlDgCBCADIAUgBCAAG5FDXI8iQJQ4AgAgF0EwaiQACz8BAX8gACgCACEBIABBADYCACABBEAgABBTIgAtAAQEQCAAKAIAIAFBCGoQvgULIAEEQCAAKAIAGiABEDELCwsLACABQQhqENMFGgsnAQJ/IAEoAgAhAiMAQRBrIgMkACAAIAFBBGogAhD7BiADQRBqJAALHgEBf0EQEFsiASAAKQIINwIIIAEgACkCADcCACABCyIAAkAgAARAIAAgASACIAMQvAUMAQtBACABIAIgAxC8BQsLDQAgACABIAJBBBClBAsJACAAQRAQtwMLdwEBfyAAEMsFIAAQMiAAKAIAIAAoAgQgAUEEaiICEJQCIAAgAhBJIABBBGogAUEIahBJIAAQMiABEDwQSSABIAEoAgQ2AgAgABC4ARogACgCABogACgCACAAEIQCQQR0ahogACgCACAAEIQCQQR0ahogACgCABoLZAECfyMAQRBrIgUkACAFQQA2AgwgAEEMaiADENQBIAEEQCAAKAIQIAEQ3AUhBAsgACAENgIAIAAgBCACQQR0aiICNgIIIAAgAjYCBCAAEDwgBCABQQR0ajYCACAFQRBqJAAgAAuSAQEDfyMAQRBrIgIkACACIAE2AgwjAEEQayIDJAAgABAyGiADQf////8ANgIMIANB/////wc2AgggA0EMaiADQQhqEJUCKAIAIQQgA0EQaiQAIAEgBE0EQCAAEIQCIgAgBEEBdkkEQCACIABBAXQ2AgggAkEIaiACQQxqEG8oAgAhBAsgAkEQaiQAIAQPCxCVAwALDQAgACgCACABQQR0agsEAEECCycBAX8jAEEQayICJAAgAEEDQeC0AkHstAJB6AAgARADIAJBEGokAAsLACAAIAFBEBDyAQs1ACAAKAIAGiAAKAIAIAAQhAJBBHRqGiAAKAIAIAAQuAFBBHRqGiAAKAIAIAAQhAJBBHRqGguWDwEDfyMAQRBrIgEkACMAQSBrIgAkAEH4sAJBsLECQfSxAkEAQYSyAkHUAEGHsgJBAEGHsgJBAEGI9AFBibICQdUAEC4jAEEQayICJABB+LACQQFBjLICQYSyAkHsAEHWABAqIAJBEGokACAAQQA2AhwgAEHXADYCGCAAIAApAxg3AxAjAEEQayICJAAgAiAAKQIQNwMIQfiwAkG2/AFBA0GQsgJBsLICQe0AIAJBCGoQ5ANBABAHIAJBEGokACAAQQA2AhwgAEHYADYCGCAAIAApAxg3AwgjAEEQayICJAAgAiAAKQIINwMIQfiwAkGW/gFBBEHAsgJB0LICQe4AIAJBCGoQ5ANBABAHIAJBEGokACAAQQA2AhwgAEHZADYCGCAAIAApAxg3AwAjAEEQayICJAAgAiAAKQIANwMIQfiwAkGY/gFBAkHYsgJB4LICQe8AIAJBCGoQ5ANBABAHIAJBEGokACMAQRBrIgIkACACQdoANgIMQfiwAkGM8QFBA0HksgJBjLMCQfAAIAJBDGoQlwNBABAHIAJBEGokACMAQRBrIgIkACACQdsANgIMQfiwAkGI8QFBBEGgswJBsLMCQfEAIAJBDGoQlwNBABAHIAJBEGokACAAQSBqJABB+/gBQScQ3QJBzvkBQSgQpgFBhaYCQSkQpgFBy/cBQSoQ5gNBqPcBQSsQ5gNB8/cBQSwQ5gNBwvsBQS0QgwJBt+8BQS4QpgEjAEEQayIAJABBxpECQQJBuLQCQeCyAkHgAEEvEAMgAEEQaiQAQcb2AUEwEN0CQZTmAUExEIMCQcj+AUEyEN0CQcvvAUEzEN0CQdr+AUE0EIMCQdHuAUE1EIMCQZv3AUE2EKYBQbX7AUE3EKYBQeP3AUE4EKYBQbj3AUE5EN0CQZH3AUE6EIMCQdb3AUE7EIMCIwBBEGsiACQAQbuRAkEDQcC0AkGMswJB4QBBPBADIABBEGokAEGosgJBh/cBQcy0AkHiAEGJsgJB4wAQLSABQQhqIgBB5YUCQQAQmQNB8fwBQQQQmQNBn/ABQQgQmQNBxPwBQQwQmQMaQaiyAhArQZ6EAkE9EIMCQauEAkE+EKYBQdqCAkE/EKYBIwBBEGsiAiQAQY78AUECQdC0AkHYtAJB5gBBwAAQAyACQRBqJAAjAEEQayICJABBmvwBQQFB3LQCQYSyAkHnAEHBABADIAJBEGokAEGa/wFBwgAQyQVBsf8BQcMAEOUDQcj/AUHEABDJBUHe/wFBxQAQ5QNB2IQCQcYAEKYCQemEAkHHABCmAUHJhQJByAAQpgJB1oUCQckAEKYBQe6DAkHKABCmAkGGhAJBywAQpgEjAEEQayICJABBtPkBQQNBjLUCQZi1AkHrAEHMABADIAJBEGokAEHB+QFBzQAQ5QNB8f4BQc4AEKYCQYP/AUHPABCmAUG4hAJB0AAQpgJByIQCQdEAEKYBQfqEAkHSABCmAkGLhQJB0wAQpgFB55wCQdT4AxBCQYSdAkHc+AMQQkGnlAJB2PgDEEIgAUEANgIIQdeaAiAAEEIgAUEBNgIIQeiaAiAAEEIgAUEANgIIQfCbAiAAEEIgAUEANgIIQduWAiAAEEIgAUEBNgIIQcKWAiAAEEIgAUEBNgIIQYacAiAAEEIgAUHkADYCCEHFmAIgABBCIAFBADYCCEH4mgIgABBCIAFBATYCCEGSmwIgABBCIAFBADYCCEGfnAIgABBCIAFBADYCCEGLlQIgABBCIAFBATYCCEGmlQIgABBCIAFBAjYCCEH6lQIgABBCIAFBAzYCCEGfkgIgABBCIAFBBDYCCEHFkgIgABBCIAFBADYCCEGsmwIgABBCIAFBADYCCEHSkQIgABBCIAFBATYCCEHqkQIgABBCIAFBAjYCCEHqpQIgABBCIAFBAjYCCEHOmwIgABBCIAFBBTYCCEG3kwIgABBCIAFCgICAgICAgPA/NwMIQbCYAkGE9AMgACsDABASIAFBADYCCEHgmAIgABBCIAFBATYCCEHAlQIgABBCIAFBAjYCCEHolQIgABBCIAFBAzYCCEHRlAIgABBCIAFBBDYCCEHSlQIgABBCIAFBAzYCCEGWpQIgABBCIAFBgwQ2AghBzaUCIAAQQiABQYMCNgIIQeekAiAAEEIgAUEENgIIQYOlAiAAEEIgAUGEBjYCCEGvpQIgABBCIAFBhAg2AghBqqQCIAAQQiABQYUINgIIQcikAiAAEEIgAUGFCjYCCEHmowIgABBCIAFBBTYCCEGXpAIgABBCIAFBBjYCCEGEpAIgABBCIAFBADYCCEHklwIgABBCIAFBATYCCEH4lgIgABBCIAFBAjYCCEHqkgIgABBCIAFBAzYCCEGQmgIgABBCIAFBADYCCEG2mgIgABBCIAFBATYCCEGTlgIgABBCIAFBAjYCCEHUnQIgABBCIAFBAzYCCEGMkwIgABBCIAFBBDYCCEGgnQIgABBCIAFBBTYCCEGxlwIgABBCIAFBBjYCCEG6nAIgABBCIAFBBzYCCEHklAIgABBCIAFBCDYCCEGDmAIgABBCIAFBCTYCCEHokwIgABBCIAFBEGokAAtXAQR/A0ACQEEAIQEgAkEDRg0AA0AgAUEERgRAIAJBAWohAgwDBSABQQN0IgMgAkEFdCIEQZCYBGpqIAAgBGogA2orAwA5AwAgAUEBaiEBDAELAAsACwsL8RUCHHwLfyMAQdAAayIhJABBfyEoAkAgA0EESA0AA0AgAyAiRwRAICJBGGwhIyAiQQFqISIgAiAjaisDEEQAAAAAAAAAAGENAQwCCwsgACsDAEQAAAAAAAAAAGENACAAKwMgRAAAAAAAAAAAYg0AIAArAyhEAAAAAAAAAABhDQAgACsDQEQAAAAAAAAAAGINACAAKwNIRAAAAAAAAAAAYg0AIAArA1BEAAAAAAAA8D9iDQAgACsDGEQAAAAAAAAAAGINACAAKwM4RAAAAAAAAAAAYg0AIAArA1hEAAAAAAAAAABiDQAgA0EBdCIiQQgQsQEiI0UEQEEAQQNBlAtBABA2DAELICJBARCxASIlBEAgJSgCACEpICMoAgAhKgNAIAMgJkcEQCAqICZBB3RqIiIgAiAmQRhsaiIkKwMAOQMAICQrAwghBiAiQgA3AyggIkIANwMgICJCADcDGCAiQoCAgICAgID4PzcDECAiIAY5AwggIiABICZBBHQiK2oiJysDACAkKwMAmqI5AzAgJysDACEGICQrAwghBSAiQgA3A1AgIkIANwNIICJBQGtCADcDACAiIAYgBZqiOQM4ICIgJCsDADkDWCAkKwMIIQYgIkKAgICAgICA+D83A2ggIiAGOQNgICIgJysDCCAkKwMAmqI5A3AgIiAnKwMIICQrAwiaojkDeCApICtqIiIgJysDADkDACAiICcrAwg5AwggJkEBaiEmDAELCyAjELgGIgFFBEAgIxBDICUQQ0EAQQNB8B1BABA2DAILIAEgIxDpAiIDRQRAICMQQyAlEEMgARBDQQBBA0GoIUEAEDYMAgsgASAlEOkCIiJFBEAgIxBDICUQQyABEEMgAxBDQQBBA0GLJkEAEDYMAgsgAxDkAkEASARAICMQQyAlEEMgARBDIAMQQyAiEENBAEEDQcUsQQAQNgwCCyADICIQ6QIiJEUEQCAjEEMgJRBDIAEQQyADEEMgIhBDQQBBA0GjM0EAEDYMAgsgACsDMCEWICQoAgAiAisDECEeIAIrAyghHyACKwMYIQggAisDACENIAIrAzAhBiAAKwMAIRcgACsDCCEYIAArAyghGSACKwMgIQcgAisDCCEJIAArAxAhGiACKwM4IQUgIxBDICUQQyABEEMgAxBDICIQQyAkEEMgISAFIAUgBaIgCSAaIAWioSAYIAcgFiAFoqEgGaMiBaKhIBejIgcgB6IgBSAFoqCgnyIbozkDKCAhIAUgG6M5AyAgISAHIBujOQMYICEgBiAGIAaiIA0gGiAGoqEgGCAIIBYgBqKhIBmjIgaioSAXoyIFIAWiIAYgBqKgoJ8iHKM5AxAgISAGIByjOQMIICEgBSAcozkDAEEAIQBBACEBAkAgISsDACIJICErAyAiE6IgISsDGCIQICErAwgiDKKhIgUgBaIgDCAhKwMoIhSiIBMgISsDECIRoqEiByAHoiARIBCiIBQgCaKhIgggCKKgoJ8iBkQAAAAAAAAAAGENACAFIAajIQUCfCAIIAajIg4gCaIgByAGoyIPIAyaoqAiCEQAAAAAAAAAAGIEQCAMIQcgCSENIA4hCiAPIQYgEQwBCyAFIA4gBSAJoiAPIBGaoqAiC0QAAAAAAAAAAGIiABsiCiAJIBEgABsiDaIgDyAFIAAbIgYgESAMIAAbIgeioSEIIA4gDyAAGyEFIAtEAAAAAAAAAABhIQEgDCAJIAAbCyEOIAhEAAAAAAAAAABhDQAgByAFoiAOIAqioSAIoyIPIBEgFKIgCSAQoiAMIBOioKAiCZogCSAJRAAAAAAAAAAAYxsiCUQAAAAAAADwP6CfRAAAAAAAAPA/IAmhn6BEAAAAAAAA4D+iIh0gCqIgCKMiDKIgHSAGoiAGIAeiIAogDaKhIgijIgcgDSAFoiAOIAaioSAIoyIOoqAiESARoiAMIAyiIAcgB6KgRAAAAAAAAPC/oCAPIA+iIA4gDqKgRAAAAAAAAPA/oCILoqEiCEQAAAAAAAAAAGMNACAOIBGaIAifIhKhIAujIgiiIAegIQkgDyAIoiAMoCENIA4gEiARoSALoyILoiAHoCESIA8gC6IgDKAhDAJ8IAAEQCAKIQcgBSEKIAYhBSAMIREgEiEMIA0hDyAIIQ4gCSENIAsMAQsgAUUEQCAFIQcgBiEFIAwhESALIQwgDSEPIAkhDiAIIQ0gEgwBCyAGIQcgCyERIAghDyAJIQ4gEgshFUEAIQACfyAKIBCiIAUgE6KhIglEAAAAAAAAAABiBEAgEyEGIBAhEiAKIQggBSELQQAMAQsgByAKIAcgEKIgBSAUoqEiIEQAAAAAAAAAAGIiABsiCCAQIBQgABsiEqIgBSAHIAAbIgsgFCATIAAbIgaioSEJIAogBSAAGyEHIBMgECAAGyEUICBEAAAAAAAAAABhCyEBIAlEAAAAAAAAAABhDQAgBiAHoiAUIAiioSAJoyIFIB0gCKIgCaMiCaIgHSALoiALIAaiIAggEqKhIgajIgogEiAHoiAUIAuioSAGoyIHoqAiCCAIoiAJIAmiIAogCqKgRAAAAAAAAPC/oCAFIAWiIAcgB6KgRAAAAAAAAPA/oCIToqEiBkQAAAAAAAAAAGMNACAHIAiaIAafIhKhIBOjIguiIAqgIRAgBSALoiAJoCEGIAcgEiAIoSAToyIIoiAKoCEKIAUgCKIgCaAhBwJ8IAAEQCAHIQkgCCEFIAohByAGIQggECEGIAsMAQsgAUUEQCAHIQkgCiEFIAghByAGIQggCyEGIBAMAQsgCCEJIAohBSALIQggEAshCiANIAaiIA8gCKIgDiAKoqCgIguaIAsgC0QAAAAAAAAAAGMbIQsgDSAHoiAPIAmiIA4gBaKgoCIQmiAQIBBEAAAAAAAAAABjGyEQAkACQAJAIAwgB6IgESAJoiAVIAWioKAiE5ogEyATRAAAAAAAAAAAYxsiEyAMIAaiIBEgCKIgFSAKoqCgIhKaIBIgEkQAAAAAAAAAAGMbIhJjBEAgECATZARAIAsgE2RFDQIgISAMOQMQICEgFTkDCCAhIBE5AwAMBAsgISANOQMQICEgDjkDCCAhIA85AwAgByAGIAsgEGQiABshByAFIAogABshBSAJIAggABshCQwDCyAQIBJkBEAgCyASZEUNASAhIAw5AxAgISAVOQMIICEgETkDAAwCCyAhIA05AxAgISAOOQMIICEgDzkDACAHIAYgCyAQZCIAGyEHIAUgCiAAGyEFIAkgCCAAGyEJDAILICEgDTkDECAhIA45AwggISAPOQMACyAIIQkgCiEFIAYhBwsgISAHOQMoICEgBTkDICAhIAk5AxgLICFBQGsgISsDACIGICErAyAiBaIgISsDGCIHICErAwgiCKKhIg0gDSANoiAIICErAygiDaIgBSAhKwMQIgmioSIKIAqiIAkgB6IgDSAGoqEiDCAMoqCgnyIPoyIOOQMAICEgDCAPoyIMOQM4ICEgCiAPoyIKOQMwIAQgCTkDQCAEIAg5AyAgBCAGOQMAIAQgDTkDSCAEIAU5AyggBCAHOQMIIAQgDjkDUCAEIAw5AzAgBCAKOQMQIAREAAAAAAAA8D8gHCAboEQAAAAAAADgP6IiBqM5A1ggBCAfIBahIBmjIgUgBqM5AzggBCAeIBqhIBggBaKhIBejIAajOQMYQQAhKAwBCyAjEENBAEEDQeUXQQAQNgsgIUHQAGokACAoC4cJAgp/BXwjAEGgAWsiCCQAQX8hBQJAIAEoAggiBkEESA0AAn8gACsDgAEgBreiIhCZRAAAAAAAAOBBYwRAIBCqDAELQYCAgIB4CyEHIAZB4ABsEDciCUUEQEEAQQNBhQtBABA2DAELIAZBBHQQNyIKRQRAQQBBA0GFC0EAEDYgCRAxDAELIAZBA3QiBRA3Ig1FBEBBAEEDQYULQQAQNiAJEDEgChAxQX8hBQwBCyAFEDciDARAIAdBBCAHQQRKG0EBayEHQQAhBgNAQQAhBSAGQQNGBEAgDCAHQQN0aiEOQQAhAgJAA0AgACADIAhBMGoQkgRBACEFA0AgASgCCCIGIAVKBEAgCEGQAWogCEEwaiABKAIEIAVBGGxqEPAFQQBIDQMgBUEEdCIGIAEoAgBqIgcrAwAhESAIKwOQASESIAYgCmoiBiAHKwMIIAgrA5gBoSIQOQMIIAYgESASoSIROQMAIAwgBUEDdCIGaiARIBGiIBAgEKKgIhA5AwAgBiANaiAQOQMAIAVBAWohBQwBCwsgDCAGQQhBARCTBUEAIQUgASgCCCIGQQAgBkEAShshByAOKwMARAAAAAAAABBAokQAAAAAAAAwQKUiEUQAAAAAAAAYQKMhEkQAAAAAAAAAACEQA0AgBSAHRwRAIBEgDCAFQQN0aisDACITYwR8IBIgEKAFIBJEAAAAAAAA8D9EAAAAAAAA8D8gEyARo6EiEyAToiAToqGiIBCgCyEQIAVBAWohBQwBCwsCQCAQIAa3oyIQIAArA2hjDQACQCACRQ0AIBAgACsDeGNFDQAgACsDcCAQIA+jYw0BC0EAIQdBACELIAIgACgCYEYNAANAIAYgB0oEQCARIA0gB0EDdGorAwAiD2YEQCAJIAtBMGwiBmoiBSAAIAMgASgCBCAHQRhsahDqBUEASA0FIAVEAAAAAAAA8D8gDyARo6EiDyAPoiIPIAUrAwCiOQMAIAkgBkEIcmoiBiAPIAYrAwCiOQMAIAUgDyAFKwMQojkDECAFIA8gBSsDGKI5AxggBSAPIAUrAyCiOQMgIAUgDyAFKwMoojkDKCAFIA8gBSsDMKI5AzAgBSAPIAUrAziiOQM4IAVBQGsiBiAPIAYrAwCiOQMAIAUgDyAFKwNIojkDSCAFIA8gBSsDUKI5A1AgBSAPIAUrA1iiOQNYIAogC0EDdGoiBSAPIAogB0EEdGoiBisDAKI5AwAgBSAPIAYrAwiiOQMIIAtBAmohCyABKAIIIQYLIAdBAWohBwwBCwsgC0EFTA0CIAggCiAJIAsQ5AVBAEgNAiADIAgQ4QUgAkEBaiECIBAhDwwBCwsgBCAQOQMAIAkQMSAKEDEgDRAxIAwQMUEAIQUMBAsgCRAxIAoQMSANEDEgDBAxQX8hBQwDBQNAIAVBBEcEQCAFQQN0IgsgAyAGQQV0Ig5qaiACIA5qIAtqKwMAOQMAIAVBAWohBQwBCwsgBkEBaiEGDAELAAsAC0EAQQNBhQtBABA2IAkQMSAKEDEgDRAxQX8hBQsgCEGgAWokACAFC+0SAhR/AXxBxgAhFUHAhD0hFiADQQFGBEAgAUECbSEBQZChDyEWQREhFSAAQQJtIQALIAVBADYCACACQZCAyABqIRMgAUECayEYIABBAmshGUEAIQEDQAJAIAIoAgggAUwEQCAFKAIAIQYMAQsCQCACIAFBAnRqIhcoAgwiBiAVSCAGIBZKcg0AIAIgAUEEdGoiEUGMgAhqIggoAgBBAUYNACARQZCACGooAgAgGUYNACARQZSACGooAgBBAUYNACARQZiACGooAgAgGEYNACACKAIAIQwgAUEBaiEKIAQgBSgCAEGw8QRsaiEJIwBBgPEEayINJAAgDCAIKAIAIgYgCCgCCCILIABsakEBdGohByAIKAIEIQgCfwJAAkADQCAGIAhKDQECQCAHLgEAIg5BAEoEQCAOQf//A3FBAnQgE2pBBGsoAgAgCkYNAQsgB0ECaiEHIAZBAWohBgwBCwsgBkF/Rw0BC0EAQQNB3QtBABA2QX8MAQsgCSALNgLcuAIgCSAGNgIcIAlBATYCGCAJQRxqIQhBASEKQQUhBwJAA0AgDCAKQQJ0Ig4gCWoiCkHYuAJqKAIAIABsIAooAhgiD2pBAXRqIRIgB0EFaiEHQQAhCgJAA0ACQCAHQQhvIQcgCkEIRg0AIBIgB0ECdCIQQfDiAGooAgAiFCAAbCAQQdDiAGooAgAiEGpBAXRqLgEAQQBKDQIgCkEBaiEKIAdBAWohBwwBCwtBAEEDQf8XQQAQNkF/DAMLIAggDmogDyAQajYCACAJIAkoAhhBAnRqIgpB3LgCaiAUIApB2LgCaigCAGo2AgACQCAIIAkoAhgiCkECdCIOaigCACAGRw0AIAkgDmpB3LgCaigCACALRw0AIApBASAKQQFKGyEOQQAhDEEAIQhBASEHDAILIAkgCkEBaiIKNgIYIApBj84ARw0AC0EAQQNBsR5BABA2QX8MAQsDQCAHIA5HBEAgCSAHQQJ0aiIPQdy4AmooAgAgC2siEiASbCAPKAIcIAZrIg8gD2xqIg8gDCAMIA9IIg8bIQwgByAIIA8bIQggB0EBaiEHDAELC0EAIQYgCEEAIAhBAEobIQcDfyAGIAdGBH8gCUEcaiELIAlB3LgCaiEMIAghBgN/IAYgCk4Ef0EAIQYDQCAGIAdHBEAgCSAGIAhrIgogCSgCGGpBAnRqIAZBAnQiCyANQcC4AmpqKAIANgIcIAkgCSgCGCAKakECdGpB3LgCaiALIA1qKAIANgIAIAZBAWohBgwBCwsgCUEcaiAJKAIYQQJ0aiAJKAIcNgIAIAlB3LgCaiAJKAIYQQJ0aiAJKALcuAI2AgAgCSAJKAIYQQFqNgIYQQAFIAsgBiAIa0ECdCIKaiALIAZBAnQiDmooAgA2AgAgCiAMaiAMIA5qKAIANgIAIAZBAWohBiAJKAIYIQoMAQsLBSAGQQJ0IgsgDUHAuAJqaiAJIAtqIgwoAhw2AgAgCyANaiAMQdy4AmooAgA2AgAgBkEBaiEGDAELCwshBiANQYDxBGokACAGQQBIDQAgFygCDCEMIAQgBSgCAEGw8QRsaiEKQQAhCCMAQfAAayIHJAAgCkHcuAJqIQkgCkEcaiELIAooAhgiBkECIAZBAkobQQFrIQ4gCigC3LgCIQ8gCigCHCESQQAhBkEBIQ0DQCANIA5HBEAgCiANQQJ0aiIQQdy4AmooAgAgD2siFCAUbCAQKAIcIBJrIhAgEGxqIhAgCCAIIBBIIhAbIQggDSAGIBAbIQYgDUEBaiENDAELCyAHQQA2AgwgB0EANgI8AkAgCyAJQQAgBiAMt0QAAAAAAADoP6NEexSuR+F6hD+iRAAAAAAAAPA/oiIaIAdBQGsgB0E8ahDpAUEASARAQX8hDQwBC0F/IQ0gCyAJIAYgCigCGEEBayAaIAdBEGogB0EMahDpAUEASA0AAn8gBygCPCIIQQFHIAcoAgwiDEEBR3JFBEAgBygCECEIIAYhCSAHKAJADAELIAhBAkggDHJFBEAgB0EANgI8IAdBADYCDCALIAlBACAGQQJtIgggGiAHQUBrIAdBPGoQ6QFBAEgNAiALIAkgCCAGIBogB0EQaiAHQQxqEOkBQQBIDQIgBygCPEEBRw0CIAcoAgxBAUcNAiAHKAIQIQkgBiEIIAcoAkAMAQsgCCAMQQJIcg0BIAooAhghCCAHQQA2AjwgB0EANgIMIAsgCSAGIAYgCGpBAWtBAm0iCCAaIAdBQGsgB0E8ahDpAUEASA0BIAsgCSAIIAooAhhBAWsgGiAHQRBqIAdBDGoQ6QFBAEgNASAHKAI8QQFHDQEgBygCDEEBRw0BIAcoAhAhCCAHKAJAIQkgBgshBkEAIQ0gCkEANgKc8QQgCkGo8QRqIAg2AgAgCkGk8QRqIAk2AgAgCkGg8QRqIAY2AgAgCkGs8QRqIAooAhhBAWs2AgALIAdB8ABqJAAgDUEASA0AIAQgBSgCAEGw8QRsaiAXKAIMNgIAIAQgBSgCACIGQbDxBGxqIgggEUGQgChqKwMAOQMIIAggEUGYgChqKwMAOQMQIAUgBkEBaiIINgIAQTwhBiAIQTxGDQELIAFBAWohAQwBCwtBACECQQAhAQNAIAEgBk4EQANAIAIgBkgEQCAEIAIiAUGw8QRsaigCAEUEQANAIAYgAUEBaiIASgRAIAQgAUGw8QRsaiAEIABBsPEEbGpBsPEEED4aIAUoAgAhBiAAIQEMAQsLIAUgBkEBayIGNgIACyACQQFqIQIMAQsLAkAgA0EBRw0AQQAhAANAIAAgBk4NASAEIAQoAgBBAnQ2AgAgBCAEKwMIIhogGqA5AwggBCAEKwMQIhogGqA5AxAgBCgCGCEDQQAhAQNAIAEgA0gEQCAEIAFBAnRqIgIgAigCHEEBdDYCHCACQdy4AmoiAiACKAIAQQF0NgIAIAFBAWohAQwBCwsgAEEBaiEAIARBsPEEaiEEIAUoAgAhBgwACwALQQAPCyAEIAFBsPEEbGohCCABQQFqIgAhAQNAIAEgBk4EQCAAIQEMAgUgCCsDCCAEIAFBsPEEbGoiBisDCKEiGiAaoiAIKwMQIAYrAxChIhogGqKgIRoCQAJAIAgoAgAiCSAGKAIAIhNKBEAgGiAJQQRtt2MNAQwCCyAIIQYgGiATQQRtt2NFDQELIAZBADYCAAsgAUEBaiEBIAUoAgAhBgwBCwALAAsAC90FAgp/AX0jAEEgayIEJAAgBCAAEOMCNgIQIARBGGohByMAQSBrIgEkAEHwlQQQPBogACgCACEFQfCVBBCUASECIAFBADoAHwJAAkAgAkUNAEHwlQQgBSACEF8iBhA6KAIAIgNFDQADQCADKAIAIgNFDQEgBSADKAIERwRAIAMoAgQgAhBfIAZHDQILQfCVBBBeIANBCGogABCMAkUNAAsMAQsjAEEQayIIJABB8JUEEDIhACABQRBqQcgBEFsgCEEIaiAAQQAQrQIQrAIiACgCAEEIaiEJIAQoAhAhCiMAQRBrIgMkACADIAo2AgggCSADKAIIKAIANgIAIAlBCGpBAEG4ARA5GiADQRBqJAAgABBTQQE6AAQgACgCACAFNgIEIAAoAgBBADYCACAIQRBqJABB8JUEEDwoAgAhAEHwlQQQXiEDAkAgAgRAIABBAWqzIAMqAgAgArOUXkUNAQsgASACEIsCQQFzIAJBAXRyNgIMIAECf0HwlQQQPCgCAEEBarNB8JUEEF4qAgCVjSILQwAAgE9dIAtDAAAAAGBxBEAgC6kMAQtBAAs2AghB8JUEIAFBDGogAUEIahBvKAIAEK8CIAVB8JUEEJQBIgIQXyEGCwJAQfCVBCAGEDooAgAiAEUEQCABKAIQQfiVBCgCADYCAEH4lQQgASgCEDYCAEHwlQQgBhA6QfiVBDYCACABKAIQKAIARQ0BIAEoAhAhAEHwlQQgASgCECgCACgCBCACEF8QOiAANgIADAELIAEoAhAgACgCADYCACAAIAEoAhA2AgALIAFBEGoiABC5ASEDQfCVBBA8IgIgAigCAEEBajYCACABQQE6AB8gACgCACECIABBADYCACACBEAgABBTIgAtAAQEQCAAKAIAGgsgAgRAIAAoAgAaIAIQMQsLCyAHIAFBEGogAxB3IAFBH2oQrgIgAUEgaiQAIAcQbSEAIARBIGokACAAQQhqCzEBAX8gABDLBSAAKAIABEAgACAAKAIAEMoFIAAQMhogACgCACEBIAAQhAIaIAEQMQsLIAAgAEHgAmoQ0wEaIABBxAJqENIFIABBoAJqEOAFIAAL8AEBAn8gACgC2AEiAQRAAkAgAUUNACABKALwhq8DRQ0AIAFBADYC8IavAwsgACgC2AEiAQRAIAEoAoiHrwMiAgRAIAIQQyABQQA2AoiHrwMLIAEoAuCGpwIQMSABQeSGpwJqKAIAEDEgARAxCyAAQQA2AtgBCyAAKALkAQRAIAAoAuQBIgEEQCABEOcDIAAoAuQBEDEgAEEANgLkAQsgAEEANgLkAQsgACgCwAEEQAJAIABBwAFqIgFFDQAgASgCACICRQ0AIAIoArgBEDEgASgCACgCvAEQMSABKAIAEDEgAUEANgIACyAAQQA2AsABCwukAQECfyAAKAIEIAAQMigCAEcEQCMAQRBrIgMkACADIABBARDCBSECIAAQMiACKAIEIAEQlgMgAiACKAIEQRBqNgIEIAIQciADQRBqJAAPCyMAQSBrIgMkACAAEDIiAiADQQhqIAAgABC4AUEBahDGBSAAELgBIAIQxQUiAigCCCABEJYDIAIgAigCCEEQajYCCCAAIAIQxAUgAhDDBSADQSBqJAALlwEBA38jAEEgayIDJAAgAyACNgIcIAMgARCWASEEIAMoAhwhAiMAQYAQayIBJAAgAUGAECAEEEAgAhCBAhogA0EQaiIFIAEQlgEaIAFBgBBqJABBACECA0AgABA9IAJLBEAgACACEE0oAgAiAUEIIAUgASgCACgCCBEGACACQQFqIQIMAQsLIAUQOBogBBA4GiADQSBqJAALsQEBAn8gAEEBNgIQIAAgBDYCCCAAIAM2AgQgACACNgIAIAAgBCAFbDYCFCMAQRBrIgckACAAIAE2AhhBEBBbIQYjAEEgayIEJAAgBCABNgIMIAYQ9wMiBkHY4QE2AgAgBkEMaiAEQQhqIARBDGoQqwIQqwIaIARBIGokACAAIAY2AhwgByABNgIEIAcgATYCACAHQRBqJAAgACAFQQBIBH8gAhDYBSADbAUgBQs2AgwgAAtGAQF/IwBBEGsiASQAAkACQAJAIABBAWsOAgIBAAtBEBAGIAFBmt8AEJYBEOUCQfjZAUEPEAUAC0EEIQALIAFBEGokACAAC2kBAn8jAEGQAmsiASQAIAFBiAJqIgIQoAUaQYyZBEGQmQRBlJkEECMgAkHYmQQQIkGAmgRBmJkEQZSZBEH4mQQoAgAbKAIANgIAIAFBgAJBoQhB2JkEEC8aIAAgARCWARogAUGQAmokAAvnAgEIfyMAQRBrIgckACAAKAIAIQIgB0EAOgAPIAdBD2ohCAJAIABBBGoiBBCNASIDIAEgAmwiAkkEQCMAQSBrIgkkAAJAIAIgA2siAiAEEDIoAgAgBCgCBGtNBEAjAEEQayIFJAAgBSAEIAIQtgMiAygCBCECIAMoAgghBgNAIAIgBkYEQCADEHIgBUEQaiQABSAEEDIgAiAIELUDIAMgAkEBaiICNgIEDAELCwwBCyAEEDIhAyAJQQhqIAQgBBCNASACahC0AyAEEI0BIAMQnQQhAyMAQRBrIgUkACAFIANBCGogAhCHBiICKAIAIQYDQCACKAIEIAZHBEAgAygCECACKAIAIAgQtQMgAiACKAIAQQFqIgY2AgAMAQsLIAIQsgEgBUEQaiQAIAQgAxCcBCADEJsECyAJQSBqJAAMAQsgAiADSQRAIAQgBCgCACACahCABAsLIABBEGogARCqBiAHQRBqJAALIAAgABAyGgNAIAEEQCABKAIAIQAgARAxIAAhAQwBCwsLGQAgAUH/////AEsEQBDzAQALIAFBBHQQWwuKAwIDfwF8IwBBEGsiASQAAkAgALwiA0H/////B3EiAkHan6T6A00EQCACQYCAgMwDSQ0BIAC7EMUBIQAMAQsgAkHRp+2DBE0EQCAAuyEEIAJB45fbgARNBEAgA0EASARAIAREGC1EVPsh+T+gEMYBjCEADAMLIAREGC1EVPsh+b+gEMYBIQAMAgtEGC1EVPshCcBEGC1EVPshCUAgA0EAThsgBKCaEMUBIQAMAQsgAkHV44iHBE0EQCACQd/bv4UETQRAIAC7IQQgA0EASARAIARE0iEzf3zZEkCgEMYBIQAMAwsgBETSITN/fNkSwKAQxgGMIQAMAgtEGC1EVPshGUBEGC1EVPshGcAgA0EASBsgALugEMUBIQAMAQsgAkGAgID8B08EQCAAIACTIQAMAQsCQAJAAkACQCAAIAFBCGoQoQVBA3EOAwABAgMLIAErAwgQxQEhAAwDCyABKwMIEMYBIQAMAgsgASsDCJoQxQEhAAwBCyABKwMIEMYBjCEACyABQRBqJAAgAAv0AgIDfwF8IwBBEGsiASQAAn0gALwiA0H/////B3EiAkHan6T6A00EQEMAAIA/IAJBgICAzANJDQEaIAC7EMYBDAELIAJB0aftgwRNBEAgAkHkl9uABE8EQEQYLURU+yEJQEQYLURU+yEJwCADQQBIGyAAu6AQxgGMDAILIAC7IQQgA0EASARAIAREGC1EVPsh+T+gEMUBDAILRBgtRFT7Ifk/IAShEMUBDAELIAJB1eOIhwRNBEAgAkHg27+FBE8EQEQYLURU+yEZQEQYLURU+yEZwCADQQBIGyAAu6AQxgEMAgsgA0EASARARNIhM3982RLAIAC7oRDFAQwCCyAAu0TSITN/fNkSwKAQxQEMAQsgACAAkyACQYCAgPwHTw0AGgJAAkACQAJAIAAgAUEIahChBUEDcQ4DAAECAwsgASsDCBDGAQwDCyABKwMImhDFAQwCCyABKwMIEMYBjAwBCyABKwMIEMUBCyEAIAFBEGokACAAC1gBAn8gABA8KAIABEAgACAAQQhqIgEoAgAQ2wUgAUEANgIAIAAQlAEhAkEAIQEDQCABIAJGBEAgABA8QQA2AgAFIAAgARA6QQA2AgAgAUEBaiEBDAELCwsLFAAgACAAQQhqKAIAENsFIAAQsQIL9ggCBn8GfCMAQYACayICJAACQCABKwMQIgggCKIgASsDACIIIAiiIAErAwgiCSAJoqCgIglEAAAAAAAAAABhBEAgAkIANwPIASACQoCAgICAgID4PzcDwAFEAAAAAAAAAAAhCAwBCyACIAggCZ8iCKM5A8ABIAIgASsDCCAIozkDyAEgASsDECAIoyEKCyACIAg5A9gBIAIgCjkD0AEgAiABKwMYOQPgASACIAErAyA5A+gBIAIgASsDKDkD8AEgAisD2AEhCCMAQRBrIgEkAAJ8IAi9QiCIp0H/////B3EiA0H7w6T/A00EQEQAAAAAAADwPyADQZ7BmvIDSQ0BGiAIRAAAAAAAAAAAENMCDAELIAggCKEgA0GAgMD/B08NABoCQAJAAkACQCAIIAEQogVBA3EOAwABAgMLIAErAwAgASsDCBDTAgwDCyABKwMAIAErAwhBARDSApoMAgsgASsDACABKwMIENMCmgwBCyABKwMAIAErAwhBARDSAgshCSABQRBqJAAgAiAJIgogAisDwAEiCSAJokQAAAAAAADwPyAKoSIJoqA5A2AgAiACKwPAASACKwPIAaIgCaIhDSACKwPQASEMIwBBEGsiASQAAkAgCL1CIIinQf////8HcSIDQfvDpP8DTQRAIANBgIDA8gNJDQEgCEQAAAAAAAAAAEEAENICIQgMAQsgA0GAgMD/B08EQCAIIAihIQgMAQsCQAJAAkACQCAIIAEQogVBA3EOAwABAgMLIAErAwAgASsDCEEBENICIQgMAwsgASsDACABKwMIENMCIQgMAgsgASsDACABKwMIQQEQ0gKaIQgMAQsgASsDACABKwMIENMCmiEICyABQRBqJAAgDSAMIAiioTkDaCACIAIrA8ABIAIrA9ABoiAJoiAIIAIrA8gBoqA5A3AgAiACKwPgATkDeCACIAIrA8gBIAIrA8ABoiAJoiAIIAIrA9ABoqA5A4ABIAIgCiACKwPIASILIAuiIAmioDkDiAEgAiACKwPIASACKwPQAaIgCaIgCCACKwPAAaKhOQOQASACIAIrA+gBOQOYASACIAIrA9ABIAIrA8ABoiAJoiAIIAIrA8gBoqE5A6ABIAIgAisD0AEgAisDyAGiIAmiIAggAisDwAGioDkDqAEgAiAKIAIrA9ABIgggCKIgCaKgOQOwASACIAIrA/ABOQO4AQN/IARBA0YEfwN/QQAhASAGQQNGBH8gAkGAAmokAEEABQNAIAFBBEcEQCABQQN0IgQgACAGQQV0IgNqaiACIANqIARqKwMAOQMAIAFBAWohAQwBCwsgBkEBaiEGDAELCwUgACAEQQV0IgdqIgMrAxAhCCADKwMIIQkgAysDACEKQQAhAQNAIAFBBEcEQCABQQN0IgUgAiAHamogCCACQeAAaiAFaiIFQUBrKwMAoiAKIAUrAwCiIAkgBSsDIKKgoDkDACABQQFqIQEMAQsLIAIgB2oiASADKwMYIAErAxigOQMYIARBAWohBAwBCwsaCzABAn0Cf0EBIAAqAgAiAiABKgIAIgNdDQAaQQAgAiADXg0AGiAAKAIEIAEoAgRICwttACAAKgIgIAEqAiCUIAAqAhwgASoCHJQgACoCGCABKgIYlCAAKgIUIAEqAhSUIAAqAhAgASoCEJQgACoCDCABKgIMlCAAKgIIIAEqAgiUIAAqAgAgASoCAJQgACoCBCABKgIElJKSkpKSkpKSC9IBAQF/IwBBMGsiBCQAIARChoCAgBA3AiQgBCAANgIgIARBATYCGCAEIAM2AhQgBCABNgIQIARBBjYCCCAEIAM2AgQgBCACNgIAAkAgBBC4BiIDRQRAQX8hAAwBCwJAIAMgBBDpAiICRQRAQX8hACADIQEMAQsCQCADIARBEGoQ6QIiAUUEQEF/IQAgAiEBDAELQQAhAAJAIAIQ5AJBAEgEQEF/IQAMAQsgBEEgaiACIAEQhQQaCyADEEMgAiEDCyADEEMLIAEQQwsgBEEwaiQAIAALEAAgAEIANwIAIABBADYCCAtlAQJ9IAAqAhAgACoCFCAAKgIcIAAqAiAQoAEhASAAKgIMIAAqAhQgACoCGCAAKgIgEKABIQIgACoCDCAAKgIQIAAqAhggACoCHBCgASAAKgIIlCABIAAqAgCUIAIgACoCBJSTkgsMACAAIAEpAgA3AgAL2AIBCn0gBSAGKgIAIAcqAgCSIAgqAgCSIAkqAgCSQwAAgD6UIgo4AgAgBSAGKgIEIAcqAgSSIAgqAgSSIAkqAgSSQwAAgD6UIgs4AgQgBioCACAKkyIMIAyUIAYqAgQgC5MiDSANlJKRIAcqAgAgCpMiDiAOlCAHKgIEIAuTIg8gD5SSkZIgCCoCACAKkyIQIBCUIAgqAgQgC5MiESARlJKRkiAJKgIAIAqTIgogCpQgCSoCBCALkyILIAuUkpGSQwAAgD6UIhJDAAAAAFwEQCAEQwAAgD8gEpW7RM07f2aeoPY/orYiEzgCACAAIAwgE5Q4AgAgACANIAQqAgCUOAIEIAEgDiAEKgIAlDgCACABIA8gBCoCAJQ4AgQgAiAQIAQqAgCUOAIAIAIgESAEKgIAlDgCBCADIAogBCoCAJQ4AgAgAyALIAQqAgCUOAIECyASQwAAAABcC0IBAn8jAEEQayIBJAAgASAANgIIIAEoAgghAiMAQRBrIgAkACAAIAI2AgggACgCCCECIABBEGokACABQRBqJAAgAgv0CwIGfwp8IwBB4AFrIgUkACAFQdAAaiEHIwBB4AZrIgQkACAFIAIrAxAgAysDECILoiACKwMAIAMrAwCiIAIrAwggAysDCCIMoqCgIAIrAxigOQMIIAUgAisDOCALIAIrAzCiIAIrAyAgAysDACIKoiAMIAIrAyiioKCgOQMQIAUgAisDWCALIAIrA1CiIAogAisDQKIgAisDSCADKwMIIguioKCgOQMYIAQgCyACKwMAIg6iOQPIBCAEIAogDqI5A8AEIAQgDiADKwMQIgyiOQPQBCAEIAwgAisDCCIPojkD6AQgBCALIA+iOQPgBCAEIAogD6I5A9gEIAQgAisDECINOQOYBSAEIA85A5AFIAQgDjkDiAUgBCAMIA2iOQOABSAEIAsgDaI5A/gEIAQgCiANojkD8AQgBCAMIAIrAyAiDqI5A7AFIAQgCyAOojkDqAUgBCAKIA6iOQOgBSAEIAwgAisDKCIPojkDyAUgBCALIA+iOQPABSAEIAogD6I5A7gFIAQgAisDMCINOQP4BSAEIA85A/AFIAQgDjkD6AUgBCAMIA2iOQPgBSAEIAsgDaI5A9gFIAQgCiANojkD0AUgBCAMIAIrA0AiDqI5A5AGIAQgCyAOojkDiAYgBCAKIA6iOQOABiAEIAwgAisDSCIPojkDqAYgBCALIA+iOQOgBiAEIAogD6I5A5gGIAQgAisDUCINOQPYBiAEIA85A9AGIAQgDjkDyAYgBCAMIA2iOQPABiAEIAsgDaI5A7gGIAQgCiANojkDsAYgBEEAQcAAEDkiAkIANwNIIAJBQGtCgICAgICAgPi/fzcDACACQgA3A1AgAkIANwNYIAJCADcDYCACQoCAgICAgID4PzcDaCACQfAAakEAQTAQORogAkKAgICAgICA+D83A6ABIAJBqAFqQQBByAAQORogAkKAgICAgICA+L9/NwPwASACQfgBakEAQTAQORogAkIANwOwAiACQoCAgICAgID4v383A6gCIAJCADcDuAIgAkIANwPAAiACQgA3A8gCIAJCgICAgICAgPg/NwPQAiACQdgCakEAQfAAEDkaIAJCgICAgICAgPg/NwPIAyACQdADakEAQTAQORogAkKAgICAgICA+D83A4AEIAJBiARqQQBBMBA5GiACQoCAgICAgID4PzcDuAQDQEEAIQMgBkEDRwRAA0AgA0EGRwRAIANBA3QiCCAHIAZBMGxqaiEJQQAhAkQAAAAAAAAAACEKA0AgAkEMRwRAIARBwARqIAZB4ABsaiACQQN0aisDACAEIAJBMGxqIAhqKwMAoiAKoCEKIAJBAWohAgwBCwsgCSAKOQMAIANBAWohAwwBCwsgBkEBaiEGDAELCyAEQeAGaiQAQX8hBAJAIAErA1ggASsDUCAFKwMYIgyiIAErA0AiCyAFKwMIIg6iIAUrAxAiDyABKwNIoqCgoCIKRAAAAAAAAAAAYgR/IAErAzghECABKwMwIREgASsDKCESIAErAyAhEyAFIAErAwAiDSAKoiABKwMYIAErAxAgDKIgDSAOoiAPIAErAwiioKCgIg0gC6KhIAogCqIiC6M5AyAgBSABKwMIIAqiIA0gASsDSKKhIAujOQMoIAUgASsDECAKoiANIAErA1CioSALozkDMCAFIAErAyAgCqIgECARIAyiIBMgDqIgDyASoqCgoCIMIAErA0CioSALozkDOCAFIAErAyggCqIgDCABKwNIoqEgC6M5A0AgBSABKwMwIAqiIAwgASsDUKKhIAujOQNIQQAFQX8LQQBOBEBBACECA0BBACEEIAJBAkYNAgNAIARBBkcEQCAEQQN0IgEgACACQTBsamohBkEAIQNEAAAAAAAAAAAhCgNAIANBA0cEQCAFQSBqIAJBGGxqIANBA3RqKwMAIAVB0ABqIANBMGxqIAFqKwMAoiAKoCEKIANBAWohAwwBCwsgBiAKOQMAIARBAWohBAwBCwsgAkEBaiECDAALAAtBAEEDQdgWQQAQNgsgBUHgAWokACAECxIAIAAgACgCACABQQJ0ajYCAAswAQF/IwBBEGsiAiQAIAIgATYCACACIAA2AgggAiACQQhqEOoDIQAgAkEQaiQAIAALDQAgACgCACAAKAIERgtXAQJ/IwBBIGsiAyQAIAAQMiICIANBCGogACAAED1BAWoQ+wMgABA9IAIQtgIiAigCCCABELcCIAIgAigCCEEIajYCCCAAIAIQ6AIgAhDnAiADQSBqJAALqQQCCX8BfiAAEL0CIQIgABDuAiEDIwBBIGsiBiQAIAYgAzYCECAGIAI2AhggBkEQaiAGQRhqEKgDIQQjAEEQayIFJAAgBSADNgIAIAUgAjYCCCAEQQJOBEAgBSgCCCECIAUQ0gEoAgAhAyMAQRBrIgEkACABIAIpAgAiCjcDCCACIAMpAgA3AgAgAyAKNwIAIAFBEGokACAFKAIIIQIjAEEwayIBJAAgASACNgIgIAEgAjYCKCABQSBqIAFBKGoQqAMhAgJAIARBAWsiBEECSA0AIARBAmtBAXYiCSACSA0AIAEgAUEoaiACQQF0IgNBAXIiAhDuATYCGAJAIANBAmoiAyAETg0AIAFBGGoiBygCACEIIAEgB0EBEO4BNgIQIAggASgCEBCnAkUNACABQRhqEJ8BGiADIQILIAEoAhggASgCIBCnAg0AIAEgASgCICkCADcDEANAAkAgASgCICABKAIYKQIANwIAIAEgASgCGDYCICACIAlKDQAgASAB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EKAGIAEgASgCAEEUaiIDNgIADAELCyABELIBIAFBEGokACAAIAIQ9AYgAhDyBgsgBEEgaiQADwsgASACSQRAIAAgACgCACABQRRsahCnBgsLnwEBBH8jAEEgayICJAAgACABNgIAIAJBGGogARCoBiEDQRAQWyEEIwBBIGsiBSQAIAUgATYCDCAEEPcDIgRB3NoBNgIAIARBDGogBUEIaiAFQQxqEKsCEKsCGiAFQSBqJAAgACAENgIEIAMQuQEaIAIgATYCBCACIAE2AgAgAygCACEBIANBADYCACABBEAgAyABEIsGCyACQSBqJAAgAAueAQECfyAAQgA3AgAgAEEIaiIBQQA2AgAgAUEEahBSGiABQRBqEFIaIABBJGoiAULSCTcCACABQQhqEIMEGiABQQxqIgJCADcCBCACIAE2AgAgAkEMahBSGiACQRhqEFIaIAJBJGoQUhogAkEwahBSGiABQcgAahBSGiABQdQAahCqAyABQRA2AmwgAUIANwJkIAIQjgYgAkEBEI0GIAALpwIBA38gACgCACECIAAgATYCACACBEAgAgRAIAJBlAZqIgBBGGoQ0wEaIABBDGoQfiAAEH4gAkGMBWoiAEH8AGoQfiAAQfAAahB+IABB3ABqEOAFIAJB/ARqENMBGiACQaABaiIAQZABahB+IABB3ABqIgFBKGoQlgQgAUEcahB+IABByABqEJcEIABBPGoQlwQgAEEgahCWBCAAQRBqIgAQzAIgACgCAARAIAAgACgCABDNBiAAEDIaIAAoAgAhASAAELMBGiABEDELIAJB3ABqEIcEGiACQcgAaiIDKAIIIQAgAxAyIQQDQCAABEAgACgCACEBIAQgAEEIahClBiAAEDEgASEADAELCyADELECIAJBQGsQ0QEgAkEMahDTARoLIAIQMQsLYQEDfyAAKAIAIQIgACABNgIAIAIEQCACBEAgAkEEaiIDKAIIIQAgAxAyIQQDQCAABEAgACgCACEBIAQgAEEIahCWBiAAEDEgASEADAELCyADELECIAJBABCtBgsgAhAxCwsJACABQQA7AQALCwAgACABQQIQ8gELjQICDH8BfUF/IQoCQCABKAIIIgYgAigCBEcNACAAKAIEIgMgASgCBEcNACAAKAIIIgcgAigCCEcNAEEAIQogA0EAIANBAEobIQsgB0EAIAdB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IAogABCYASAGIAoQhwEgChA4GiAKIAAQwQEgByAKEIcBIAoQOBogABD0AQwBCyACEKsHIQACQCABBEAgCiAAEPYBIAMgCigCADYAACAKIAAQ9QEMAQsgCiAAELsDIAMgCigCADYAACAKIAAQwAELIAggChCHASAKEDgaIAQgABC9AToAACAFIAAQmQE6AAAgCiAAEJgBIAYgChCHASAKEDgaIAogABDBASAHIAoQhwEgChA4GiAAEPQBCzYCACAKQRBqJAALMQEBfyMAQRBrIgIkACACIAAoAgA2AgggAkEIaiABEOsFIAIoAgghACACQRBqJAAgAAsLACAAQdi4BBDLAQsLACAAQeC4BBDLAQsVACAAIAEoAgAQ3AQgASgCABDrARoL9A8BC38jAEGwBGsiCyQAIAsgCjYCpAQgCyABNgKoBAJAIAAgC0GoBGoQcwRAIAUgBSgCAEEEcjYCAEEAIQAMAQsgC0HNAjYCYCALIAtBiAFqIAtBkAFqIAtB4ABqIgEQZiIPKAIAIgo2AoQBIAsgCkGQA2o2AoABIAEQRCERIAtB0ABqEEQhDCALQUBrEEQhDiALQTBqEEQhDSALQSBqEEQhECMAQRBrIgEkACALAn8gAgRAIAEgAxCmByICEPYBIAsgASgCADYAeCABIAIQ9QEgDSABENUBIAEQOBogASACEMABIA4gARDVASABEDgaIAsgAhC9ATYCdCALIAIQmQE2AnAgASACEJgBIBEgARCHASABEDgaIAEgAhDBASAMIAEQ1QEgARA4GiACEPQBDAELIAEgAxClByICEPYBIAsgASgCADYAeCABIAIQ9QEgDSABENUBIAEQOBogASACEMABIA4gARDVASABEDgaIAsgAhC9ATYCdCALIAIQmQE2AnAgASACEJgBIBEgARCHASABEDgaIAEgAhDBASAMIAEQ1QEgARA4GiACEPQBCzYCHCABQRBqJAAgCSAIKAIANgIAIARBgARxIhJBCXYhE0EAIQNBACEBA0AgASECAkACQAJAAkAgA0EERg0AIAAgC0GoBGoQiwFFDQBBACEKAkACQAJAAkACQAJAIAtB+ABqIANqLAAADgUBAAQDBQkLIANBA0YNByAHQQEgABBoELYBBEAgC0EQaiAAEKcHIBAgCygCEBCvBAwCCyAFIAUoAgBBBHI2AgBBACEADAYL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NgIQIAIMAQsgAEEANgIcIABCADcDECAAIAAoAgBBIHI2AgBBACAHQQJGDQAaIAIgBCgCBGsLIQEgA0EgaiQAIAELRgEBfyAAKAI8IQMjAEEQayIAJAAgAyABpyABQiCIpyACQf8BcSAAQQhqEBcQhwMhAiAAKQMIIQEgAEEQaiQAQn8gASACGwsGAEGImQQLJAEBf0H8mAQoAgAiAARAA0AgACgCABEOACAAKAIEIgANAAsLCwoAIAAoAgQQjAULnwEBBH8gA0EASgRAIAAoAnAhAiAAKALkAygCGCEHA0AgAgRAIAEgBUECdGooAgAhACACIQYDQCAHIAAtAABBAXZB/ABxaigCACAALQABQQR0QcAfcWogAC0AAkECdkE+cWoiBCAELwEAIgQgBEEBaiIEIAQgBEH//wNxRxs7AQAgAEEDaiEAIAZBAWsiBg0ACwsgBUEBaiIFIANHDQALCwv+CgEafyAAIAAoAuQDIhMoAhA2AogBIABBASATKAIUIghBBXQgACgCBCgCABEEACILQoCAgIDwAzcCECALQoCAgIDwBzcCCCALQoCAgIDwAzcCACAAIAsQ3gNBASEKAkACQCAIQQJIDQADQAJAAkACQCAIIApBAXROBEAgCkEBcSEEIA8NAUEAIQJBACEDIAshAQwCC0EAIQlBACECQQAhAyALIQEgD0EDTwRAIApB/P///wdxIQdBACEEA0AgAUHgAGogAUFAayABQSBqIAEgAiABKAIYIgIgA0oiBRsgASgCOCIGIAIgAyAFGyICSiIDGyABKAJYIgUgBiACIAMbIgJKIgMbIAEoAngiBiAFIAIgAxsiA0oiBRshAiAGIAMgBRshAyABQYABaiEBIARBBGoiBCAHRw0ACwsgCkEDcSIERQ0CA0AgASACIAEoAhgiByADSiIFGyECIAcgAyAFGyEDIAFBIGohASAJQQFqIgkgBEcNAAsMAgsgCkH+////B3EhB0EAIQJBACEDIAshAUEAIQkDQCADIAEoAhwiBUgEQCABIAIgASgCGEEASiIGGyECIAUgAyAGGyEDCyADIAEoAjwiBUgEQCABQSBqIAIgASgCOEEASiIGGyECIAUgAyAGGyEDCyABQUBrIQEgCUECaiIJIAdHDQALCyAERQ0AIAEoAhwgA0wNACABIAIgASgCGEEAShshAgsgAkUNASAL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QQd0IARqIQQgASgCDCADbEEHdCACaiECCyABKAIsIgENAAsLAkAgAkEATA0AQYCU69wDIQMgBSgCTBogBCAEIgFKBEAgASACbSIBQQEgAUEBShshAwsgBSgCRCIBBEADQCABKAIARQRAAkAgAyABKAIEIgJBAWsgASgCDCIEbkEBak4EQCABIAI2AhAMAQsgASADIARsNgIQIAAgASgCCCACbBCqBSABQQE2AiggASgCECECCyABIABBASABKAIIIAIQqwU2AgAgBSgCUCECIAFBADYCJCABQgA3AhggASACNgIUCyABKAIsIgENAAsLIAUoAkgiAUUNAANAIAEoAgBFBEACQCADIAEoAgQiAkEBayABKAIMIgRuQQFqTgRAIAEgAjYCEAwBCyABIAMgBGw2AhAgACACIAEoAghsQQd0EKoFIAFBATYCKCABKAIQIQILIAEgAEEBIAEoAgggAhCsBTYCACAFKAJQIQIgAUEANgIkIAFCADcCGCABIAI2AhQLIAEoAiwiAQ0ACwsL7QYBB38CQAJAIAIgA2oiCCABKAIESw0AIAEoAgwgA0kNACABKAIADQELIAAoAgAiA0EXNgIUIAAgAygCABEBAAsCQCACIAEoAhgiA08EQCAIIAEoAhAgA2pNDQELIAEoAihFBEAgACgCACIDQccANgIUIAAgAygCABEBAAsgASgCJARAAkAgASgCECIHQQBMDQAgAUEwaiEJIAEoAggiCiABKAIYbCEFIAEoAhQhBkEAIQMDQCAGIAcgA2siByAGIAdIGyIGIAEoAhwgASgCGCADaiIHayILIAYgC0gbIgYgASgCBCAHayIHIAYgB0gbIgZBAEwNASAAIAkgASgCACADQQJ0aigCACAFIAYgCmwiBiABKAI0EQUAIAUgBmohBSABKAIQIgcgASgCFCIGIANqIgNKDQALCyABQQA2AiQLQQAhAyABIAIgCCABKAIQIgdrIgVBACAFQQBKGyABKAIYIAJJGyIFNgIYIAdBAEwNACABQTBqIQkgASgCCCIKIAVsIQUgASgCFCEGA0AgBiAHIANrIgcgBiAHSBsiBiABKAIcIAEoAhggA2oiB2siCyAGIAtIGyIGIAEoAgQgB2siByAGIAdIGyIGQQBMDQEgACAJIAEoAgAgA0ECdGooAgAgBSAGIApsIgYgASgCMBEFACAFIAZqIQUgASgCECIHIAEoAhQiBiADaiIDSg0ACwsCQAJAAkAgASgCHCIFIAhPDQACQAJAAkAgAiAFSwRAIAIhBSAERQ0BIAAoAgAiA0EXNgIUIAAgAygCABEBAAwCCyAEDQELIAEoAiANASAAKAIAIgNBFzYCFCAAIAMoAgARAQAMBAsgASAINgIcIAEoAiBFDQILIAUgASgCGCIAayIDIAggAGsiBk8NACABKAIIIQAgCCAFQX9zaiEHIAggBWtBA3EiCARAQQAhBQNAIAEoAgAgA0ECdGooAgBBACAAEDkaIANBAWohAyAFQQFqIgUgCEcNAAsLIAdBA0kNAANAIANBAnQiBSABKAIAaigCAEEAIAAQORogBSABKAIAaigCBEEAIAAQORogBSABKAIAaigCCEEAIAAQORogBSABKAIAaigCDEEAIAAQORogA0EEaiIDIAZHDQALCyAERQ0BCyABQQE2AiQLIAEoAgAgAiABKAIYa0ECdGoL9gYBB38CQAJAIAIgA2oiCCABKAIESw0AIAEoAgwgA0kNACABKAIADQELIAAoAgAiA0EXNgIUIAAgAygCABEBAAsCQCACIAEoAhgiA08EQCAIIAEoAhAgA2pNDQELIAEoAihFBEAgACgCACIDQccANgIUIAAgAygCABEBAAsgASgCJARAAkAgASgCECIHQQBMDQAgAUEwaiEJIAEoAghBB3QiCiABKAIYbCEFIAEoAhQhBkEAIQMDQCAGIAcgA2siByAGIAdIGyIGIAEoAhwgASgCGCADaiIHayILIAYgC0gbIgYgASgCBCAHayIHIAYgB0gbIgZBAEwNASAAIAkgASgCACADQQJ0aigCACAFIAYgCmwiBiABKAI0EQUAIAUgBmohBSABKAIQIgcgASgCFCIGIANqIgNKDQALCyABQQA2AiQLQQAhAyABIAIgCCABKAIQIgdrIgVBACAFQQBKGyABKAIYIAJJGyIFNgIYIAdBAEwNACABQTBqIQkgASgCCEEHdCIKIAVsIQUgASgCFCEGA0AgBiAHIANrIgcgBiAHSBsiBiABKAIcIAEoAhggA2oiB2siCyAGIAtIGyIGIAEoAgQgB2siByAGIAdIGyIGQQBMDQEgACAJIAEoAgAgA0ECdGooAgAgBSAGIApsIgYgASgCMBEFACAFIAZqIQUgASgCECIHIAEo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AgQoAhwRCgAiBzYCDCAEKAIYIQYLIAAgASACIAMgByAIIAQoAhAgACgC3AMoAgQRDAAgBiAEKAIYIgNJBH8gACAEKAIMIAZBAnRqQQAgAyAGayIBIAAoAuQDKAIEEQcAIAUgBSgCACABajYCACAEKAIYBSADCyAEKAIQIgBPBEAgBEEANgIYIAQgBCgCFCAAajYCFAsLjwEBBH8jAEEQayIHJAAgACgCyAMiCCgCECEJIAUoAgAhCiAHQQA2AgwgACABIAIgAyAIKAIMIAdBDGogBiAKayIBIAkgASAJSRsgACgC3AMoAgQRDAAgACAIKAIMIAQgBSgCAEECdGogBygCDCAAKALkAygCBBEHACAFIAUoAgAgBygCDGo2AgAgB0EQaiQAC9wBAQF/IAAoAsgDIQICQAJAAkACQAJAIAEOBAADAgEDCyAAKAJUBEAgAkHQATYCBCACKAIMDQQgAiAAIAIoAghBACACKAIQQQEgACgCBCgCHBEKADYCDAwECyACIAAoAtwDKAIENgIEDAMLIAIoAghFBEAgACgCACIBQQM2AhQgACABKAIAEQEACyACQdEBNgIEDAILIAIoAghFBEAgACgCACIBQQM2AhQgACABKAIAEQEACyACQdIBNgIEDAELIAAoAgAiAUEDNgIUIAAgASgCABEBAAsgAkIANwIUCzwAIAAgASACKAIAIAQgBSgCAEECdGogACgC3AMoAgwRBwAgBSAFKAIAQQFqNgIAIAIgAigCAEEBajYCAAvCAwEMfyACQQJ0IgIgASgCCGooAgAhBSABKAIEIAJqKAIAIQYgASgCACACaigCACEHIAMoAgAhASAAKALQAiECIAAoAtwDIgMoAhwhCCADKAIYIQsgAygCFCEMIAMoAhAhDSAAKAJwIgNBAk8EfyADQQF2IQMDQCAMIAYtAABBAnQiBGooAgAhDiALIAUtAABBAnQiCWooAgAhCiAEIAhqKAIAIQ8gASACIAkgDWooAgAiCSAHLQAAIgRqai0AADoAACABIAIgBCAKIA9qQRB1Igpqai0AADoAASABIAIgBCAOamotAAA6AAIgASACIAkgBy0AASIEamotAAA6AAMgASACIAQgCmpqLQAAOgAEIAEgAiAEIA5qai0AADoABSABQQZqIQEgB0ECaiEHIAVBAWohBSAGQQFqIQYgA0EBayIDDQALIAAoAnAFIAMLQQFxBEAgDCAGLQAAQQJ0IgBqKAIAIQMgCyAFLQAAQQJ0IgVqKAIAIQYgACAIaigCACEIIAEgAiAHLQAAIgAgBSANaigCAGpqLQAAOgAAIAEgAiAAIAYgCGpBEHVqai0AADoAASABIAIgACADamotAAA6AAILC4sCAQN/IwBBEGsiCCQAAkACQCAAKALcAyIHKAIkBEAgB0EgakEAIAQgBSgCAEECdGpBAEEBIAcoAigQkgMgB0EANgIkIAUgBSgCAEEBajYCACAHIAcoAixBAWs2AiwMAQsgBygCLCEJIAggBCAFKAIAIgNBAnRqIgQoAgA2AgggCAJ/IAkgBiADayIDIAMgCUsbIgNBAiADQQJJGyIDQQJPBEAgBCgCBAwBCyAHQQE2AiQgBygCIAs2AgwgACABIAIoAgAgCEEIaiAHKAIMEQcAIAcoAiQhACAFIAUoAgAgA2o2AgAgByAHKAIsIANrNgIsIAANAQsgAiACKAIAQQFqNgIACyAIQRBqJAALhgUBDn8gAkECdCIFIAEoAghqKAIAIQogASgCBCAFaigCACELIAEoAgAgAkEDdGoiASgCACEHIAEoAgQhCCADKAIEIQIgAygCACEDIAAoAtACIQQgACgC3AMiASgCHCEOIAEoAhghDyABKAIUIRAgASgCECERIAAoAnAiAUECTwR/IAFBAXYhCQNAIBAgCy0AAEECdCIBaigCACEMIA8gCi0AAEECdCIGaigCACEFIAEgDmooAgAhASADIAQgBiARaigCACINIActAAAiBmpqLQAAOgAAIAMgBCAGIAEgBWpBEHUiBWpqLQAAOgABIAMgBCAGIAxqai0AADoAAiADIAQgDSAHLQABIgFqai0AADoAAyADIAQgASAFamotAAA6AAQgAyAEIAEgDGpqLQAAOgAFIAIgBCANIAgtAAAiAWpqLQAAOgAAIAIgBCABIAVqai0AADoAASACIAQgASAMamotAAA6AAIgAiAEIA0gCC0AASIBamotAAA6AAMgAiAEIAEgBWpqLQAAOgAEIAIgBCABIAxqai0AADoABSACQQZqIQIgCEECaiEIIANBBmohAyAHQQJqIQcgCkEBaiEKIAtBAWohCyAJQQFrIgkNAAsgACgCcAUgAQtBAXEEQCAQIAstAABBAnQiAGooAgAhCSAPIAotAABBAnQiAWooAgAhBSAAIA5qKAIAIQAgAyAEIAEgEWooAgAiASAHLQAAIgZqai0AADoAACADIAQgBiAAIAVqQRB1IgBqai0AADoAASADIAQgBiAJamotAAA6AAIgAiAEIAEgCC0AACIDamotAAA6AAAgAiAEIAAgA2pqLQAAOgABIAIgBCADIAlqai0AADoAAgsLGwEBfyAAKALcAyIBQQA2AiQgASAAKAJ0NgIsC4UDAQN/AkAgAAJ/IAAoArwDIgEoAggEQCABQQA2AgggAEEAIAAoAuQDKAIAEQIAIABBAiAAKALIAygCABECAEECDAELAkAgACgCVEUNACAAKAKIAQ0AAkAgACgCXEUNACAAKAJsRQ0AIAAgASgCGDYC5AMgAUEBNgIIDAELIAAoAmQEQCAAIAEoAhQ2AuQDDAELIAAoAgAiAkEvNgIUIAAgAigCABEBAAsgACAAKALYAygCABEBACAAIAAoAsQDKAIIEQEAIAAoAkQNASABKAIQRQRAIAAgACgC4AMoAgARAQALIAAgACgC3AMoAgARAQAgACgCVARAIAAgASgCCCAAKALkAygCABECAAsgAEEDQQAgASgCCBsgACgCyAMoAgARAgBBAAsgACgCwAMoAgARAgALAkAgACgCCCICRQ0AIAIgASgCDCIDNgIMIAIgA0ECQQEgASgCCBtqIgE2AhAgACgCQEUNACAAKALMAygCFA0AIAJBAkEBIAAoAmwbIAFqNgIQCwsvAQF/IAAoArwDIQEgACgCVARAIAAgACgC5AMoAggRAQALIAEgASgCDEEBajYCDAscACAAQQBBAEEAIAEgAiADIAAoAsgDKAIEEQwAC2EBAn8CQCAAKALAAyIEKAIwIAQoAjQiBU8EQCAAIARBCGogACgCxAMoAgwRAwBFDQEgBEEANgIwIAQoAjQhBQsgACAEQQhqIARBMGogBSABIAIgAyAAKALIAygCBBEMAAsLuAcBD38CQCAAKALAAyIEKAI4RQRAIAAgBCAEKAJEQQJ0aigCPCAAKALEAygCDBEDAEUNASAEQQE2AjggBCAEKAJMQQFqNgJMCwJAAkACQCAEKAJIDgMBAgADCyAAIAQgBCgCREECdGooAjwgBEEwaiAEKAI0IAEgAiADIAAoAsgDKAIEEQwAIAQoAjAgBCgCNEkNAiAEQQA2AkggAigCACADTw0CCyAEQQA2AjAgBCAAKALIAiINQQFrNgI0AkAgBCgCTCAAKALMAkcNACAAKAIkIhBBAEwNACAAKALAAyIOIA4oAkRBAnRqIREgACgC2AEhBwNAIAcoAjAgBygCKCAHKAIMbCIFcCIGIAUgBhshBiAFIA1tIQUgCEUEQCAOIAZBAWsgBW1BAWo2AjQLAkAgBUEATA0AIAVBAXQiBUEBIAVBAUobIglBA3EhDyARKAI8IAhBAnRqKAIAIgogBkECdGpBBGshC0EAIQxBACEFIAlBAWtBA08EQCAJQfz///8HcSESQQAhCQNAIAogBSAGakECdGogCygCADYCACAKIAVBAXIgBmpBAnRqIAsoAgA2AgAgCiAFQQJyIAZqQQJ0aiALKAIANgIAIAogBUEDciAGakECdGogCygCADYCACAFQQRqIQUgCUEEaiIJIBJHDQALCyAPRQ0AA0AgCiAFIAZqQQJ0aiALKAIANgIAIAVBAWohBSAMQQFqIgwgD0cNAAsLIAdB2ABqIQcgCEEBaiIIIBBHDQALCyAEQQE2AkgLIAAgBCAEKAJEQQJ0aigCPCAEQTBqIAQoAjQgASACIAMgACgCyAMoAgQRDAAgBCgCMCAEKAI0SQ0AIAAoAsgCIQECQCAEKAJMQQFHDQAgACgCJCIKQQBMDQAgAUECaiELIAFBAWohDiAAKALAAyEGIAAoAtgBIQdBACEIA0AgBygCKCAHKAIMbCABbSIAQQBKBEAgCEECdCIDIAYoAkBqKAIAIQIgBigCPCADaigCACEDIAAgC2whCSAAIA5sIQ9BACEFA0AgAyAFIABrQQJ0IgxqIAMgBSAPakECdCINaigCADYCACACIAxqIAIgDWooAgA2AgAgAyAFIAlqQQJ0IgxqIAMgBUECdCINaigCADYCACACIAxqIAIgDWooAgA2AgAgBUEBaiIFIABHDQALCyAHQdgAaiEHIAhBAWoiCCAKRw0ACwsgBEEANgI4IARBAjYCSCAEIAFBAmo2AjQgBCABQQFqNgIwIAQgBCgCREEBczYCRAsLrQcBEX8gACgCwAMhBwJAAkACQCABDgMAAgECCyAAKALcAygCCARAIAdBxQE2AgQgACgCJCIQQQBKBEAgACgCyAIiDkECayERIA5BAmohEiAAKALYASENA0AgD0ECdCIAIAcoAkBqKAIAIQEgBygCPCAAaigCACECIAAgB2ooAgghBAJAIA0oAiggDSgCDGwgDm0iBSASbCIJQQBMDQBBACEGQQAhACAJQQFrQQNPBEAgCUF8cSELQQAhCgNAIAEgAEECdCIDaiADIARqKAIAIgg2AgAgAiADaiAINgIAIAEgA0EEciIIaiAEIAhqKAIAIgw2AgAgAiAIaiAMNgIAIAEgA0EIciIIaiAEIAhqKAIAIgw2AgAgAiAIaiAMNgIAIAEgA0EMciIDaiADIARqKAIAIgg2AgAgAiADaiAINgIAIABBBGohACAKQQRqIgogC0cNAAsLIAlBA3EiCUUNAANAIAEgAEECdCIDaiADIARqKAIAIgo2AgAgAiADaiAKNgIAIABBAWohACAGQQFqIgYgCUcNAAsLAkAgBUEATA0AIAVBAXQiBkEBIAZBAUobIgpBAXEhCCAFIBFsIQMgBSAObCEJQQAhACAGQQJOBEAgCkH+////B3EhCkEAIQYDQCABIAAgA2pBAnQiC2ogBCAAIAlqQQJ0IgxqKAIANgIAIAEgDGogBCALaigCADYCACABIABBAXIiCyADakECdCIMaiAEIAkgC2pBAnQiC2ooAgA2AgAgASALaiAEIAxqKAIANgIAIABBAmohACAGQQJqIgYgCkcNAAsLIAgEQCABIAAgA2pBAnQiBmogBCAAIAlqQQJ0IgBqKAIANgIAIAAgAWogBCAGaigCADYCAAtBACEEQQAhASAFQQFrQQNPBEAgBUF8cSEGQQAhAANAIAIgASAFa0ECdGogAigCADYCACACIAFBAXIgBWtBAnRqIAIoAgA2AgAgAiABQQJyIAVrQQJ0aiACKAIANgIAIAIgAUEDciAFa0ECdGogAigCADYCACABQQRqIQEgAEEEaiIAIAZHDQALCyAFQQNxIgBFDQADQCACIAEgBWtBAnRqIAIoAgA2AgAgAUEBaiEBIARBAWoiBCAARw0ACwsgDUHYAGohDSAPQQFqIg8gEEcNAAsLIAdBADYCTCAHQgA3AkQgB0EANgI4DwsgB0HGATYCBCAHIAcoAjQ2AjAPCyAHQccBNgIEDwsgACgCACIBQQM2AhQgACABKAIAEQEAC5YLAS1/IwBBgAFrIggkACAAKALMAkEBayEpIAAoAsQDIRQCfwJAA0AgACgCkAEiBCAAKAKYASIGSg0BIAAoAswDIgsoAhQNASAEIAZGBEAgACgClAEgACgCnAEgACgCnANFaksNAgsgACALKAIAEQAADQALQQAMAQsgACgCJEEASgRAIAAoAtgBIQkDQAJAIAkoAjRFDQACfyAAKAKcASIVIClPIipFBEAgCSgCDCIEQQF0IQcgBAwBCyAJKAIgIAkoAgwiBHAiBiAEIAYbIgcLIRYCfyAVBEAgACAUIA5BAnRqKAJIIAQgFUEBa2wgBCAHakEAIAAoAgQoAiARCgAgCSgCDEECdGoMAQsgACAUIA5BAnRqKAJIQQAgB0EAIAAoAgQoAiARCgALISsgFkEATA0AIA5BAnQiCyAAKALYA2ooAgQhLCAWQQFrIS0gFCgCcCAOQRhsaiEPIAkoAlAiBC8BBCIGQQh0IRwgBkEHdCEdIAQvARIiBkEIdCEeIAZBB3QhHyAELwEAIgZBBWwhLiAELwEgIgdBCHQhICAHQQd0ISEgBkEJbCEiIAQvARAiB0EIdCEjIAdBB3QhJCAELwECIgRBCHQhJSAEQQd0ISYgBkEkbCEnIAEgC2ooAgAhF0EAIRADQCArIBBBAnRqIgQoAgAiByENIBAgFXIEQCAEQQRrKAIAIQ0LIAchESAJKAIcQQFrIShBACEYICogECAtRnFFBEAgBCgCBCERCyARLgEAIhkhBCAHLgEAIhIhBiANLgEAIhohC0EAIRsDQCALIQUgGiELIAYhCiASIQYgBCEMIBkhBCAIIAdBgAEQPhogGCAoSQRAIBEuAYABIRkgDS4BgAEhGiAHLgGAASESCwJAIA8oAgQiA0UNACAILwECDQAgCAJ/ICcgCiASa2wiAkEATgRAIAIgJmogJW0iAiADQQBMDQEaIAJBASADdCIDQQFrIAIgA0gbDAELQQAgJiACayAlbSICQQEgA3QiE0EBayACIBNIGyACIANBAEobaws7AQILAkAgDygCCCIDRQ0AIAgvARANACAIAn8gJyALIARrbCICQQBOBEAgAiAkaiAjbSICIANBAEwNARogAkEBIAN0IgNBAWsgAiADSBsMAQtBACAkIAJrICNtIgJBASADdCITQQFrIAIgE0gbIAIgA0EAShtrCzsBEAsCQCAPKAIMIgNFDQAgCC8BIA0AIAgCfyAiIAsgBkEBdGsgBGpsIgJBAE4EQCACICFqICBtIgIgA0EATA0BGiACQQEgA3QiA0EBayACIANIGwwBC0EAICEgAmsgIG0iAkEBIAN0IhNBAWsgAiATSBsgAiADQQBKG2sLOwEgCwJAIA8oAhAiA0UNACAILwESDQAgCAJ/IC4gBSAMIBpqayAZamwiBUEATgRAIAUgH2ogHm0iBSADQQBMDQEaIAVBASADdCIMQQFrIAUgDEgbDAELQQAgHyAFayAebSIFQQEgA3QiDEEBayAFIAxIGyAFIANBAEobaws7ARILAkAgDygCFCIFRQ0AIAgvAQQNACAIAn8gIiAKIAZBAXRrIBJqbCIKQQBOBEAgCiAdaiAcbSIKIAVBAEwNARogCkEBIAV0IgVBAWsgBSAKShsMAQtBACAdIAprIBxtIgpBASAFdCIMQQFrIAogDEgbIAogBUEAShtrCzsBBAsgACAJIAggFyAbICwRBQAgEUGAAWohESANQYABaiENIAdBgAFqIQcgCSgCJCAbaiEbIBhBAWoiGCAoTQ0ACyAXIAkoAihBAnRqIRcgEEEBaiIQIBZHDQALCyAJQdgAaiEJIA5BAWoiDiAAKAIkSA0ACwsgACAAKAKcAUEBaiIBNgKcAUEDQQQgASAAKALMAkkbCyEAIAhBgAFqJAAgAAv6BQEUfyAAKALMAiEEAkAgACgCxAMiBSgCGCIJIAUoAhwiAkgEQCAEQQFrIRMgACgC6AJBAWshDSAFQSBqIQsgBSgCFCEGA0AgBiANTQRAA0AgACgCtAMEQCALKAIAQQAgACgC8AJBB3QQORoLIAAgCyAAKALUAygCBBEDAEUNBCAAKALUAiICQQBKBEBBACEHQQAhDgNAAkAgACAOQQJ0aigC2AIiAygCNEUEQCADKAJAIAdqIQcMAQsgAygCPCIEQQBMDQAgAygCRCAGbCEMIAMoAgRBAnQiAiAAKALYA2ooAgQhDyABIAJqKAIAIAMoAigiAiAJbEECdGohCiADQThByAAgBiANSRtqKAIAIghBASAIQQFKGyIQQX5xIRQgEEEBcSEVIAhBAEwhEUEAIQgDQAJAAkAgEyAAKAKUAU0EQCADKAJMIAggCWpMIBFyRQ0BDAILIBENAQtBACEEIAwhAkEAIRIgEEEBRwRAA0AgACADIAsgBCAHakECdGooAgAgCiACIA8RBQAgACADIAsgBEEBciAHakECdGooAgAgCiADKAIkIAJqIgIgDxEFACAEQQJqIQQgAygCJCACaiECIBJBAmoiEiAURw0ACwsgFQRAIAAgAyAFIAQgB2pBAnRqKAIgIAogAiAPEQUACyADKAI8IQQgAygCKCECCyAKIAJBAnRqIQogAygCOCAHaiEHIAhBAWoiCCAESA0ACyAAKALUAiECCyAOQQFqIg4gAkgNAAsLIAZBAWoiBiANTQ0ACyAFKAIcIQILQQAhBiAFQQA2AhQgCUEBaiIJIAJIDQALIAAoAswCIQQLQQEhAiAAIAAoApwBQQFqNgKcASAAIAAoApQBQQFqIgE2ApQBIAEgBEkEQCAAKALEAyEMIAAoAtQCQQFMBEAgACgC2AJBDEHMACABIARBAWtJG2ooAgAhAgsgDEIANwIUIAwgAjYCHEEDDwsgACAAKALMAygCDBEBAEEEDwsgBSAGNgIUIAUgCTYCGEEAC7AFARN/IwBBEGsiCCQAIAAoAsQDIQMgACgC1AJBAEoEQANAIAggAUECdCICaiAAIAMgACACaigC2AIiAigCBEECdGooAkggAigCDCICIAAoApQBbCACQQEgACgCBCgCIBEKADYCACABQQFqIgEgACgC1AJIDQALCwJ/IAMoAhgiByADKAIcIgJIBEAgA0EgaiENIAAoAugCIQEgAygCFCEEA0AgASAESwRAA0BBACEJQQAhAiAAKALUAiIOQQBKBEADQCAAIAlBAnQiAWooAtgCIgUoAjwiD0EASgRAIAUoAjgiBSAEbCEQIAVBfHEhESAFQQNxIQsgBUEBayESIAEgCGooAgAhE0EAIQoDQAJAIAVBAEwNACATIAcgCmpBAnRqKAIAIBBBB3RqIQFBACEMIBJBA08EQANAIAMgAkECdGoiBiABQYABajYCJCAGIAE2AiAgBiABQYACajYCKCAGIAFBgANqNgIsIAJBBGohAiABQYAEaiEBIAxBBGoiDCARRw0ACwtBACEGIAtFDQADQCADIAJBAnRqIAE2AiAgAkEBaiECIAFBgAFqIQEgBkEBaiIGIAtHDQALCyAKQQFqIgogD0cNAAsLIAlBAWoiCSAORw0ACwsgACANIAAoAtQDKAIEEQMARQRAIAMgBDYCFCADIAc2AhhBAAwFCyAEQQFqIgQgACgC6AIiAUkNAAsgAygCHCECC0EAIQQgA0EANgIUIAdBAWoiByACSA0ACwtBASECIAAgACgClAFBAWoiATYClAEgACgCzAIiBCABSwRAIAAoAsQDIQMgACgC1AJBAUwEQCAAKALYAkEMQcwAIAEgBEEBa0kbaigCACECCyADQgA3AhQgAyACNgIcQQMMAQsgACAAKALMAygCDBEBAEEECyEBIAhBEGokACABC6YDAQ1/IAAoAswCQQFrIQsgACgCxAMhDAJAA0AgACgCkAEiAyAAKAKYASIETgRAIAMgBEcNAiAAKAKUASAAKAKcAUsNAgsgACAAKALMAygCABEAAA0AC0EADwsgACgCJEEASgRAIAAoAtgBIQIDQAJAIAIoAjRFDQAgACAMIAVBAnQiA2ooAkggAigCDCIEIAAoApwBbCAEQQAgACgCBCgCIBEKACENAn8gCyAAKAKcAUsEQCACKAIMDAELIAIoAiAgAigCDCIEcCIGIAQgBhsLIgZBAEwNACAAKALYAyADaigCBCEOIAEgA2ooAgAhByACKAIcIQNBACEIA0BBACEEIAMEQCANIAhBAnRqKAIAIQNBACEJQQAhCgNAIAAgAiADIAcgCSAOEQUAIANBgAFqIQMgAigCJCAJaiEJIApBAWoiCiACKAIcIgRJDQALCyAHIAIoAihBAnRqIQcgBCEDIAhBAWoiCCAGRw0ACwsgAkHYAGohAiAFQQFqIgUgACgCJEgNAAsLIAAgACgCnAFBAWoiATYCnAFBA0EEIAEgACgCzAJJGwtNAQJ/IABBADYClAFBASEBIAAoAsQDIQIgACgC1AJBAUwEQCAAKALYAkHMAEEMIAAoAswCQQFGG2ooAgAhAQsgAkIANwIUIAIgATYCHAvcAgEJfyAAKALEAyIBKAIQBEAgAQJ/AkAgACgCUEUNACAAKALgAUUNACAAKAKgAUUNACABKAJwIgJFBEAgASAAQQEgACgCJEEYbCAAKAIEKAIAEQQAIgI2AnALIAAoAiRBAEwNACAAKALYASEDA0AgAygCUCIBRQ0BIAEvAQBFDQEgAS8BAkUNASABLwEQRQ0BIAEvASBFDQEgAS8BEkUNASABLwEERQ0BIAAoAqABIAVBCHRqIgEoAgBBAEgNASACIAEoAgQ2AgQgASgCBCEGIAIgASgCCDYCCCABKAIIIQcgAiABKAIMNgIMIAEoAgwhCCACIAEoAhA2AhAgASgCECEJIAIgASgCFDYCFEEBIAQgCSABKAIUciAIIAYgB3JychshBCADQdgAaiEDIAJBGGohAiAFQQFqIgUgACgCJEgNAAtBwwEgBA0BGgtBvwELNgIMCyAAQQA2ApwBC/IKAQ5/IwBBMGsiBCQAIAAoAtQDIQcCfwJAIAAoApgCRQ0AIAcoAiwNACAAKALQAyIDIAMoAhggBygCEEEIbWo2AhggB0EANgIQQQAgACADKAIIEQAARQ0BGiAAKALUAkEASgRAQQAhAwNAIAcgA0ECdGpBADYCGCADQQFqIgMgACgC1AJIDQALCyAHQQA2AhQgByAAKAKYAjYCLCAAKAK4Aw0AIAdBADYCKAsgBygCKEUEQCAAKAK0AyENIAAoArADIQ8gBCAANgIoIAQgACgCGCIGKAIAIgg2AhggBCAGKAIEIgI2AhwgBygCECEDIAcoAgwhBSAEIAcoAiQ2AhAgBCAHKQIcNwMIIAQgBykCFDcDACAAKALwAkEASgRAA0AgASAMQQJ0IgtqKAIAIQ4gByALaiIKKAJkIQYCfwJAAn8gA0EHTARAQQAgBEEYaiAFIANBABBnRQ0HGiAEKAIgIQVBASAEKAIkIgNBCEgNARoLIAYgBSADQQhrdUH/AXEiAkECdGooApABIggNAUEJCyECQQAgBEEYaiAFIAMgBiACEN8BIgJBAEgNBRogBCgCICEFIAQoAiQMAQsgAiAGakGQCWotAAAhAiADIAhrCyEDIAooAowBIQkCQAJAIAooArQBIgoEQCACBH8gAiADSgRAQQAgBEEYaiAFIAMgAhBnRQ0IGiAEKAIgIQUgBCgCJCEDCyACQQJ0IgZBsMICaigCACIIIAUgAyACayIDdXEiAkEAIAggAiAGQazCAmooAgBKG2sFQQALIQIgBCAAIAtqKAL0AkECdGoiBkEEaiAGKAIEIAJqIgI2AgAgDiACOwEAQQEhBiAKQQJIDQEDQAJ/AkACfyADQQdMBEBBACAEQRhqIAUgA0EAEGdFDQsaIAQoAiAhBUEBIAQoAiQiA0EISA0BGgsgCSAFIANBCGt1Qf8BcSICQQJ0aigCkAEiCA0BQQkLIQJBACAEQRhqIAUgAyAJIAIQ3wEiAkEASA0JGiAEKAIgIQUgBCgCJAwBCyACIAlqQZAJai0AACECIAMgCGsLIQMgAkEEdiEIAkAgAkEPcSICBEAgAiADSgRAQQAgBEEYaiAFIAMgAhBnRQ0KGiAEKAIgIQUgBCgCJCEDCyAOIA8gBiAIaiIGQQJ0aigCAEEBdGogAkECdCIIQbDCAmooAgAiCyAFIAMgAmsiA3VxIgJBACALIAIgCEGswgJqKAIAShtrOwEADAELIAhBD0cNBCAGQQ9qIQYLIAZBAWoiBiAKSA0ACwwBC0EBIQYgAkUNACACIANKBH9BACAEQRhqIAUgAyACEGdFDQYaIAQoAiAhBSAEKAIkBSADCyACayEDCyAGIA1KDQADQAJ/AkACfyADQQdMBEBBACAEQRhqIAUgA0EAEGdFDQkaIAQoAiAhBUEBIAQoAiQiA0EISA0BGgsgCSAFIANBCGt1Qf8BcSICQQJ0aigCkAEiCA0BQQkLIQJBACAEQRhqIAUgAyAJIAIQ3wEiAkEASA0HGiAEKAIgIQUgBCgCJAwBCyACIAlqQZAJai0AACECIAMgCGsLIQMgAkEEdiEIAkAgAkEPcSICBEAgAiADSgR/QQAgBEEYaiAFIAMgAhBnRQ0IGiAEKAIgIQUgBCgCJAUgAwsgAmshAwwBCyAIQQ9HDQILIAYgCGpBAWoiBiANTA0ACwsgDEEBaiIMIAAoAvACSA0ACyAAKAIYIQYgBCgCGCEIIAQoAhwhAgsgBiACNgIEIAYgCDYCACAHIAM2AhAgByAFNgIMIAcgBCgCEDYCJCAHIAQpAwg3AhwgByAEKQMANwIUCyAHIAcoAixBAWs2AixBAQshCCAEQTBqJAAgCAvlCgEMfyMAQTBrIgQkACAAKALUAyEGAn8CQCAAKAKYAkUNACAGKAIsDQAgACgC0AMiAyADKAIYIAYoAhBBCG1qNgIYIAZBADYCEEEAIAAgAygCCBEAAEUNARogACgC1AJBAEoEQEEAIQMDQCAGIANBAnRqQQA2AhggA0EBaiIDIAAoAtQCSA0ACwsgBkEANgIUIAYgACgCmAI2AiwgACgCuAMNACAGQQA2AigLIAYoAihFBEAgBCAANgIoIAQgACgCGCICKAIAIgg2AhggBCACKAIEIgk2AhwgBigCECEDIAYoAgwhBSAEIAYoAiQ2AhAgBCAGKQIcNwMIIAQgBikCFDcDACAAKALwAkEASgRAA0AgASALQQJ0IgpqKAIAIQwgBiAKaiIIKAJkIQICfwJAAn8gA0EHTARAQQAgBEEYaiAFIANBABBnRQ0HGiAEKAIgIQVBASAEKAIkIgNBCEgNARoLIAIgBSADQQhrdUH/AXEiB0ECdGooApABIgkNAUEJCyEJQQAgBEEYaiAFIAMgAiAJEN8BIgJBAEgNBRogBCgCICEFIAQoAiQMAQsgAiAHakGQCWotAAAhAiADIAlrCyEDIAgoAowBIQkCQAJAIAgoArQBIg0EQCACBH8gAiADSgRAQQAgBEEYaiAFIAMgAhBnRQ0IGiAEKAIgIQUgBCgCJCEDCyACQQJ0IgdBsMICaigCACIIIAUgAyACayIDdXEiAkEAIAggAiAHQazCAmooAgBKG2sFQQALIQggBCAAIApqKAL0AkECdGoiAkEEaiACKAIEIAhqIgI2AgAgDCACOwEAQQEhCCANQQJIDQEDQAJ/AkACfyADQQdMBEBBACAEQRhqIAUgA0EAEGdFDQsaIAQoAiAhBUEBIAQoAiQiA0EISA0BGgsgCSAFIANBCGt1Qf8BcSICQQJ0aigCkAEiBw0BQQkLIQJBACAEQRhqIAUgAyAJIAIQ3wEiAkEASA0JGiAEKAIgIQUgBCgCJAwBCyACIAlqQZAJai0AACECIAMgB2sLIQMgAkEEdiEHAkAgAkEPcSICBEAgAiADSgRAQQAgBEEYaiAFIAMgAhBnRQ0KGiAEKAIgIQUgBCgCJCEDCyAMIAcgCGoiB0ECdEGwyQJqKAIAQQF0aiACQQJ0IghBsMICaigCACIKIAUgAyACayIDdXEiAkEAIAogAiAIQazCAmooAgBKG2s7AQAMAQsgB0EPRw0EIAhBD2ohBwsgB0EBaiIIIA1IDQALIAdBPkwNAQwCC0EBIQggAkUNACACIANKBH9BACAEQRhqIAUgAyACEGdFDQYaIAQoAiAhBSAEKAIkBSADCyACayEDCwNAAn8CQAJ/IANBB0wEQEEAIARBGGogBSADQQAQZ0UNCRogBCgCICEFQQEgBCgCJCIDQQhIDQEaCyAJIAUgA0EIa3VB/wFxIgJBAnRqKAKQASIHDQFBCQshAkEAIARBGGogBSADIAkgAhDfASICQQBIDQcaIAQoAiAhBSAEKAIkDAELIAIgCWpBkAlqLQAAIQIgAyAHawshAyACQQR2IQcCQCACQQ9xIgIEQCACIANKBH9BACAEQRhqIAUgAyACEGdFDQgaIAQoAiAhBSAEKAIkBSADCyACayEDDAELIAdBD0cNAgsgByAIakEBaiIIQcAASA0ACwsgC0EBaiILIAAoAvACSA0ACyAEKAIcIQkgBCgCGCEIIAAoAhghAgsgAiAJNgIEIAIgCDYCACAGIAM2AhAgBiAFNgIMIAYgBCgCEDYCJCAGIAQpAwg3AhwgBiAEKQMANwIUCyAGIAYoAixBAWs2AixBAQshByAEQTBqJAAgBwvnBQELfyMAQTBrIgMkACAAKAKoAyEKIAAoAtQDIQQCfwJAIAAoApgCRQ0AIAQoAiwNACAAKALQAyIFIAUoAhggBCgCEEEIbWo2AhggBEEANgIQQQAgACAFKAIIEQAARQ0BGiAAKALUAkEASgRAQQAhBQNAIAQgBUECdGpBADYCGCAFQQFqIgUgACgC1AJIDQALCyAEQQA2AhQgBCAAKAKYAjYCLCAAKAK4Aw0AIARBADYCKAsgBCgCKEUEQCADIAA2AiggAyAAKAIYIgIoAgAiCDYCGCADIAIoAgQiBjYCHCAEKAIQIQUgBCgCDCEHIAMgBCgCJDYCECADIAQpAhw3AwggAyAEKQIUNwMAIAAoAvACQQBKBEBBACEIA0AgASAIQQJ0IgJqKAIAIQsgBCAAIAAgAmooAvQCQQJ0IgxqKALYAigCFEECdGooAjAhAgJ/AkACfyAFQQdMBEBBACADQRhqIAcgBUEAEGdFDQcaIAMoAiAhB0EBIAMoAiQiBUEISA0BGgsgAiAHIAVBCGt1Qf8BcSIGQQJ0aigCkAEiCQ0BQQkLIQlBACADQRhqIAcgBSACIAkQ3wEiAkEASA0FGiADKAIgIQcgAygCJAwBCyACIAZqQZAJai0AACECIAUgCWsLIQUgAgR/IAIgBUoEQEEAIANBGGogByAFIAIQZ0UNBRogAygCICEHIAMoAiQhBQsgAkECdCIGQbDCAmooAgAiCSAHIAUgAmsiBXVxIgJBACAJIAIgBkGswgJqKAIAShtrBUEACyEGIAMgDGoiAkEEaiACKAIEIAZqIgI2AgAgCyACIAp0OwEAIAhBAWoiCCAAKALwAkgNAAsgAygCHCEGIAMoAhghCCAAKAIYIQILIAIgBjYCBCACIAg2AgAgBCAFNgIQIAQgBzYCDCAEIAMoAhA2AiQgBCADKQMINwIcIAQgAykDADcCFAsgBCAEKAIsQQFrNgIsQQELIQYgA0EwaiQAIAYLlQYBDH8jAEEgayIDJAAgACgC1AMhBAJ/AkAgACgCmAJFDQAgBCgCLA0AIAAoAtADIgIgAigCGCAEKAIQQQhtajYCGCAEQQA2AhBBACAAIAIoAggRAABFDQEaIAAoAtQCQQBKBEBBACECA0AgBCACQQJ0akEANgIYIAJBAWoiAiAAKALUAkgNAAsLIARBADYCFCAEIAAoApgCNgIsIAAoArgDDQAgBEEANgIoCyAEKAIoRQRAAkAgBCgCFCICBEAgAkEBayEFDAELIAMgADYCGCADIAAoAhgiAigCADYCCCADIAIoAgQ2AgwgBCgCECECIAQoAgwhBgJ/QQAgACgCnAMiCCAAKAKgAyIKSg0AGiAEKAJAIQkgASgCACELIAAoArADIQwgACgCqAMhDQNAAn8CQAJ/IAJBB0wEQEEAIANBCGogBiACQQAQZ0UNCBogAygCECEGQQEgAygCFCICQQhIDQEaCyAJIAYgAkEIa3VB/wFxIgFBAnRqKAKQASIFDQFBCQshAUEAIANBCGogBiACIAkgARDfASIBQQBIDQYaIAMoAhAhBiADKAIUDAELIAEgCWpBkAlqLQAAIQEgAiAFawshAiABQQR2IQcCQCABQQ9xIgUEQCACIAVIBEBBACADQQhqIAYgAiAFEGdFDQcaIAMoAhAhBiADKAIUIQILIAsgDCAHIAhqIgFBAnRqKAIAQQF0aiAFQQJ0IgdBsMICaigCACIIIAYgAiAFayICdXEiBUEAIAggBSAHQazCAmooAgBKG2sgDXQ7AQAMAQsgB0EPRwRAQQAgAUEQSQ0DGiACIAdIBEBBACADQQhqIAYgAiAHEGdFDQcaIAMoAhAhBiADKAIUIQILIAdBAnRBsMICaigCACAGIAIgB2siAnVxQX8gB3RBf3NqDAMLIAhBD2ohAQsgAUEBaiEIIAEgCkgNAAtBAAshBSAAKAIYIgAgAygCCDYCACAAIAMoAgw2AgQgBCACNgIQIAQgBjYCDAsgBCAFNgIUCyAEIAQoAixBAWs2AixBAQshBSADQSBqJAAgBQupAwEIfyMAQSBrIgQkACAAKALUAyEDAkACQCAAKAKYAkUNACADKAIsDQAgACgC0AMiAiACKAIYIAMoAhBBCG1qNgIYIANBADYCECAAIAIoAggRAABFDQEgACgC1AJBAEoEQEEAIQIDQCADIAJBAnRqQQA2AhggAkEBaiICIAAoAtQCSA0ACwsgA0EANgIUIAMgACgCmAI2AiwgACgCuAMNACADQQA2AigLIAQgADYCGCAEIAAoAhgiBSgCACIGNgIIIAQgBSgCBCIHNgIMQQEhCSADKAIQIQIgAygCDCEIIAAoAvACQQBKBEBBASAAKAKoA3QhBkEAIQUDQCACQQBMBEAgBEEIaiAIIAJBARBnRQRAQQAhCQwECyAEKAIQIQggBCgCFCECCyAIIAJBAWsiAnZBAXEEQCABIAVBAnRqKAIAIgcgBy8BACAGcjsBAAsgBUEBaiIFIAAoAvACSA0ACyAEKAIMIQcgBCgCCCEGIAAoAhghBQsgBSAHNgIEIAUgBjYCACADIAI2AhAgAyAINgIMIAMgAygCLEEBazYCLAsgBEEgaiQAIAkLtgoBEX8jAEGgAmsiAyQAIAAoAtQDIQYCQAJAIAAoApgCRQ0AIAYoAiwNACAAKALQAyIIIAgoAhggBigCEEEIbWo2AhggBkEANgIQIAAgCCgCCBEAAEUNASAAKALUAkEASgRAA0AgBiACQQJ0akEANgIYIAJBAWoiAiAAKALUAkgNAAsLIAZBADYCFCAGIAAoApgCNgIsIAAoArgDDQAgBkEANgIoCwJAIAYoAihFBEAgACgCsAMhDSAAKAKgAyELIAAoAqgDIQQgAyAANgKYAiADIAAoAhgiCCgCADYCiAIgAyAIKAIENgKMAkF/IAR0IQ5BASAEdCEMIAYoAhAhAiAAKAKcAyEEIAEoAgAhCiAGKAIMIQUCfwJAIAYoAhQiCARADAELIAYoAkAhDwNAAn8CQAJ/IAJBB0wEQCADQYgCaiAFIAJBABBnRQ0IIAMoApACIQVBASADKAKUAiICQQhIDQEaCyAPIAUgAkEIa3VB/wFxIgFBAnRqKAKQASIIDQFBCQshASADQYgCaiAFIAIgDyABEN8BIgFBAEgNBiADKAKQAiEFIAMoApQCDAELIAEgD2pBkAlqLQAAIQEgAiAIawshAiABQQR2IQkCQAJAAkACQAJAIAFBD3EOAgIBAAsgACgCACIBQfkANgIUIABBfyABKAIEEQIACyACQQBMBEAgA0GIAmogBSACQQEQZ0UNCCADKAKQAiEFIAMoApQCIQILIAwgDiAFIAJBAWsiAnZBAXEbIRAMAQtBACEQIAlBD0YNAEEBIAl0IQggAUEQSQ0DIAIgCUgEQCADQYgCaiAFIAIgCRBnRQ0HIAMoApACIQUgAygClAIhAgsgCUECdEGwwgJqKAIAIAUgAiAJayICdXEgCGoiCA0DDAELIAQgCyAEIAtKGyISQQFqIQgCQANAAkAgCiANIAQiAUECdGooAgBBAXRqIgQvAQAEQCACQQBMBEAgA0GIAmogBSACQQEQZ0UNCiADKAKQAiEFIAMoApQCIQILIAUgAkEBayICdkEBcUUNASAMIAQuAQAiEXENASAEIBEgDiAMIBFBAEgbajsBAAwBCyAJQQBMDQIgCUEBayEJCyABQQFqIQQgASASRw0ACyAIIQELIBAEQCAKIA0gAUECdGooAgAiBEEBdGogEDsBACADIAdBAnRqIAQ2AgAgB0EBaiEHCyABQQFqIQQgASALSA0BCwtBAAwBCyAEIAsgBCALShshCwNAAkAgCiANIAQiAUECdGooAgBBAXRqIgQvAQBFDQAgAkEATARAIANBiAJqIAUgAkEBEGdFDQUgAygCkAIhBSADKAKUAiECCyAFIAJBAWsiAnZBAXFFDQAgDCAELgEAIglxDQAgBCAJIA4gDCAJQQBIG2o7AQALIAFBAWohBCABIAtHDQALIAhBAWsLIQEgACgCGCIAIAMoAogCNgIAIAAgAygCjAI2AgQgBiABNgIUIAYgAjYCECAGIAU2AgwLIAYgBigCLEEBazYCLEEBIQQMAQsgB0UEQEEAIQQMAQsgB0EBayEAIAdBA3EiAQRAQQAhAgNAIAogAyAHQQFrIgdBAnRqKAIAQQF0akEAOwEAIAJBAWoiAiABRw0ACwtBACEEIABBA0kNAANAIAogB0ECdCADaiIAQQRrKAIAQQF0akEAOwEAIAogAEEIaygCAEEBdGpBADsBACAKIABBDGsoAgBBAXRqQQA7AQAgCiADIAdBBGsiB0ECdGooAgBBAXRqQQA7AQAgBw0ACwsgA0GgAmokACAEC8QLAQd/IAAoApwDIQIgACgC1AMhBAJAIAAoAuABBEAgACgCoAMhAQJAAkACQCACRQRAIAFFDQEMAgsgASACSA0BIAEgACgCtANKDQEgACgC1AJBAUcNAQsCQCAAKAKkAyIBRQRAIAAoAqgDIQUMAQsgAUEBayIFIAAoAqgDRw0BCyAFQQ5IDQELIAAoAgAiASACNgIYIAFBETYCFCAAKAIAIAAoAqADNgIcIAAoAgAgACgCpAM2AiAgACgCACAAKAKoAzYCJCAAIAAoAgAoAgARAQALIAAoAtQCIgJBAEoEQANAIAAoAqABIAAgB0ECdGooAtgCKAIEIgNBCHRqIQUCf0EAIAAoApwDIgFFDQAaIAEgBSgCAEEATg0AGiAAKAIAIgEgAzYCGCABQfYANgIUIAAoAgBBADYCHCAAQX8gACgCACgCBBECACAAKAKcAwsiAiAAKAKgA0wEQANAIAAoAqQDIAUgAkECdGoiBigCACIBQQAgAUEAShtHBEAgACgCACIBIAM2AhggAUH2ADYCFCAAKAIAIAI2AhwgAEF/IAAoAgAoAgQRAgALIAYgACgCqAM2AgAgAiAAKAKgA0ghASACQQFqIQIgAQ0ACwsgB0EBaiIHIAAoAtQCIgJIDQALCyAEQbcBQbgBIAAoApwDIgEbQbkBQboBIAEbIAAoAqQDGzYCBCACQQBKBEBBACECA0AgACACQQJ0IgZqKALYAiEBAkAgACgCnANFBEAgACgCpAMNASAAQQEgASgCFCIBIAQgAUECdGpBMGoQlAMMAQsgAEEAIAEoAhgiASAEIAFBAnRqIgFBMGoQlAMgBCABKAIwNgJACyAEIAZqQQA2AhggAkEBaiICIAAoAtQCSA0ACwsgBEEANgIUDAELAkACQCACDQAgACgCpAMNACAAKAKoAw0AIAAoAtwBRSAAKAKgAyIBQT9KcQ0BIAEgACgCtANGDQELIAAoAgAiAUH9ADYCFCAAQX8gASgCBBECAAsgBEG7AUG8ASAAKAK0A0E/Rhs2AgRBACECIAAoAtQCQQBKBEADQCAAQQEgACACQQJ0IgVqKALYAiIGKAIUIgEgBCABQQJ0akHEAGoQlAMgACgCtAMEQCAAQQAgBigCGCIBIAQgAUECdGpB1ABqEJQDCyAEIAVqQQA2AhggAkEBaiICIAAoAtQCSA0ACwtBACEFIAAoAvACQQBMDQADQCAEIAVBAnQiAWoiBiAEIAAgACABaigC9AJBAnRqKALYAiIBKAIUQQJ0aigCRDYCZCAGIAQgASgCGEECdGooAlQ2AowBAkAgASgCNEUEQEEAIQIMAQsgASgCJCEDIAEoAighAUEBIQICfwJAAkACQAJAAkACQAJAIAAoArQDDjEIBgYABgYGBgEGBgYGBgYCBgYGBgYGBgYDBgYGBgYGBgYGBgQGBgYGBgYGBgYGBgYFBgtBASABQQFrIAFBA2tBfkkbQQN0QQEgA0EBayADQQNrQX5JG0ECdGpB4LsCagwGC0ECIAFBAWsgAUEEa0F9SRtBDGxBAiADQQFrIANBBGtBfUkbQQJ0akHwuwJqDAULQQMgAUEBayABQQVrQXxJG0EEdEEDIANBAWsgA0EFa0F8SRtBAnRqQaC8AmoMBAtBBCABQQFrIAFBBmtBe0kbQRRsQQQgA0EBayADQQZrQXtJG0ECdGpB4LwCagwDC0EFIAFBAWsgAUEHa0F6SRtBGGxBBSADQQFrIANBB2tBekkbQQJ0akHQvQJqDAILQQYgAUEBayABQQhrQXlJG0EcbEEGIANBAWsgA0EIa0F5SRtBAnRqQeC+AmoMAQtBByABQQFrIAFBCWtBeEkbQQV0QQcgA0EBayADQQlrQXhJG0ECdGpBsMACagsoAgBBAWohAgsgBiACNgK0ASAFQQFqIgUgACgC8AJIDQALCyAEQQA2AiggBEIANwIMIAQgACgCmAI2AiwLLQEBfyAAKALQAyIBIAEoAhggACgC1AMiAEEQaigCAEEIbWo2AhggAEEANgIQC9QKAQ5/IAAoAtQDIQUgACgCmAIEQCAFIAUoAjgiBAR/IAQFIAAQ1wIgBSgCOAtBAWs2AjgLAkACQCAFKAIUQX9GDQAgACgC8AJBAEwNACAAKAKwAyEOIAVBvAFqIQ8DQCABIAtBAnQiBGooAgAhDQJAIAAgBSAAIAAgBGooAvQCQQJ0IgRqKALYAiIMKAIUIglBAnRqIgJBPGooAgAgBCAFaiIHQShqKAIAaiIDEDtFBEAgB0EANgIoIAcoAhghBAwBC0EBIQZBACEIQQAhBAJAIAAgAyAAIANBAWoQOyIKakECaiIDEDtFDQAgACACKAI8IgJBFGoiAxA7RQRAQQEhBAwBC0EAIQYgACACQRVqIgMQO0UEQEECIQQMAQsgACACQRZqIgMQO0UEQEEEIQQMAQsgACACQRdqIgMQO0UEQEEIIQQMAQsgACACQRhqIgMQO0UEQEEQIQQMAQsgACACQRlqIgMQO0UEQEEgIQQMAQsgACACQRpqIgMQO0UEQEHAACEEDAELIAAgAkEbaiIDEDtFBEBBgAEhBAwBCyAAIAJBHGoiAxA7RQRAQYACIQQMAQsgACACQR1qIgMQO0UEQEGABCEEDAELIAAgAkEeaiIDEDtFBEBBgAghBAwBCyAAIAJBH2oiAxA7RQRAQYAQIQQMAQsgACACQSBqIgMQO0UEQEGAICEEDAELIAAgAkEhaiIDEDtFBEBBgMAAIQQMAQtBgIABIQQgACACQSJqIgMQOw0ECwJAIARBASAAIAlqIgktAOgBdEEBdUgNACAKQQJ0IQJBASAJLQD4AXRBAXUgBEgEQCACQQxqIQgMAQsgAkEEaiEICyAHIAg2AigCQCAGBEAgBCEDDAELIANBDmohBiAEIQMDQCAEQQF2IgJBACAAIAYQOxsgA3IhAyAEQQNLIQggAiEEIAgNAAsLIAcgBygCGCADQX9zIANBAWogChtqIgQ2AhgLIA0gBDsBAAJAIAAoArQDRQ0AIAAgDCgCGCIEaiEIIAUgBEECdGohBkEAIQQDQCAAIAYoAnwgBCICQQNsaiIDEDsNAQNAAkAgAkEBaiEEIAAgA0EBahA7DQAgA0EDaiEDIAQiAiAAKAK0A0gNAQwGCwsgACAPEDshCgJAIAAgA0ECaiIDEDtFBEBBACECDAELIAAgAxA7RQRAQQEhAgwBCwJAIAAgBigCfEG9AUHZASACIAgtAIgCSBtqIgIQO0UEQEECIQMMAQsgACACQQFqIgIQO0UEQEEEIQMMAQsgACACQQFqIgIQO0UEQEEIIQMMAQsgACACQQFqIgIQO0UEQEEQIQMMAQsgACACQQFqIgIQO0UEQEEgIQMMAQsgACACQQFqIgIQO0UEQEHAACEDDAELIAAgAkEBaiICEDtFBEBBgAEhAwwBCyAAIAJBAWoiAhA7RQRAQYACIQMMAQsgACACQQFqIgIQO0UEQEGABCEDDAELIAAgAkEBaiICEDtFBEBBgAghAwwBCyAAIAJBAWoiAhA7RQRAQYAQIQMMAQsgACACQQFqIgIQO0UEQEGAICEDDAELIAAgAkEBaiICEDtFBEBBgMAAIQMMAQtBgIABIQMgACACQQFqIgIQOw0GCyACQQ5qIQwgAyECA0AgA0EBdiIHQQAgACAMEDsbIAJyIQIgA0EDSyEJIAchAyAJDQALCyANIA4gBEECdGooAgBBAXRqIAJBf3MgAkEBaiAKGzsBACAEIAAoArQDSA0ACwsgC0EBaiILIAAoAvACSA0ACwtBAQ8LIAAoAgAiAUH1ADYCFCAAQX8gASgCBBECACAFQX82AhRBAQuPAwEKfyAAKALUAyEDIAAoApgCBEAgAyADKAI4IgIEfyACBSAAENcCIAMoAjgLQQFrNgI4CwJAIAMoAhRBf0YNAEF/IAAoAqgDIgJ0IQVBASACdCEGIAAoAqADIQQgASgCACEHIAAoArADIQggACgC2AIoAhghAgJAA0AgByAIIARBAnRqKAIAQQF0ai8BAA0BIARBAWsiBA0AC0EAIQQLIANBvAFqIQogACgCnANBAWshASADIAJBAnRqIQsDQCALKAJ8IAFBA2xqIQIgASAETgRAIAAgAhA7DQILAkACfwJAA0AgByAIIAFBAWoiAUECdGooAgBBAXRqIgkvAQAEQCAAIAJBAmoQO0UNBCAJLgEAIgJBAE4NAiACIAVqDAMLIAAgAkEBahA7BEAgBSAGIAAgChA7GwwDCyACQQNqIQIgASAAKAKgA0gNAAsgACgCACIBQfUANgIUIABBfyABKAIEEQIAIANBfzYCFEEBDwsgAiAGagshAiAJIAI7AQALIAEgACgCoANIDQALC0EBC40BAQR/IAAoAtQDIQIgACgCmAIEQCACIAIoAjgiAwR/IAMFIAAQ1wIgAigCOAtBAWs2AjgLIAAoAvACQQBKBEAgAkG8AWohA0EBIAAoAqgDdCEEQQAhAgNAIAAgAxA7BEAgASACQQJ0aigCACIFIAUvAQAgBHI7AQALIAJBAWoiAiAAKALwAkgNAAsLQQELwQUBDH8gACgC1AMhAyAAKAKYAgRAIAMgAygCOCIEBH8gBAUgABDXAiADKAI4C0EBazYCOAsCQAJAIAMoAhRBf0YNACADQbwBaiEGIAAoApwDQQFrIQQgACAAKALYAigCGCICaiEHIAMgAkECdGohBSABKAIAIQggACgCsAMhCQNAIAAgBSgCfCAEIgJBA2xqIgEQOw0BA0ACQCACQQFqIQQgACABQQFqEDsNACABQQNqIQEgBCICIAAoAqADSA0BDAQLCyAAIAYQOyEKAkAgACABQQJqIgEQO0UEQEEAIQIMAQsgACABEDtFBEBBASECDAELAkAgACAFKAJ8Qb0BQdkBIAIgBy0AiAJIG2oiAhA7RQRAQQIhAQwBCyAAIAJBAWoiAhA7RQRAQQQhAQwBCyAAIAJBAWoiAhA7RQRAQQghAQwBCyAAIAJBAWoiAhA7RQRAQRAhAQwBCyAAIAJBAWoiAhA7RQRAQSAhAQwBCyAAIAJBAWoiAhA7RQRAQcAAIQEMAQsgACACQQFqIgIQO0UEQEGAASEBDAELIAAgAkEBaiICEDtFBEBBgAIhAQwBCyAAIAJBAWoiAhA7RQRAQYAEIQEMAQsgACACQQFqIgIQO0UEQEGACCEBDAELIAAgAkEBaiICEDtFBEBBgBAhAQwBCyAAIAJBAWoiAhA7RQRAQYAgIQEMAQsgACACQQFqIgIQO0UEQEGAwAAhAQwBC0GAgAEhASAAIAJBAWoiAhA7DQQLIAJBDmohCyABIQIDQCABQQF2IgxBACAAIAsQOxsgAnIhAiABQQNLIQ0gDCEBIA0NAAsLIAggCSAEQQJ0aigCAEEBdGogAkF/cyACQQFqIAobIAAoAqgDdDsBACAEIAAoAqADSA0ACwtBAQ8LIAAoAgAiAUH1ADYCFCAAQX8gASgCBBECACADQX82AhRBAQuOBgELfyAAKALUAyEFIAAoApgCBEAgBSAFKAI4IgIEfyACBSAAENcCIAUoAjgLQQFrNgI4CwJAAkAgBSgCFEF/Rg0AIAAoAvACQQBMDQADQCABIAlBAnQiAmooAgAhDAJAIAAgBSAAIAAgAmooAvQCQQJ0IgJqKALYAigCFCIKQQJ0aiIEQTxqKAIAIAIgBWoiBkEoaigCAGoiAxA7RQRAIAZBADYCKCAGKAIYIQIMAQtBASEHQQAhCEEAIQICQCAAIAMgACADQQFqEDsiC2pBAmoiAxA7RQ0AIAAgBCgCPCIEQRRqIgMQO0UEQEEBIQIMAQtBACEHIAAgBEEVaiIDEDtFBEBBAiECDAELIAAgBEEWaiIDEDtFBEBBBCECDAELIAAgBEEXaiIDEDtFBEBBCCECDAELIAAgBEEYaiIDEDtFBEBBECECDAELIAAgBEEZaiIDEDtFBEBBICECDAELIAAgBEEaaiIDEDtFBEBBwAAhAgwBCyAAIARBG2oiAxA7RQRAQYABIQIMAQsgACAEQRxqIgMQO0UEQEGAAiECDAELIAAgBEEdaiIDEDtFBEBBgAQhAgwBCyAAIARBHmoiAxA7RQRAQYAIIQIMAQsgACAEQR9qIgMQO0UEQEGAECECDAELIAAgBEEgaiIDEDtFBEBBgCAhAgwBCyAAIARBIWoiAxA7RQRAQYDAACECDAELQYCAASECIAAgBEEiaiIDEDsNBAsCQCACQQEgACAKaiIKLQDoAXRBAXVIDQAgC0ECdCEEQQEgCi0A+AF0QQF1IAJIBEAgBEEMaiEIDAELIARBBGohCAsgBiAINgIoAkAgBwRAIAIhAwwBCyADQQ5qIQcgAiEDA0AgAkEBdiIEQQAgACAHEDsbIANyIQMgAkEDSyEIIAQhAiAIDQALCyAGIAYoAhggA0F/cyADQQFqIAsbaiICNgIYCyAMIAIgACgCqAN0OwEAIAlBAWoiCSAAKALwAkgNAAsLQQEPCyAAKAIAIgFB9QA2AhQgAEF/IAEoAgQRAgAgBUF/NgIUQQELlwgBB38gACgCnAMhAiAAKALUAyEDAkAgACgC4AEEQCAAKAKgAyEBAkACQAJAIAJFBEAgAUUNAQwCCyABIAJIDQEgASAAKAK0A0oNASAAKALUAkEBRw0BCwJAIAAoAqQDIgFFBEAgACgCqAMhBAwBCyABQQFrIgQgACgCqANHDQELIARBDkgNAQsgACgCACIBIAI2AhggAUERNgIUIAAoAgAgACgCoAM2AhwgACgCACAAKAKkAzYCICAAKAIAIAAoAqgDNgIkIAAgACgCACgCABEBAAsgACgC1AIiAkEASgRAA0AgACgCoAEgACAGQQJ0aigC2AIoAgQiBEEIdGohBQJ/QQAgACgCnAMiAUUNABogASAFKAIAQQBODQAaIAAoAgAiASAENgIYIAFB9gA2AhQgACgCAEEANgIcIABBfyAAKAIAKAIEEQIAIAAoApwDCyICIAAoAqADTARAA0AgACgCpAMgBSACQQJ0aiIHKAIAIgFBACABQQBKG0cEQCAAKAIAIgEgBDYCGCABQfYANgIUIAAoAgAgAjYCHCAAQX8gACgCACgCBBECAAsgByAAKAKoAzYCACACIAAoAqADSCEBIAJBAWohAiABDQALCyAGQQFqIgYgACgC1AIiAkgNAAsLIAAoApwDIQEgACgCpANFBEAgAUUEQCADQbABNgIEDAMLIANBsQE2AgQMAgsgAUUEQCADQbIBNgIEDAILIANBswE2AgQMAQsCQAJAIAINACAAKAKkAw0AIAAoAqgDDQAgACgCoAMiAUE/Sg0BIAEgACgCtANGDQELIAAoAgAiAUH9ADYCFCAAQX8gASgCBBECAAsgA0G0ATYCBCAAKALUAiECCyACQQBKBEBBACEEA0AgACAEQQJ0IgdqKALYAiEFAkACQCAAKALgAQRAIAAoApwDDQEgACgCpAMNAgsgBSgCFCICQRBPBEAgACgCACIBIAI2AhggAUEyNgIUIAAgACgCACgCABEBAAsgAyACQQJ0aiIBQTxqKAIAIgJFBEAgASAAQQFBwAAgACgCBCgCABEEACICNgI8CyACQgA3AAAgAkIANwA4IAJCADcAMCACQgA3ACggAkIANwAgIAJCADcAGCACQgA3ABAgAkIANwAIIAMgB2oiAUEANgIoIAFBADYCGCAAKALgAUUEQCAAKAK0Aw0BDAILIAAoApwDRQ0BCyAFKAIYIgJBEE8EQCAAKAIAIgEgAjYCGCABQTI2AhQgACAAKAIAKAIAEQEACyADIAJBAnRqIgFB/ABqKAIAIgJFBEAgASAAQQFBgAIgACgCBCgCABEEACICNgJ8CyACQQBBgAIQORoLIARBAWoiBCAAKALUAkgNAAsLIANBcDYCFCADQgA3AgwgAyAAKAKYAjYCOAurDQIKfwF8IAAoAiRBAEoEQCAAKALYAyEKIAAoAtgBIQcDQCABIQYgAiEEAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAcoAiggBygCJCIIQQh0aiIDQYMQTARAIANBgQhMBEACQCADQYEEaw4EFwMiHgALQYwBIQFBACECAkAgA0GBAmsOAiYfAAsgA0GDBmsOBAMhIRwhCyADQYIMTARAAkAgA0GCCGsOBxYiBSIiIhwACyADQYUKaw4GBSEhISEaIQsCQCADQYMMaw4KFCEhBiEhISEhGQALIANBhw5rDggGICAgICAgFyALIANBhRhMBEAgA0GEFEwEQCADQYQQaw4NEyEhIR8hISEhISEhFyALIANBhRRrDgYRICAgIAcICyADQYYcTARAIANBhhhrDgcQICAgICAJCgsCQCADQYccaw4IDyAgICAgIAsACyADQYggaw4JDR8fHx8fHx8MCwtBjQEhAUEAIQIMIgtBjgEhAQwhC0GPASEBQQAhAgwgC0GQASEBQQAhAgwfC0GRASEBQQAhAgweC0GSASEBQQAhAgwdC0GTASEBQQAhAgwcCyADQYsWRw0XQZQBIQFBACECDBsLQZUBIQFBACECDBoLIANBjRpHDRVBlgEhAUEAIQIMGQtBlwEhAUEAIQIMGAsgA0GPHkcNE0GYASEBQQAhAgwXC0GZASEBQQAhAgwWC0GaASEBQQAhAgwVC0GbASEBQQAhAgwUC0GcASEBQQAhAgwTC0GdASEBQQAhAgwSC0GeASEBQQAhAgwRC0GfASEBQQAhAgwQC0GgASEBQQAhAgwPC0GhASEBQQAhAgwOC0GiASEBQQAhAgwNC0GjASEBQQAhAgwMC0GkASEBQQAhAgwLC0GlASEBQQAhAgwKC0GmASEBQQAhAgwJC0GnASEBDAgLQagBIQFBACECDAcLQakBIQEMBgsgACgCSCICQQNJDQIgACgCACIBQTE2AhQgACABKAIAEQEADAMLIANBiRJGDQMLIAAoAgAiASAINgIYIAFBBzYCFCAAKAIAIAcoAig2AhwgACAAKAIAKAIAEQEADAELIAJBAnRB0LsCaigCACEBDAILIAYhASAEIQIMAQtBqgEhAUEAIQILIAogCUECdGoiBCABNgIEAkAgBygCNEUNACAEKAIsIAJGDQAgBygCUCIDRQ0AIAQgAjYCLAJAAkACQAJAIAIOAwABAgMLIAcoAlQhBkEAIQUDQCAGIAVBAnRqIAMgBUEBdGovAQA2AgAgBiAFQQFyIgRBAnRqIAMgBEEBdGovAQA2AgAgBiAFQQJyIgRBAnRqIAMgBEEBdGovAQA2AgAgBiAFQQNyIgRBAnRqIAMgBEEBdGovAQA2AgAgBUEEaiIFQcAARw0ACwwDCyAHKAJUIQZBACEFA0AgBiAFQQJ0aiAFQQF0IgRBkLoCai4BACADIARqLwEAbEGAEGpBDHU2AgAgBiAFQQFyIgRBAnRqIARBAXQiBEGQugJqLgEAIAMgBGovAQBsQYAQakEMdTYCACAFQQJqIgVBwABHDQALDAILIAcoAlQhCEEAIQZBACEFA0AgCCAFQQJ0aiAGQQN0QZC7AmorAwAiCyADIAVBAXRqLwEAuKJEAAAAAAAAwD+itjgCACAIIAVBAXIiBEECdGogCyADIARBAXRqLwEAuKJE72FIsVAx9j+iRAAAAAAAAMA/orY4AgAgCCAFQQJyIgRBAnRqIAsgAyAEQQF0ai8BALiiRMpvTZGu5/Q/okQAAAAAAADAP6K2OAIAIAggBUEDciIEQQJ0aiALIAMgBEEBdGovAQC4okSqEWzvYtDyP6JEAAAAAAAAwD+itjgCACAIIAVBBHIiBEECdGogCyADIARBAXRqLwEAuKJEAAAAAAAAwD+itjgCACAIIAVBBXIiBEECdGogCyADIARBAXRqLwEAuKJEO7+nwGkk6T+iRAAAAAAAAMA/orY4AgAgCCAFQQZyIgRBAnRqIAsgAyAEQQF0ai8BALiiRLsgx3t6UeE/okQAAAAAAADAP6K2OAIAIAggBUEHciIEQQJ0aiALIAMgBEEBdGovAQC4okRdq3LeVajRP6JEAAAAAAAAwD+itjgCACAFQQhqIQUgBkEBaiIGQQhHDQALDAELIAAoAgAiBEExNgIUIAAgBCgCABEBAAsgB0HYAGohByAJQQFqIgkgACgCJEgNAAsLC6cCAQl/IARBAEoEQCAAKAJwIglBfHEhCyAJQQNxIQogACgCJCIGQQBMIQwgCUEBa0EDSSENA0BBACEIIAxFBEADQAJAIAlFDQAgASAIQQJ0aigCACACQQJ0aigCACEAIAMoAgAgCGohBUEAIQcgDUUEQANAIAUgAC0AADoAACAFIAZqIgUgAC0AAToAACAFIAZqIgUgAC0AAjoAACAFIAZqIgUgAC0AAzoAACAAQQRqIQAgBSAGaiEFIAdBBGoiByALRw0ACwtBACEHIApFDQADQCAFIAAtAAA6AAAgBSAGaiEFIABBAWohACAHQQFqIgcgCkcNAAsLIAhBAWoiCCAGRw0ACwsgA0EEaiEDIAJBAWohAiAEQQFKIQAgBEEBayEEIAANAAsLC8ACAQ5/IARBAEoEQCAAKALQAiEFIAAoAnAhByAAKALgAyIAKAIUIQogACgCECELIAAoAgwhDCAAKAIIIQ0DQCAEIQggBwRAIAJBAnQiACABKAIMaigCACEOIAEoAgggAGooAgAhDyABKAIEIABqKAIAIRAgASgCACAAaigCACERIAMoAgAhBEEAIQADQCAAIBBqLQAAIQYgBCAFIAAgEWotAABB/wFzIgkgDSAAIA9qLQAAQQJ0IhJqKAIAa2otAAA6AAAgBCAFIAkgCyASaigCACAKIAZBAnQiBmooAgBqQRB1a2otAAA6AAEgBCAFIAkgBiAMaigCAGtqLQAAOgACIAQgACAOai0AADoAAyAEQQRqIQQgAEEBaiIAIAdHDQALCyADQQRqIQMgAkEBaiECIAhBAWshBCAIQQJODQALCwvxAgELfyAEQQBKBEAgACgCcCIIQX5xIQ4gCEEBcSEPA0AgBCEMAkAgCEUNACACQQJ0IgAgASgCCGooAgAhBiABKAIEIABqKAIAIQkgASgCACAAaigCACEHIAMoAgAhBEEAIQBBACENIAhBAUcEQANAIAAgB2otAAAhCiAAIAZqLQAAIQsgBCAAIAlqLQAAIgU6AAEgBCAFIAtqQYABczoAAiAEIAUgCmpBgAFzOgAAIAcgAEEBciIFai0AACEKIAUgBmotAAAhCyAEIAUgCWotAAAiBToABCAEIAUgC2pBgAFzOgAFIAQgBSAKakGAAXM6AAMgAEECaiEAIARBBmohBCANQQJqIg0gDkcNAAsLIA9FDQAgACAHai0AACEHIAAgBmotAAAhBiAEIAAgCWotAAAiADoAASAEIAAgBmpBgAFzOgACIAQgACAHakGAAXM6AAALIANBBGohAyACQQFqIQIgDEEBayEEIAxBAk4NAAsLC6kCAQl/IARBAEoEQCAAKAJwIgVBfnEhDCAFQQFxIQ0DQCAEIQkCQCAFRQ0AIAJBAnQiACABKAIIaigCACEGIAEoAgQgAGooAgAhByABKAIAIABqKAIAIQggAygCACEEQQAhAEEAIQogBUEBRwRAA0AgBCAAIAhqLQAAOgAAIAQgACAHai0AADoAASAEIAAgBmotAAA6AAIgBCAIIABBAXIiC2otAAA6AAMgBCAHIAtqLQAAOgAEIAQgBiALai0AADoABSAAQQJqIQAgBEEGaiEEIApBAmoiCiAMRw0ACwsgDUUNACAEIAAgCGotAAA6AAAgBCAAIAdqLQAAOgABIAQgACAGai0AADoAAgsgA0EEaiEDIAJBAWohAiAJQQFrIQQgCUECTg0ACwsLogIBDX8gBEEASgRAIAAoAtACIQUgACgCcCEHIAAoAuADIgAoAhQhCiAAKAIQIQsgACgCDCEMIAAoAgghDQNAIAQhCCAHBEAgAkECdCIAIAEoAghqKAIAIQ4gASgCBCAAaigCACEPIAEoAgAgAGooAgAhECADKAIAIQRBACEAA0AgACAPai0AACEGIAQgBSAAIBBqLQAAIgkgDSAAIA5qLQAAQQJ0IhFqKAIAamotAAA6AAAgBCAFIAkgCyARaigCACAKIAZBAnQiBmooAgBqQRB1amotAAA6AAEgBCAFIAkgBiAMaigCAGpqLQAAOgACIARBA2ohBCAAQQFqIgAgB0cNAAsLIANBBGohAyACQQFqIQIgCEEBayEEIAhBAk4NAAsLC9YCAQl/IARBAEoEQCAAKAJwIghBfHEhDCAIQQNxIQkgCEEBa0EDSSENA0AgBCEKAkAgCEUNACABKAIAIAJBAnRqKAIAIQYgAygCACEEQQAhC0EAIQBBACEHIA1FBEADQCAEIAAgBmotAAAiBToAASAEIAU6AAIgBCAFOgAAIAQgBiAAQQFyai0AACIFOgAEIAQgBToABSAEIAU6AAMgBCAGIABBAnJqLQAAIgU6AAcgBCAFOgAIIAQgBToABiAEIAYgAEEDcmotAAAiBToACiAEIAU6AAsgBCAFOgAJIABBBGohACAEQQxqIQQgB0EEaiIHIAxHDQALCyAJRQ0AA0AgBCAAIAZqLQAAIgc6AAEgBCAHOgACIAQgBzoAACAAQQFqIQAgBEEDaiEEIAtBAWoiCyAJRw0ACwsgA0EEaiEDIAJBAWohAiAKQQFrIQQgCkECTg0ACwsL6gEBB38gBEEASgRAIAAoAnAhByAAKALgAygCGCEFA0AgBCEAIAcEQCACQQJ0IgQgASgCCGooAgAhCCABKAIEIARqKAIAIQkgASgCACAEaigCACEKIAMoAgAhC0EAIQQDQCAEIAtqIAUgBCAJai0AACIGQQJ0akGACGooAgAgBSAGQYB/cyIGIAQgCmotAABqQf8BcUECdGooAgBqIAUgBiAEIAhqLQAAakH/AXFBAnRqQYAQaigCAGpBEHY6AAAgBEEBaiIEIAdHDQALCyADQQRqIQMgAkEBaiECIABBAWshBCAAQQJODQALCwvUAQEGfyAEQQBKBEAgACgCcCEGIAAoAuADKAIYIQUDQCAEIQAgBgRAIAJBAnQiBCABKAIIaigCACEHIAEoAgQgBGooAgAhCCABKAIAIARqKAIAIQkgAygCACEKQQAhBANAIAQgCmogBSAEIAdqLQAAQQJ0akGAEGooAgAgBSAEIAhqLQAAQQJ0akGACGooAgAgBSAEIAlqLQAAQQJ0aigCAGpqQRB2OgAAIARBAWoiBCAGRw0ACwsgA0EEaiEDIAJBAWohAiAAQQFrIQQgAEECTg0ACwsLFwAgASgCACACIANBACAEIAAoAnAQkgMLpwoBDX8jAEEQayICJAACQCAAKAIYIgYoAgQiBEUEQCAAIAYoAgwRAABFBEBBACEEDAILIAYoAgQhBAsgBigCACIBLQAAIQUgBEEBayIEBH8gAUEBagUgACAGKAIMEQAARQRAQQAhBAwCCyAGKAIEIQQgBigCAAsiAUEBaiEIIARBAWshBEEOQQAgAS0AACAFQQh0ciIBQQJrIgUgASAFSRsgAUEPSxsiAQRAA0AgBEUEQCAAIAYoAgwRAABFBEBBACEEDAQLIAYoAgAhCCAGKAIEIQQLIAJBAmogA2ogCC0AADoAACAIQQFqIQggBEEBayEEIANBAWoiAyABRw0ACwsgBSABayEMAkACQAJAIAAoArgDIgNB4AFrIgcEQCAHQQ5GBEAMAgUMAwsACyABIAxqIQUCQAJAAkACQCABQQ5PBEAgAi0AAkHKAEcNAiACLQADQcYARw0BIAItAARByQBHDQEgAi0ABUHGAEcNASACLQAGDQEgAEEBNgKcAiAAIAItAAciAToAoAIgACACLQAIIgc6AKECIAAgAi0ACSIJOgCiAiAAIAIvAAoiA0EIdCADQQh2ciIKOwGkAiAAIAIvAAwiA0EIdCADQQh2ciILOwGmAiABQQFrQf8BcUECTwRAIAAoAgAiAyABNgIYIANB+gA2AhQgACgCACAALQChAjYCHCAAQX8gACgCACgCBBECACAALQCiAiEJIAAvAaYCIQsgAC8BpAIhCiAALQChAiEHIAAtAKACIQELIAAoAgAiAyABNgIYIANB2QA2AhQgAyAJNgIoIAMgC0H//wNxNgIkIAMgCkH//wNxNgIgIAMgBzYCHCAAQQEgAygCBBECACACLQAPIgMgAi0ADiIBcgRAIAAoAgAiAUHcADYCFCABIAItAA42AhggACgCACACLQAPNgIcIABBASAAKAIAKAIEEQIAIAItAA8hAyACLQAOIQELIAVBDmsiBSABIANsQQNsRg0EIAAoAgAiASAFNgIYIAFB2gA2AhQMAwsgAUEGSQ0BIAItAAJBygBHDQELIAItAANBxgBHDQAgAi0ABEHYAEcNACACLQAFQdgARw0AIAItAAYNAAJAAkACQAJAIAItAAdBEGsOBAABAwIDCyAAKAIAIgEgBTYCGCABQe4ANgIUDAQLIAAoAgAiASAFNgIYIAFB7wA2AhQMAwsgACgCACIBIAU2AhggAUHwADYCFAwCCyAAKAIAIgFB2wA2AhQgASACLQAHNgIYIAAoAgAgBTYCHAwBCyAAKAIAIgEgBTYCGCABQc8ANgIUCyAAQQEgACgCACgCBBECAAsMAgsCQCABQQxJDQAgAi0AAkHBAEcNACACLQADQeQARw0AIAItAARB7wBHDQAgAi0ABUHiAEcNACACLQAGQeUARw0AIAItAAghAyACLQAHIQcgAi0ACiEJIAItAAkhCiACLQAMIQsgAi0ACyENIAItAA0hBSAAKAIAIgFBzgA2AhQgASAFNgIkIAEgCyANQQh0cjYCICABIAkgCkEIdHI2AhwgASADIAdBCHRyNgIYIABBASABKAIEEQIAIAAgBToArAIgAEEBNgKoAgwCCyAAKAIAIgEgBTYCGCABQdAANgIUIABBASAAKAIAKAIEEQIADAELIAAoAgAiASADNgIYIAFBxgA2AhQgACAAKAIAKAIAEQEACyAGIAQ2AgQgBiAINgIAQQEhBCAMQQBMDQAgACAMIAAoAhgoAhARAgALIAJBEGokACAECzYAIABBADYC2AEgAEEANgK4AyAAQQA2ApABIAAoAtADIgBBADYCpAEgAEEANgIYIABCADcCDAuGOwEPfyMAQaACayIJJAAgACgCuAMhAQNAAkACQAJAIAENACAAKALQAygCDEUEQCAAKAIYIgIoAgQiAUUEQCAAIAIoAgwRAABFBEBBACEBDAQLIAIoAgQhAQsgAigCACIDLQAAIQUgAUEBayIEBH8gA0EBagUgACACKAIMEQAARQRAQQAhAQwECyACKAIEIQQgAigCAAsiAUEBaiEDIAVB/wFGIAEtAAAiAUHYAUZxRQRAIAAoAgAiBiAFNgIYIAZBNzYCFCAAKAIAIAE2AhwgACAAKAIAKAIAEQEACyAAIAE2ArgDIAIgBEEBazYCBCACIAM2AgAMAQsgABDjA0UEQEEAIQEMAgsgACgCuAMhAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAFBAWsO/gEPERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERERIBAgUJBQUFBQMEBQgFBQUPDw8PDw8PDwAHBgoQCxERDQ0NDQ0NDQ0NDQ0NDQ0NDRERERERERERDBERERERDhELIAAoAgAiAkHoADYCFCAAQQEgAigCBBECACAAKALQAyIBKAIMBEAgACgCACICQcAANgIUIAAgAigCABEBACAAKALQAyEBCyAAQgA3AOgBIABCADcA8AEgAEKBgoSIkKDAgAE3AIACIABCgYKEiJCgwIABNwD4ASAAQoWKlKjQoMGCBTcAkAIgAEKFipSo0KDBggU3AIgCIABCADcDsAIgAEEANgIoIABCADcDmAIgAEEAOgCsAiAAQoGABDcCpAIgAEEAOgCiAiAAQYECOwGgAiABQQE2AgwMFAtBACEBIABBAEEAQQAQ2AINEwwSC0EAIQEgAEEAQQFBABDYAg0SDBELQQAhASAAQQBBAEEBENgCDREMEAtBACEBIABBAEEBQQEQ2AINEAwPCyAAKAIAIgIgATYCGCACQT82AhQgACAAKAIAKAIAEQEADA8LIAAoAhgiBigCBCEBIAYoAgAhAyAAKALQAygCEEUEQCAAKAIAIgJBPDYCFCACQRhqQei4AkHQABA+GiAAIAAoAgAoAgARAQALIAFFBEAgACAGKAIMEQAARQRAQQAhAQwPCyAGKAIAIQMgBigCBCEBCyADLQAAIQUgAUEBayICBH8gA0EBagUgACAGKAIMEQAARQRAQQAhAQwPCyAGKAIEIQIgBigCAAsiBC0AACEBIAJBAWsiAwR/IARBAWoFIAAgBigCDBEAAEUEQEEAIQEMDwsgBigCBCEDIAYoAgALIQQgACgCACICIAQtAAAiCzYCGCACQekANgIUQQEhAiAAQQEgACgCACgCBBECAAJAAkACQCALQQF0QQZqIAVBCHQgAXJHIAtBBEtyDQAgCwRAIAAgCzYC1AIgBEEBaiEKIANBAWshBQwCCyAAKALgAUUNACAAIAs2AtQCIARBAWohCiADQQFrIQUMAgsgACgCACIBQQw2AhQgACAB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AwR/IAJBAWoFIAAgASgCDBEAAEUEQEEAIQEMCwsgASgCBCEDIAEoAgALIgVBAWohAiADQQFrIQMgBS0AACAEQQh0ckH/AUcNACADRQRAIAAgASgCDBEAAEUEQEEAIQEMCwsgASgCBCEDIAEoAgAhAgsgAkEBaiEEIANBAWshAyACLQAAQQNHBEAgBCECDAELIANFBEAgACABKAIMEQAARQRAQQAhAQwLCyABKAIEIQMgASgCACEECyAEQQFqIQIgA0EBayEDIAAoAtgBIgcoAlggBC0AAEcNACADRQRAIAAgASgCDBEAAEUEQEEAIQEMCwsgACgC2AEhByABKAIEIQMgASgCACECCyACQQFqIQQgA0EBayEDIAcoAgAgAi0AAEcEQCAEIQIMAQsgA0UEQCAAIAEoAgwRAABFBEBBACEBDAsLIAAoAtgBIQcgASgCBCEDIAEoAgAhBAsgBEEBaiECIANBAWshAyAHKAKwASAELQAARw0AIANFBEAgACABKAIMEQAARQRAQQAhAQwLCyABKAIEIQMgASgCACECCyACQQFqIQQgA0EBayEDIAItAABBgAFHBEAgBCECDAELIANFBEAgACABKAIMEQAARQRAQQAhAQwLCyABKAIEIQMgASgCACEECyAELQAAIQUgA0EBayIDBH8gBEEBagUgACABKAIMEQAARQRAQQAhAQwLCyABKAIEIQMgASgCAAsiBEEBaiECIANBAWshAyAELQAAIAVBCHRyDQAgA0UEQCAAIAEoAgwRAABFBEBBACEBDAsLIAEoAgQhAyABKAIAIQILIAItAAAhBCADQQFrIgMEfyACQQFqBSAAIAEoAgwRAABFBEBBACEBDAsLIAEoAgQhAyABKAIACyIFQQFqIQIgA0EBayEDIAUtAAAgBEEIdHINACADRQRAIAAgASgCDBEAAEUEQEEAIQEMCwsgASgCBCEDIAEoAgAhAgsgAkEBaiEEIANBAWshAyACLQAABEAgBCECDAELIANFBEAgACABKAIMEQAARQRAQQAhAQwLCyABKAIEIQMgASgCACEECyAELQAAIQUgA0EBayIDBH8gBEEBagUgACABKAIMEQAARQRAQQAhAQwLCyABKAIEIQMgASgCAAsiBEEBaiECIANBAWshAyAELQAAIAVBCHRyQQFHDQAgA0UEQCAAIAEoAgwRAABF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QcsBNgIUCwJAIAAoAswDKAIQRQ0AIAAoAgghBQNAIAUEQCAAIAUoAgARAQALAkAgACAAKALMAygCABEAACIBDgMFAAIACyAAKAIIIgVFIAFBfXFBAUdyDQAgBSAFKAIEQQFqIgE2AgQgASAFKAIIIgJIDQAgBSAAKALMAiACajYCCAwACwALIAAgACgCkAE2ApgBDAELIAAoAgAiAiABNgIYIAJBFTYCFCAAIAAoAgAoAgARAQALIAAoAhRBzAFHBEAgACAAKAK8AygCABEBACAAQcwBNgIUIABBADYCjAELAkAgACgCvAMoAggEQCAAQYwBaiECIAAoAowBIQUDQCAAKAJ0IgMgBUsEQCAAKAIIIgEEQCABIAM2AgggASAFNgIEIAAgASgCABEBACAAKAKMASEFC0EAIQEgAEEAIAJBACAAKALAAygCBBEHACAFIAAoAowBIgVHDQEMAwsgACAAKAK8AygCBBEBACAAIAAoArwDKAIAEQEAQQAhBSAAQQA2AowBIAAoArwDKAIIDQALCyAAQc4BQc0BIAAoAkQbNgIUQQEhAQsLIAEL0gEBAn8CQAJAIAAoAhQiAUHNAWtBAUsNACAAKAJADQAgACgCjAEgACgCdEkEQCAAKAIAIgFBxQA2AhQgACABKAIAEQEACyAAIAAoArwDKAIEEQEAIABB0gE2AhQMAQsCQAJAIAFBzwFrDgQAAQECAQsgAEHSATYCFAwBCyAAKAIAIgIgATYCGCACQRU2AhQgACAAKAIAKAIAEQEACwJAA0AgACgCzAMiASgCFA0BIAAgASgCABEAAA0AC0EADwsgACAAKAIYKAIYEQEAIAAQugVBAQucBgEFfyAAKAIUIgNBfnFByAFHBEAgACgCACICIAM2AhggAkEVNgIUIAAgACgCACgCABEBAAsCf0EBIQICQAJAAkACQAJAIAAoAhQiA0HIAWsOCwABBAICAgICAgMCAwsgACAAKALMAygCBBEBACAAIAAoAhgoAggRAQAgAEHJATYCFAsgACAAKALMAygCABEAACICQQFHDQIgACgCJCICIQUCQAJAAkACQCACQQFrDgQDAgABAgsgACgC2AEiAygCsAEhBEECIQUgAygCACIGQQFHIgIgAygCWCIDQQJHciAEQQNHckUEQEEDIQIMAwsgAiADQSJHckUEQEEHIQIgBEEjRg0DCyAGQdIARyADQccAR3IgBEHCAEdyRQRAQQIhAgwDCyAGQfIARyADQecAR3JFBEBBBiECIARB4gBGDQMLIAAoApwCBEBBAyECDAMLIAAoAqgCBEBBAiECAkACQCAALQCsAiIDDgIFAAELQQMhAgwECyAAKAIAIgIgAzYCGCACQfQANgIUIABBfyAAKAIAKAIEEQIAQQMhAgwDCyAAKAIAIgIgBjYCGCACQfEANgIUIAIgBDYCICACIAM2AhwgAEEBIAIoAgQRAgBBAyECDAILQQQhBSAAKAKoAkUEQEEEIQIMAgtBBCECAkACQCAALQCsAiIDDgMDAQABC0EFIQIMAgsgACgCACICIAM2AhggAkH0ADYCFCAAQX8gACgCACgCBBECAEEFIQIMAQtBACECQQAhBQsgACAFNgIsIAAgAjYCKCAAQQA2AogBIABBgAI2AmAgAEKCgICAEDcDWCAAQgE3A1AgAEKAgICAEDcDSCAAQgA3A0AgAEKAgICAgICA+D83AzggAEEANgJsIABCADcCZCAAQcoBNgIUIAAgACgCrAMiAjYCNCAAIAI2AjBBAQwDCyAAIAAoAswDKAIAEQAADAILIAAoAgAiAiADNgIYIAJBFTYCFCAAIAAoAgAoAgARAQBBACECCyACCyICQQJGBEAgAQRAIAAoAgAiAUE1NgIUIAAgASgCABEBAAsgABC6BQsgAgsHACAAELkFC6IHAQF/IABBADYCBCABQdoARwRAIAAoAgBCjYCAgKALNwIUIAAoAgAgATYCHCAAIAAoAgAoAgARAQALIAJB6ANHBEAgACgCAEKWgICAgD03AhQgACgCACACNgIcIAAgACgCACgCABEBAAsgACgCACEBIAAoAgwhAiAAQQRqQQBB5AMQORogAEEBNgIQIAAgAjYCDCAAIAE2AgAjAEEQayICJAAgAEEANgIEIAJBADYCDEHUABA3IgFFBEAgACgCAEI4NwIUIAAgACgCACgCABEBAAsgAUGAlOvcAzYCMCABQd8BNgIoIAFB4AE2AiQgAUHhATYCICABQeIBNgIcIAFB4wE2AhggAUHkATYCFCABQeUBNgIQIAFB5gE2AgwgAUHnATYCCCABQegBNgIEIAFB6QE2AgAgAUIANwI0IAFBADYCLCABQdQANgJMIAFCADcCPCABQgA3AkQgACABNgIEAkBBn5cCEI0DIgNFDQAgAkH4ADoACyACIAJBDGo2AgAgAiACQQtqNgIEIANBxpACIAIQpQFBAEwNACACKAIMIQMgAi0AC0HfAXFBzQBGBEAgAiADQegHbCIDNgIMCyABIANB6AdsNgIsCyACQRBqJAAgAEEANgK4AiAAQQA2AhggAEEANgIIIABCADcCpAEgAEIANwKsASAAQgA3ArQBIABCADcCvAEgAEIANwLEASAAQgA3AswBIAAgAEEAQawBIAAoAgQoAgARBAAiATYC0AMgAUIANwJgIAFB/AA2AhwgAUH9ADYCCCABQf4ANgIEIAFB/wA2AgAgAUEANgJoIAFB/AA2AiQgAUH8ADYCKCABQgA3AmwgAUH8ADYCLCABQfwANgIwIAFCADcCdCABQfwANgI0IAFB/AA2AjggAUIANwJ8IAFB/AA2AjwgAUEANgKEASABQUBrQfwANgIAIAFCADcCiAEgAUH8ADYCRCABQfwANgJIIAFB/AA2AkwgAUH8ADYCUCABQgA3ApABIAFB/AA2AlQgAUIANwKYASABQQA2AqABIAFB/AA2AlwgAUGAATYCICABQYABNgJYIABBADYCuAMgAEEANgKQASAAQQA2AtgBIAAoAtADIgFBADYCpAEgAUEANgIYIAFCADcCDCAAIABBAEEcIAAoAgQoAgARBAAiATYCzAMgAUEBNgIYIAFCADcCECABQfgANgIMIAFB+QA2AgggAUH6ADYCBCABQfsANgIAIABByAE2AhQLIgEBfUF/IAAqAgAgASoCAJMiAkMAAAAAXiACQwAAAABdGwsQACABIAIgAyAAKAIAEQQACz4BAn8jAEEQayIEJAAgBEEIaiIDIAEgAiAAKAIAEQYAIAMoAgAQKSADKAIAIQAgAygCABAoIARBEGokACAAC1EBAn8jAEEQayICJAAgACgCACEDIAIgACgCBCIAQQF1IAFqIgEgAEEBcQR/IAEoAgAgA2ooAgAFIAMLEQAANgIMIAIoAgwhACACQRBqJAAgAAs5AQF/IAAoAgQiBEEBdSABaiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRBgALNwEBfyAAKAIEIgNBAXUgAWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxECAAsHACAAERAACwsAIAEgAiAAETQACwsAIAEgAiAAEQIACysCAX8BfCMAQRBrIgIkACACIAEgABEaADkDCCACKwMIIQMgAkEQaiQAIAMLCwAgASACIAARFAALJwEBfyMAQRBrIgEkACABIAAREAA2AgwgASgCDCEAIAFBEGokACAACwkAIAEgABEBAAsPACABIAAoAgBqIAI2AgALDQAgASAAKAIAaigCAAsRACAAKAIAQYQBakEBEPUEAAsYAQF/QRAQWyIAQgA3AwAgAEIANwMIIAALKAEBfyMAQRBrIgMkACADIAEgAiAAEQYAIAMQwAUhACADQRBqJAAgAAs1AQF/IwBBEGsiAiQAIAIgARC/BSACIAIgABEAADYCDCACKAIMIQAgAhA4GiACQRBqJAAgAAsrAQF/IwBBEGsiAyQAIAMgASACIAARAwA2AgwgAygCDCEAIANBEGokACAACzcBAX8jAEEQayIDJAAgAyACEL8FIAMgASADIAARAwA2AgwgAygCDCEAIAMQOBogA0EQaiQAIAALKQEBfyMAQRBrIgIkACACIAEgABEAADYCDCACKAIMIQAgAkEQaiQAIAALLQEBfyMAQRBrIgQkACAEIAEgAiADIAARBAA2AgwgBCgCDCEAIARBEGokACAACx8AIAAgARDHBSIAIAIpAgg3AgggACACKQIANwIAQQELdwECfyABELgBIAJLBEAgASACEMcFIQMjAEEQayICJAAjAEEQayIBJAAgASACQQhqIgQ2AgwgAxDABSEDIAEoAgwgAzYCACABIAEoAgxBCGo2AgwgAUEQaiQAIABBqLICIAQQJzYCACACQRBqJAAPCyAAQQEQdxoLgAMBBH8gASAAELgBIgNLBEAjAEEgayIGJAACQCABIANrIgQgABAyKAIAIAAoAgRrQQR1TQRAIwBBEGsiBSQAIAUgACAEEMIFIgMoAgQhASADKAIIIQQDQCABIARGBEAgAxByIAVBEGokAAUgABAyIAEgAhCWAyADIAFBEGoiATYCBAwBCwsMAQsgABAyIQEgBkEIaiAAIAAQuAEgBGoQxgUgABC4ASABEMUFIQMjAEEQayIBJAAgASADKAIINgIAIAMoAgghBSABIANBCGo2AgggASAFIARBBHRqNgIEIAEoAgAhBANAIAEoAgQgBEcEQCADKAIQIAEoAgAgAhCWAyABIAEoAgBB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CwtB0JUEIAE2AgBBzJUEEDIaQcyVBCgCACEAQcyVBBC6ARogABAxCwsJACAAQQRqEEALCQAgABCyBhAxCwkAIAAQhgQQMQsMACAAEIcEGiAAEDELBwAgACgCCAsHACAAKAIECyUAIAEgAiADIAQgBSAGrSAHrUIghoQgCK0gCa1CIIaEIAARHgALIwAgASACIAMgBCAFrSAGrUIghoQgB60gCK1CIIaEIAARHwALGQAgASACIAMgBCAFrSAGrUIghoQgABEWAAsZACABIAIgA60gBK1CIIaEIAUgBiAAES0ACyIBAX4gASACrSADrUIghoQgBCAAERMAIgVCIIinJAEgBacLBgAgACQACwQAIwALBgBByPwBCwYAQbOQAgsGAEHf+QELGwAgAEUEQEEADwsgAEHw7wNBgPEDEKkBQQBHCxsAIAAgASgCCCAFEHgEQCABIAIgAyAEEKoECws4ACAAIAEoAgggBRB4BEAgASACIAMgBBCqBA8LIAAoAggiACABIAIgAyAEIAUgACgCACgCFBELAAugAgEHfyAAIAEoAgggBRB4BEAgASACIAMgBBCqBA8LIAEtADUhBiAAKAIMIQggAUEAOgA1IAEtADQhByABQQA6ADQgAEEQaiIMIAEgAiADIAQgBRCoBCAGIAEtADUiCnIhBiAHIAEtADQiC3IhBwJAIABBGGoiCSAMIAhBA3RqIghPDQADQCAHQQFxIQcgBkEBcSEGIAEtADYNAQJAIAsEQCABKAIYQQFGDQMgAC0ACEECcQ0BDAMLIApFDQAgAC0ACEEBcUUNAgsgAUEAOwE0IAkgASACIAMgBCAFEKgEIAEtADUiCiAGciEGIAEtADQiCyAHciEHIAlBCGoiCSAISQ0ACwsgASAGQf8BcUEARzoANSABIAdB/wFxQQBHOgA0C5IBACAAIAEoAgggBBB4BEAgASACIAMQqQQPCwJAIAAgASgCACAEEHhFDQACQCACIAEoAhBHBEAgASgCFCACRw0BCyADQQFHDQEgAUEBNgIgDwsgASACNgIUIAEgAzYCICABIAEoAihBAWo2AigCQCABKAIkQQFHDQAgASgCGEECRw0AIAFBAToANgsgAUEENgIsCwvzAQAgACABKAIIIAQQeARAIAEgAiADEKkEDwsCQCAAIAEoAgAgBBB4BEACQCACIAEoAhBHBEAg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AQwBCxB1AAsLEQAgACABIAIgAyAEQQAQ7gYLEQAgACABIAIgAyAEQQAQ7wYLEQAgACABIAIgAyAEQQEQ7gYLEQAgACABIAIgAyAEQQEQ7wYL0QEBAX8jAEEwayIFJAAgBSABNgIoAkAgAigCBEEBcUUEQCAAIAEgAiADIAQgACgCACgCGBEKACECDAELIAVBGGoiACACEE4gABDLAiEBIAAQRQJAIAQEQCAFQRhqIAEQwQEMAQsgBUEYaiABEMABCyAFIAVBGGoQrAE2AhADQCAFIAVBGGoQ+gE2AgggBUEQaiAFQQhqEH0EQCAFQShqIAVBEGoiACgCACwAABDNAyAAEPUCDAEFIAUoAighAiAFQRhqEDgaCwsLIAVBMGokACACC/UCAQF/IwBB4AJrIgAkACAAIAI2AtACIAAgATYC2AIgAEHQAWoQRCEGIABBEGoiAiADEE4gAhCRAUHguANB+rgDIABB4AFqEOUBIAIQRSAAQcABahBEIgMgAxBUED8gACADQQAQQSIBNgK8ASAAIAI2AgwgAEEANgIIA0ACQCAAQdgCaiAAQdACahCLAUUNACAAKAK8ASADEDUgAWpGBEAgAxA1IQIgAyADEDVBAXQQPyADIAMQVBA/IAAgAiADQQAQQSIBajYCvAELIABB2AJqEGhBECABIABBvAFqIABBCGpBACAGIABBEGogAEEMaiAAQeABahDIAg0AIABB2AJqEHoaDAELCyADIAAoArwBIAFrED8gAxBAIQIQXCEBIAAgBTYCACACIAEgABDCB0EBRwRAIARBBDYCAAsgAEHYAmogAEHQAmoQcwRAIAQgBCgCAEECcjYCAAsgACgC2AIhASADEDgaIAYQOBogAEHgAmokACABC9QDAQF+IwBBgANrIgAkACAAIAI2AvACIAAgATYC+AIgAEHYAWogAyAAQfABaiAAQewBaiAAQegBahC8BCAAQcgBahBEIgEgARBUED8gACABQQAQQSICNgLEASAAIABBIGo2AhwgAEEANgIYIABBAToAFyAAQcUAOgAWA0ACQCAAQfgCaiAAQfACahCLAUUNACAAKALEASABEDUgAmpGBEAgARA1IQMgASABEDVBAXQQPyABIAEQVBA/IAAgAyABQQAQQSICajYCxAELIABB+AJqEGggAEEXaiAAQRZqIAIgAEHEAWogACgC7AEgACgC6AEgAEHYAWogAEEgaiAAQRxqIABBGGogAEHwAWoQuwQNACAAQfgCahB6GgwBCwsCQCAAQdgBahA1RQ0AIAAtABdFDQAgACgCHCIDIABBIGprQZ8BSg0AIAAgA0EEajYCHCADIAAoAhg2AgALIAAgAiAAKALEASAEEMQHIAApAwAhBiAFIAApAwg3AwggBSAGNwMAIABB2AFqIABBIGogACgCHCAEEIoBIABB+AJqIABB8AJqEHMEQCAEIAQoAgBBAnI2AgALIAAoAvgCIQIgARA4GiAAQdgBahA4GiAAQYADaiQAIAILvQMAIwBB8AJrIgAkACAAIAI2AuACIAAgATYC6AIgAEHIAWogAyAAQeABaiAAQdwBaiAAQdgBahC8BCAAQbgBahBEIgEgARBUED8gACABQQAQQSICNgK0ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGA0ACQCAAQegCaiAAQeACahCLAUUNACAAKAK0ASABEDUgAmpGBEAgARA1IQMgASABEDVBAXQQPyABIAEQVBA/IAAgAyABQQAQQSICajYCtAELIABB6AJqEGggAEEHaiAAQQZqIAIgAEG0AWogACgC3AEgACgC2AEgAEHIAWogAEEQaiAAQQxqIABBCGogAEHgAWoQuwQNACAAQegCahB6GgwBCwsCQCAAQcgBahA1RQ0AIAAtAAdFDQAgACgCDCIDIABBEGprQZ8BSg0AIAAgA0EEajYCDCADIAAoAgg2AgALIAUgAiAAKAK0ASAEEMUHOQMAIABByAFqIABBEGogACgCDCAEEIoBIABB6AJqIABB4AJqEHMEQCAEIAQoAgBBAnI2AgALIAAoAugCIQIgARA4GiAAQcgBahA4GiAAQfACaiQAIAILvQMAIwBB8AJrIgAkACAAIAI2AuACIAAgATYC6AIgAEHIAWogAyAAQeABaiAAQdwBaiAAQdgBahC8BCAAQbgBahBEIgEgARBUED8gACABQQAQQSICNgK0ASAAIABBEGo2AgwgAEEANgIIIABBAToAByAAQcUAOgAGA0ACQCAAQegCaiAAQeACahCLAUUNACAAKAK0ASABEDUgAmpGBEAgARA1IQMgASABEDVBAXQQPyABIAEQVBA/IAAgAyABQQAQQSICajYCtAELIABB6AJqEGggAEEHaiAA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IS4gErIhMANAIAIgLkYNCUEBIQQgArMhMSAGIAJBAWsiCRBMISAgBiACEEwhFCAGIAJBAWoiBRBMIRcgCiAJEEwhFSAKIAIQTCEhIAogBRBMIRYgByAJEEwhGSAHIAIQTCEbIAcgBRBMIRgDQCAEICRGBEAgBSECDAIFAkAgISAEQQJ0IgJqIgkqAgAQbiA1XQ0AAkACQCAJKgIAIi8gICAEQQFrQQJ0IglqKgIAIjJeRQ0AIC8gAiAgaioCAF5FDQAgLyAgIARBAWpBAnQiDWoqAgBeRQ0AIC8gCSAUaioCAF5FDQAgLyACIBRqKgIAXkUNACAvIA0gFGoqAgBeRQ0AIC8gCSAXaioCAF5FDQAgLyACIBdqKgIAXkUNACAvIA0gF2oqAgBeRQ0AIC8gCSAVaioCAF5FDQAgLyACIBVqKgIAXkUNACAvIA0gFWoqAgBeRQ0AIC8gCSAhaioCAF5FDQAgLyANICFqKgIAXkUNACAvIAkgFmoqAgBeRQ0AIC8gAiAWaioCAF5FDQAgLyANIBZqKgIAXkUNACAvIAkgGWoqAgBeRQ0AIC8gAiAZaioCAF5FDQAgLyANIBlqKgIAXkUNACAvIAkgG2oqAgBeRQ0AIC8gAiAbaioCAF5FDQAgLyANIBtqKgIAXkUNACAvIAkgGGoqAgBeRQ0AIC8gAiAYaioCAF5FDQAgLyANIBhqKgIAXg0BCyAvIDJdRQ0BIC8gAiAgaioCAF1FDQEgLyAgIARBAWpBAnQiDWoqAgBdRQ0BIC8gCSAUaioCAF1FDQEgLyACIBRqKgIAXUUNASAvIA0gFGoqAgBdRQ0BIC8gCSAXaioCAF1FDQEgLyACIBdqKgIAXUUNASAvIA0gF2oqAgBdRQ0BIC8gCSAVaioCAF1FDQEgLyACIBVqKgIAXUUNASAvIA0gFWoqAgBdRQ0BIC8gCSAhaioCAF1FDQEgLyANICFqKgIAXUUNASAvIAkgFmoqAgBdRQ0BIC8gAiAWaioCAF1FDQEgLyANIBZqKgIAXUUNASAvIAkgGWoqAgBdRQ0BIC8gAiAZaioCAF1FDQEgLyANIBlqKgIAXUUNASAvIAkgG2oqAgBdRQ0BIC8gAiAbaioCAF1FDQEgLyANIBtqKgIAXUUNASAvIAkgGGoqAgBdRQ0BIC8gAiAYaioCAF1FDQEgLyANIBhqKgIA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AkEgaiADIA1BEGoQWiACQShqIAMgDUEYahBaIAJBMGogAyANQSBqEFogAkE4aiADIA1BKGoQWiAIIAJBDGoiAyACQQhqIgUgLyA2lBCFAiAGIAggAioCECACKgIUIAIoAgwgAigCCBBYOAIAIAYgCCACKgIYIAIqAhwgAigCDCACKAIIEFg4AgQgBiAIIAIqAiAgAioCJCACKAIMIAIoAggQWDgCCCAGIAggAioCKCACKgIsIAIoAgwgAigCCBBYOAIMIAYgCCACKgIwIAIqAjQgAigCDCACKAIIEFg4AhAgBiAIIAIqAjggAioCPCACKAIMIAIoAggQWDgCFCAIIAMgBSAvIDOUEIUCIAYgCCACKgJAIAIqAkQgAigCDCACKAIIEFg4AhggBiAIIAIqAkggAioCTCACKAIMIAIoAggQWDgCHCAGIAggAioCUCACKgJUIAIoAgwgAigCCBBYOAIgIAYgCCACKgJYIAIqAlwgAigCDCACKAIIEFg4AiQgBiAIIAIqAmAgAioCZCACKAIMIAIoAggQWDgCKCAGIAggAioCaCACKgJsIAIoAgwgAigCCBBYOAIsIAggAyAFIC8gNZQQhQIgBiAIIAIqAnAgAioCdCACKAIMIAIoAggQWDgCMCAGIAggAioCeCACKgJ8IAIoAgwgAigCCBBYOAI0IAYgCCACKgKAASACKgKEASACKAIMIAIoAggQWDgCOCAGIAggAioCiAEgAioCjAEgAigCDCACKAIIEFg4AjwgBiAIIAIqApABIAIqApQBIAIoAgwgAigCCBBYOAJAIAYgCCACKgKYASACKgKcASACKAIMIAIoAggQWDgCRCAIIAMgBSAvIDSUEIUCIAYgCCACKgKgASACKgKkASACKAIMIAIoAggQWDgCSCAGIAggAioCqAEgAioCrAEgAigCDCACKAIIEFg4AkwgBiAIIAIqArABIAIqArQBIAIoAgwgAigCCBBYOAJQIAYgCCACKgK4ASACKgK8ASACKAIMIAIoAggQWDgCVCAGIAggAioCwAEgAioCxAEgAigCDCACKAIIEFg4AlggBiAIIAIqAsgBIAIqAswBIAIoAgwgAigCCBBYOAJcIAggAyAFIC8gMpQQhQIgBiAIIAIqAtABIAIqAtQBIAIoAgwgAigCCBBYOAJgIAYgCCACKgLYASACKgLcASAC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ZyB3b3JrIG92ZXJmbG93LgoAIyMjIEZlYXR1cmUgY2FuZGlkYXRlcyBmb3IgdHJhY2tpbmcgYXJlIG92ZXJmbG93LgoAYXJnbENhbWVyYUZydXN0dW1SSCgpOiBhclBhcmFtRGVjb21wTWF0KCkgaW5kaWNhdGVkIHBhcmFtZXRlciBlcnJvci4KAGFyVmlkZW9PcGVuOiBFcnJvciwgdmlkZW8gZGV2aWNlIGFscmVhZHkgb3Blbi4KAGtwbURlbGV0ZVJlZkRhdGFTZXQoKTogTlVMTCByZWZEYXRhU2V0UHRyL3JlZkltYWdlLgoAU3RhcnQgdHJhY2tpbmdfdGhyZWFkICMlZC4KAE91dCBvZiBtZW1vcnkhIQoARGF0YSBudW0gZXJyb3IhIQoAdwBJRCBhbHJlYWR5IGV4aXN0cwAlcyVzACVzLiVzAHZlY3RvcgAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvb3JpZW50YXRpb25fYXNzaWdubWVudC5jcHAAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZnJhbWV3b3JrL3RpbWVycy5jcHAAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZGV0ZWN0b3JzL2hhcnJpcy5jcHAAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZGV0ZWN0b3JzL0RvR19zY2FsZV9pbnZhcmlhbnRfZGV0ZWN0b3IuY3BwAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL21hdGNoZXJzL2hvdWdoX3NpbWlsYXJpdHlfdm90aW5nLmNwcAAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9mcmFtZXdvcmsvaW1hZ2UuY3BwAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9nYXVzc2lhbl9zY2FsZV9zcGFjZV9weXJhbWlkLmNwcAAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvcHlyYW1pZC5jcHAAaW5mbwBFcnJvcjogaWNwR2V0Sl9VX1hjAHdiAHJiAEFSX1BJWEVMX0ZPUk1BVF9SR0IAUGF0dGVybiBleHRyYWN0aW9uIGZhaWxlZC4AQXNzZXJ0aW9uIGBweXJhbWlkYCBmYWlsZWQgaW4gAFRyYWNraW5nIHRocmVhZCA9ICVkCgBTSVpFID0gJWQsICVkCgBFcnJvciAyOiBpY3BHZXRJbml0WHcyWGMKAD8/PyAyCgBFcnJvcjogdW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0LgoAYXJWaWRlb09wZW5Bc3luYzogRXJyb3IsIHZpZGVvIGRldmljZSBhbHJlYWR5IG9wZW4uCgBVbmtub3duIG9yIHVuc3VwcG9ydGVkIGxhYmVsaW5nIHRocmVzaG9sZCBtb2RlIHJlcXVlc3RlZC4gU2V0IHRvIG1hbnVhbC4KAGtwbURlbGV0ZVJlZkRhdGFTZXQoKTogMCB4c2l6ZS95c2l6ZS9kcGkuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gb3BlbiBjYW1lcmEgcGFyYW1ldGVycyBmaWxlICIlcyIgZm9yIHdyaXRpbmcuCgBFcnJvcjogTlVMTCBwYXR0SGFuZGxlLgoARW5kIHRyYWNraW5nX3RocmVhZCAjJWQuCgBFcnJvcjogdW5hYmxlIHRvIG9wZW4gbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJy4KAE91dCBvZiBtZW1vcnkhIQoAcgAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9tYXRjaGVycy9mcmVhay5oAHdhcm5pbmcAICUxMGcAQnVpbGQgUHlyYW1pZAAlNGQAd2IAcmIAQVJfUElYRUxfRk9STUFUX0JHUgBNQU5VQUwAQVJfUElYRUxfRk9STUFUX1JHQgBHZW5lcmljIGVycm9yIGR1cmluZyBtYXRjaGluZyBwaGFzZS4AIGxpbmUgACVzJXMKAEZpbGUgb3BlbiBlcnJvci4gJXMKAERpc3RvcnRpb24gZmFjdG9yOiBrMT0lMS4xMGYsIGsyPSUxLjEwZiwgcDE9JTEuMTBmLCBwMj0lMS4xMGYKAEVycm9yOiBtYWxsb2MKAEVycm9yIDM6IGljcEdldEluaXRYdzJYYwoARXJyb3IgaWNwR2V0Sl9VX1MKAD09PT09PSAlcyA9PT09PT09PQoAPz8/IDMKAEVycm9yOiBjYW4ndCBsb2FkIHBhdHRlcm4gZnJvbSBOVUxMIGJ1ZmZlci4KAGtwbVNldFJlZkRhdGFTZXQoKTogTlVMTCBrcG1IYW5kbGUvZmlsZW5hbWUuCgBFcnJvciBzYXZpbmcgZmVhdHVyZSBtYXA6IGVycm9yIHdyaXRpbmcgZGF0YS4KAE91dCBvZiBtZW1vcnkhIQoAZXJyb3IARnJlYWsgZmVhdHVyZXMgLSAlZAByYgBBUl9QSVhFTF9GT1JNQVRfQkdSAEFVVE9fTUVESUFOAEFSX1BJWEVMX0ZPUk1BVF9SR0JBAEluc3VmZmljaWVudCBjb250cmFzdCBkdXJpbmcgbWF0Y2hpbmcuACU3LjVmIAAgbGluZSAARXJyb3Igb3BlbmluZyBmaWxlICclcyc6IAAgICAgICAgICAgICAgICAgICBmeD0lZiwgZnk9JWYsIHgwPSVmLCB5MD0lZiwgcz0lZgoARXJyb3IgNDogaWNwR2V0SW5pdFh3MlhjCgBFcnJvciBpY3BHZXRVX2Zyb21fWF9ieV9NYXRYMlUKAEVycm9yIGFsbG9jYXRpbmcgbWVtb3J5LgoARXJyb3I6IG91dCBvZiBtZW1vcnkuCgBFcnJvcjogVW5hYmxlIHRvIG9wZW4gZmlsZSAnJXMnIGZvciB3cml0aW5nLgoARXJyb3I6IHVuYWJsZSB0byBvcGVuIGZpbGUgJyVzJXMnIGZvciByZWFkaW5nLgoAT3V0IG9mIG1lbW9yeSEhCgBTdGVwIHNpemUgbXVzdCBiZSBlcXVhbCB0byB3aWR0aCBmb3Igbm93AEV4dHJhY3QgRmVhdHVyZXMAJXMAV2lkdGggY2Fubm90IGJlIHplcm8AU291cmNlIHdpZHRoIG11c3QgYmUgZXZlbgBJbWFnZSBpcyB0b28gc21hbGwAeCBvdXQgb2YgcmFuZ2UAQ2xvY2sgaGFzIG5vdCBiZWVuIHN0YXJ0ZWQAUHlyYW1pZCBpcyBub3QgYWxsb2NhdGVkACVkAHJiAEFVVE9fT1RTVQBBUl9QSVhFTF9GT1JNQVRfQkdSQQBBUl9QSVhFTF9GT1JNQVRfUkdCQQB3cCBtdXN0IGJlIGF0IGxlYXN0IDEAQmFyY29kZSBtYXRjaGluZyBjb3VsZCBub3QgZmluZCBjb3JyZWN0IGJhcmNvZGUgbG9jYXRvciBwYXR0ZXJuLgBbJXNdIAA6IAAlcyVzCgBEaXN0b3J0aW9uIGZhY3RvciA9ICVmICVmICVmICVmICVmICVmCgBFcnJvciA1OiBpY3BHZXRJbml0WHcyWGMKAEVycm9yIGljcEdldFhjX2Zyb21fWHdfYnlfTWF0WHcyWGMKAEVycm9yIHJlYWRpbmcgaW1hZ2VTZXQuCgBFcnJvciB3aGlsZSBhZGRpbmcgcmVmZXJlbmNlIGRhdGEgc2V0OiBrcG1HZW5SZWZEYXRhU2V0KCkgZmFpbGVkLgoARXJyb3Igb3BlbmluZyAnJXMnLgoAQ2FuJ3Qgb3BlbiBKUEVHIGZpbGUgJyVzJwoAT3V0IG9mIG1lbW9yeSEhCgBQYXR0ZXJuIERhdGEgcmVhZCBlcnJvciEhCgBSZWFkIGVycm9yISEKAFslc10gWyVzXSBbJXNdIDogRm91bmQgJWQgZmVhdHVyZXMAJWYAd2IAQVJfUElYRUxfRk9STUFUX0FCR1IAUHlyYW1pZCBpcyBOVUxMAEFVVE9fQURBUFRJVkUAQVJfUElYRUxfRk9STUFUX0JHUkEAQmFyY29kZSBtYXRjaGluZyBlcnJvciBkZXRlY3Rpb24vY29ycmVjdGlvbiBmb3VuZCB1bnJlY292ZXJhYmxlIGVycm9yLgBFcnJvciBjcmVhdGluZyBmdWxsIGZpbGUgcGF0aCBmcm9tICclcycgYW5kICclcycAQXNzZXJ0aW9uIGB4IDwgbU1heFhgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBoZWlnaHQgPj0gNWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGhlaWdodCA+PSAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaGVpZ2h0ID4gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYG1JbWFnZXMuc2l6ZSgpID4gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYHggPj0gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYG1TdG9wVGltZSA+PSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0ICE9IDBgIGZhaWxlZCBpbiAAJXMlcwoARGlzdG9ydGlvbiBmYWN0b3IgPSAlZiAlZiAlZiAlZiAlZgoARXJyb3IgPSAlZgoARXJyb3IgNjogaWNwR2V0SW5pdFh3MlhjCgAgICAgICAgICBJbWFnZVNpemUgPSAlN2RbcGl4ZWxdCgA9PT09PT09PT0gJWQgPT09PT09PT09PT0KAEltYWdlc2V0IGNvbnRhaW5zICVkIGltYWdlcy4KAEVycm9yOiBVbmFibGUgdG8gb3BlbiBmaWxlICclcycgZm9yIHJlYWRpbmcuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gb3BlbiBjYW1lcmEgcGFyYW1ldGVycyBmaWxlICIlcyIgZm9yIHJlYWRpbmcuCgBFcnJvciBwcm9jZXNzaW5nIG11bHRpbWFya2VyIGNvbmZpZyBmaWxlICclcyc6IEZpcnN0IGxpbmUgbXVzdCBiZSBudW1iZXIgb2YgbWFya2VyIGNvbmZpZ3MgdG8gcmVhZC4KAEVycm9yIHJlYWRpbmcgcGF0dGVybiBmaWxlICclcycuCgBIZWlnaHQgY2Fubm90IGJlIHplcm8AJWYgJWYgJWYgJWYAeCBtdXN0IGJlIHBvc2l0aXZlAExhcGxhY2lhbiBweXJhbWlkIGhhcyBub3QgYmVlbiBhbGxvY2F0ZWQAQ2xvY2sgaGFzIG5vdCBiZWVuIHN0b3BwZWQAQVJfUElYRUxfRk9STUFUX0FCR1IAQVJfUElYRUxfRk9STUFUX01PTk8ARGVzdGluYXRpb24gaXMgTlVMTABBVVRPX0JSQUNLRVRJTkcAaHAgbXVzdCBiZSBhdCBsZWFzdCAxAEVycm9yICglZCk6IHVuYWJsZSB0byBkZXRlcm1pbmUgZmlsZSBsZW5ndGguAE1hdGNoaW5nIGNvbmZpZGVuY2UgY3V0b2ZmIHZhbHVlIG5vdCByZWFjaGVkLgBBc3NlcnRpb24gYHkgPj0gbU1pbllgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbWFnZS50eXBlKCkgPT0gSU1BR0VfVUlOVDhgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBzdG9yZS5zaXplKCkgPT0gcG9pbnRzLnNpemUoKWAgZmFpbGVkIGluIAAgSU5GTyAgACVzJXMKAERpc3RvcnRpb24gZmFjdG9yID0gJWYgJWYgJWYgJWYKAEVycm9yIDc6IGljcEdldEluaXRYdzJYYwoARXh0cmFjdGVkIGZlYXR1cmVzID0gJTdkW3BpeGVsXQoARXJyb3IgaWNwMkdldFRTCgBGYWxsaW5nIGJhY2sgdG8gcmVhZGluZyAnJXMlcycgaW4gQVJUb29sS2l0IHY0LnggZm9ybWF0LgoARXJyb3IgaW4gb3BlbmluZyAnJXMnIGluIHppcGZpbGUuCgBFcnJvciByZWFkaW5nIEpQRUcgZmlsZS4KAEVycm9yIHdoaWxlIGFkZGluZyByZWZlcmVuY2UgZGF0YSBzZXQ6IGtwbU1lcmdlUmVmRGF0YVNldCgpIGZhaWxlZC4KAEVycm9yIHNhdmluZyBmZWF0dXJlIHNldDogZXJyb3Igd3JpdGluZyBkYXRhLgoAT3V0IG9mIG1lbW9yeSEhCgAAAAAAAEAOAAAEEAAAShIAAF0UAABpGAAAQnVpbGQgSW5kZXgAWyVzXSBbJXNdIFslc10gOiAlczogJWYgbXMASW1hZ2UgbXVzdCBiZSBncmF5c2NhbGUAeSBvdXQgb2YgcmFuZ2UARmVhdHVyZSBzdG9yZSBoYXMgbm90IGJlZW4gYWxsb2NhdGVkACVkACVsbHUlYwB3YgBBUl9QSVhFTF9GT1JNQVRfTU9OTwBBUl9QSVhFTF9GT1JNQVRfQVJHQgBNYXhpbXVtIGFsbG93YWJsZSBwb3NlIGVycm9yIGV4Y2VlZGVkLgBBc3NlcnRpb24gYHN0ZXAgPj0gd2lkdGhgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpKzErY2h1bmtfc2l6ZSA8IHdpZHRoYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgcHlyYW1pZC0+bnVtT2N0YXZlcygpID4gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYHNyYyAhPSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeCA8IG1HcmFkaWVudHNbb2N0YXZlKm1OdW1TY2FsZXNQZXJPY3RhdmUrc2NhbGVdLndpZHRoKClgIGZhaWxlZCBpbiAARXJyb3IgaW4gb3BlbmluZyAnJXMnIGZvciByZWFkaW5nCgAgRmlsdGVyZWQgZmVhdHVyZXMgPSAlN2RbcGl4ZWxdCgBMYWJlbGluZyB0aHJlc2hvbGQgbW9kZSBzZXQgdG8gJXMuCgBFcnJvciByZWFkaW5nIEpQRUcgZmlsZSBoZWFkZXIuCgBFcnJvcjogc3VwcGxpZWQgZmlsZSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgYW4gQVJUb29sS2l0IGNhbWVyYSBwYXJhbWV0ZXIgZmlsZS4KAGtwbURlbGV0ZVJlZkRhdGFTZXQoKTogTlVMTCByZWZEYXRhU2V0UHRyMS9yZWZEYXRhU2V0UHRyMi4KAENhbid0IHJlYWQgSlBFRyBmaWxlICclcycKAEFSX1BJWEVMX0ZPUk1BVF8ydnV5AFB5cmFtaWQgZG9lcyBub3QgY29udGFpbiBhbnkgbGV2ZWxzAFN0ZXAgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdGhlIHdpZHRoAHggbXVzdCBiZSBsZXNzIHRoYW4gdGhlIGltYWdlIHdpZHRoAEV4dGVuZGluZyBiZXlvbmQgdGhlIHdpZHRoIG9mIHRoZSBpbWFnZQBTb3VyY2UgaXMgTlVMTABBUl9QSVhFTF9GT1JNQVRfQVJHQgBFcnJvciAoJWQpOiB1bmFibGUgdG8gcmVhZCBmcm9tIGZpbGUuAE11bHRpLW1hcmtlciBwb3NlIGVycm9yIHZhbHVlIGV4Y2VlZGVkLgANJTRkLyU0ZC4AQXNzZXJ0aW9uIGBweXJhbWlkYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeSA8IG1NYXhZYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW1hZ2UuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbnVtX3BvaW50cyA9PSBwb2ludHMuc2l6ZSgpYCBmYWlsZWQgaW4gACU3LjVmIAAgSU5GTyAgAGtwbVNldFJlZkRhdGFTZXQoKTogTlVMTCBrcG1IYW5kbGUvcmVmRGF0YVNldC4KAGtwbURlbGV0ZVJlZkRhdGFTZXQoKTogTlVMTCByZWZEYXRhU2V0UHRyLgoARXJyb3I6IHVuYWJsZSB0byBvcGVuIGZpbGUgJyVzJyBmb3Igd3JpdGluZy4KAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJzogcGF0dGVybiAnJXMnIHNwZWNpZmllZCBpbiBtdWx0aW1hcmtlciBjb25maWd1cmF0aW9uIHdoaWxlIGluIGJhcmNvZGUtb25seSBtb2RlLgoARXJyb3I6IFVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdCAoJWQpIHJlcXVlc3RlZC4KAEVycm9yIGluIHJlYWRpbmcgJyVzJy4KAAojIyMgU3VyZmFjZSBOby4lZCAjIyMKAEFSX1BJWEVMX0ZPUk1BVF8ydnV5AEFSX1BJWEVMX0ZPUk1BVF95dXZzACVzAEltYWdlIG11c3QgaGF2ZSAxIGNoYW5uZWwAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvdmlzdWFsX2RhdGFiYXNlLmgAU2hvdWxkIGJlIHNhbWUgc2l6ZQBSZWplY3RlZCBmcmVxdWVudGx5IG1pc3JlY29nbmlzZWQgbWF0cml4IG1hcmtlci4AQXNzZXJ0aW9uIGBidWNrZXRbMF0uZmlyc3QgPj0gYnVja2V0W25dLmZpcnN0YCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgYW5nbGUgPiAtUElgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBjaGFubmVscyA+IDBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBzcmNfd2lkdGggPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeSA+PSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHluYW1pY19jYXN0PGNvbnN0IEJpbm9taWFsUHlyYW1pZDMyZio+KHB5cmFtaWQpYCBmYWlsZWQgaW4gAGtwbVNhdmVSZWZEYXRhU2V0KCk6IE5VTEwgZmlsZW5hbWUvcmVmRGF0YVNldC4KAGtwbVNldFJlZkRhdGFTZXQoKTogcmVmRGF0YVNldC4KAEVycm9yOiBzdXBwbGllZCBidWZmZXIgZG9lcyBub3QgYXBwZWFyIHRvIGJlIEFSVG9vbEtpdCBjYW1lcmEgcGFyYW1ldGVycy4KAEVycm9yIHByb2Nlc3NpbmcgbXVsdGltYXJrZXIgY29uZmlnIGZpbGUgJyVzJzogVW5hYmxlIHRvIGRldGVybWluZSBkaXJlY3RvcnkgbmFtZS4KAEVycm9yIGluIHdyaXRpbmcgJyVzJyBpbiB0aGUgemlwZmlsZS4KAEVycm9yIHNhdmluZyBpbWFnZSBzZXQ6IGVycm9yIHdyaXRpbmcgZGF0YS4KAEFSX1BJWEVMX0ZPUk1BVF95dXZzAE51bWJlciBvZiBjaGFubmVscyBjYW5ub3QgYmUgemVybwB5IG11c3QgYmUgcG9zaXRpdmUAV2lkdGggbXVzdCBiZSBwb3NpdGl2ZQBhbmdsZSBvdXQgb2YgcmFuZ2UAT25seSBiaW5vbWlhbCBweXJhbWlkIGlzIHN1cHBvcnRlZABudGhfZWxlbWVudCBmYWlsZWQAQVJfUElYRUxfRk9STUFUX1JHQl81NjUAQXNzZXJ0aW9uIGBtUHlyYW1pZC5zaXplKCkgPT0gbU51bU9jdGF2ZXMqbU51bVNjYWxlc1Blck9jdGF2ZWAgZmFpbGVkIGluIAAgbGluZSAARmllbGQtb2YtdmlldyB2ZXJ0aWNhbCA9ICUuMWYsIGhvcml6b250YWwgPSAlLjFmIGRlZ3JlZXMsIGFzcGVjdCByYXRpbyA9ICUuM2YKAE1heCBmZWF0dXJlID0gJWQKACAgUmVhZCBJbWFnZVNldC4KAEVycm9yIHNhdmluZyBLUE0gZGF0YTogdW5hYmxlIHRvIG9wZW4gZmlsZSAnJXMlcyVzJyBmb3Igd3JpdGluZy4KAEVycm9yICglZCk6IHVuYWJsZSB0byBvcGVuIGV4dGVybmFsIHBhcmFtZXRlcnMgZmlsZSAiJXMiIGZvciB3cml0aW5nLgoARXJyb3IgaW4gY2xvc2luZyAlcyBpbiB0aGUgemlwZmlsZS4KAEF1dG8gdGhyZXNob2xkIChicmFja2V0KSBtYXJrZXIgY291bnRzIC1bJTNkOiAlM2RdIFslM2Q6ICUzZF0gWyUzZDogJTNkXSsuCgBFcnJvciBwcm9jZXNzaW5nIG11bHRpbWFya2VyIGNvbmZpZyBmaWxlICclcyc6IFVuYWJsZSB0byBsb2FkIHBhdHRlcm4gJyVzJy4KAE91dCBvZiBtZW1vcnkhIQoAUHlyYW1pZCBoYXMgbm90IGJlZW4gYWxsb2NhdGVkIHlldAAlbGYAQVJfUElYRUxfRk9STUFUX1JHQl81NjUAQVJfUElYRUxfRk9STUFUX1JHQkFfNTU1MQAuAEFzc2VydGlvbiBgcFswXSA+IHBtMVstMV1gIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBhbmdsZSA8PSBQSWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGQudHlwZSgpID09IElNQUdFX0YzMmAgZmFpbGVkIGluIABBc3NlcnRpb24gYHNyY19oZWlnaHQgPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgb2N0YXZlID49IDBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB5IDwgbUdyYWRpZW50c1tvY3RhdmUqbU51bVNjYWxlc1Blck9jdGF2ZStzY2FsZV0uaGVpZ2h0KClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBtRGF0YS5nZXQoKWAgZmFpbGVkIGluIAA6IAAlM2Q6ICglM2QsJTNkKSA6ICVmIG1pbj0lZiBtYXg9JWYsIHNkPSVmCgBwb2ludHMtJWQKAEVycm9yICglZCk6IHVuYWJsZSB0byBvcGVuIGV4dGVybmFsIHBhcmFtZXRlcnMgZmlsZSAiJXMiIGZvciByZWFkaW5nLgoAQXV0byB0aHJlc2hvbGQgKGJyYWNrZXQpIGFkanVzdGVkIHRocmVzaG9sZCB0byAlZC4KAEVycm9yIG9wZW5pbmcgZmlsZSAnJXMuaXNldCcuCgBFcnJvciBpbiBjbG9zaW5nICclcycuCgB5IG11c3QgYmUgbGVzcyB0aGFuIHRoZSBpbWFnZSBoZWlnaHQAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZGV0ZWN0b3JzL2dhdXNzaWFuX3NjYWxlX3NwYWNlX3B5cmFtaWQuaABIZWlnaHQgbXVzdCBiZSBwb3NpdGl2ZQBPbmx5IEYzMiBpbWFnZXMgc3VwcG9ydGVkAFNob3VsZCBiZSBtYXhpbWEARGF0YSBwb2ludGVyIGlzIE5VTEwAUHlyYW1pZCBpcyBOVUxMAEFSX1BJWEVMX0ZPUk1BVF9SR0JBXzQ0NDQAQVJfUElYRUxfRk9STUFUX1JHQkFfNTU1MQBBc3NlcnRpb24gYHNjYWxlID49IG1NaW5TY2FsZWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGltYWdlLndpZHRoKCkgPT0gbVB5cmFtaWRbMF0ud2lkdGgoKWAgZmFpbGVkIGluIABbJSAuM2YgJSAuM2YgJSAuM2ZdIFslIDYuMWZdCgBFcnJvciBwcm9jZXNzaW5nIG11bHRpbWFya2VyIGNvbmZpZyBmaWxlICclcycsIG1hcmtlciBkZWZpbml0aW9uICUzZDogRmlyc3QgbGluZSBtdXN0IGJlIHBhdHRlcm4gd2lkdGguCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gb3BlbiBvcHRpY2FsIHBhcmFtZXRlcnMgZmlsZSAiJXMiIGZvciB3cml0aW5nLgoAa3BtU2V0UmVmRGF0YVNldEZpbGUoKTogTlVMTCBrcG1IYW5kbGUvZmlsZW5hbWUuCgAgICAgZW5kLgoAQXV0byB0aHJlc2hvbGQgKCVzKSBhZGp1c3RlZCB0aHJlc2hvbGQgdG8gJWQuCgAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KAEFSX1BJWEVMX0ZPUk1BVF80MjB2AG1lZGlhbgAlbGYgJWxmICVsZiAlbGYAT2N0YXZlIG11c3QgYmUgcG9zaXRpdmUAc2NhbGUgb3V0IG9mIHJhbmdlAEltYWdlIG9mIHdyb25nIHNpemUgZm9yIHB5cmFtaWQAVW5hYmxlIHRvIGFsbG9jYXRlIGltYWdlIGRhdGEAQVJfUElYRUxfRk9STUFUX1JHQkFfNDQ0NABBc3NlcnRpb24gYGRldGVjdG9yYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgcFswXSA+IHBtMVswXWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGltMS50eXBlKCkgPT0gSU1BR0VfRjMyYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZy5jaGFubmVscygpID09IDJgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBzcmNfc3RlcCA+IDBgIGZhaWxlZCBpbiAAJTNkLCAlM2Q6IG1heF9zaW0gPSAlZgoAICBSZWFkIEZlYXR1cmVTZXQuCgBDYW5ub3QgZmluZCB0aGUgcGFnZSBmb3Igc2tpcHBpbmcuCgBFcnJvciAoJWQpOiB1bmFibGUgdG8gb3BlbiBvcHRpY2FsIHBhcmFtZXRlcnMgZmlsZSAiJXMiIGZvciByZWFkaW5nLgoARXJyb3Igc2F2aW5nIEtQTSBkYXRhOiBlcnJvciB3cml0aW5nIGRhdGEuCgBBUl9QSVhFTF9GT1JNQVRfNDIwdgBPdHN1AEFSX1BJWEVMX0ZPUk1BVF80MjBmACVmICVmAFN0ZXAgbXVzdCBiZSBwb3NpdGl2ZQBJbnZhbGlkIGltYWdlIHR5cGUARGV0ZWN0b3IgaXMgTlVMTABOdW1iZXIgb2YgY2hhbm5lbHMgc2hvdWxkIGJlIDIAQXNzZXJ0aW9uIGBvY3RhdmUgPCBtTnVtT2N0YXZlc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYHNjYWxlIDwgbU1heFNj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AAAAWAAAAD0AAABuAAAAGgAAACQAAABqAAAAXQAAADQAAABLAAAAKQAAAEgAAABVAAAAUAAAAGYAAAA8AAAAfAAAAGkAAAAZAAAAKAAAADMAAABlAAAAVAAAABgAAAB7AAAAUwAAADIAAAAxAAAAegAAAHgAAAB5AAAAT2N0YXZlIG11c3QgYmUgbGVzcyB0aGFuIG51bWJlciBvZiBvY3RhdmVzAEFSX1BJWEVMX0ZPUk1BVF80MjBmAEFSX1BJWEVMX0ZPUk1BVF9OVjIxAEFzc2VydGlvbiBgcFswXSA+IHBbLTFdYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0LnR5cGUoKSA9PSBJTUFHRV9GMzJgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBkLmNoYW5uZWxzKCkgPT0gMWAgZmFpbGVkIGluIABBc3NlcnRpb24gYG1heF9oZWlnaHQgPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0X3dpZHRoID4gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYHNpemUgPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKCkuc2l6ZSgpID4gMGAgZmFpbGVkIGluIABQYWdlWyVkXSAgcHJlOiUzZCwgYWZ0OiUzZCwgZXJyb3IgPSAlZgoAJTNkLCAlM2Q6IG1heF9zaW0gPSAlZiwgKG1heCxtaW4pID0gJWYsICVmLCBzZCA9ICVmCgAgIFJlYWQgTWFya2VyU2V0LgoARXJyb3IgcHJvY2Vzc2luZyBtdWx0aW1hcmtlciBjb25maWcgZmlsZSAnJXMnLCBtYXJrZXIgZGVmaW5pdGlvbiAlM2Q6IExpbmVzIDIgLSA0IG11c3QgYmUgbWFya2VyIHRyYW5zZm9ybS4KAEVycm9yIGxvYWRpbmcgS1BNIGRhdGE6IHVuYWJsZSB0byBvcGVuIGZpbGUgJyVzJXMlcycgZm9yIHJlYWRpbmcuCgBQeXJhbWlkIGlzIGVtcHR5AERlc3RpbmF0aW9uIGltYWdlIHNob3VsZCBiZSBhIGZsb2F0AG1yawBzaXplIG11c3QgYmUgcG9zaXRpdmUATWF4aW11bSBiaW4gc2hvdWxkIGJlIHBvc2l0aXZlAE9ubHkgc2luZ2xlIGNoYW5uZWwgaW1hZ2VzIHN1cHBvcnRlZABBUl9QSVhFTF9GT1JNQVRfTlYyMQBBc3NlcnRpb24gYHBbMF0gPiBwWzFdYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0X3N0ZXAgPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgc2NhbGUgPj0gMGAgZmFpbGVkIGluIABKUEVHIGZpbGUgaGFzIHVuc3VwcG9ydGVkICVkLWNvbXBvbmVudCBwaXhlbHMKAEVycm9yIGxvYWRpbmcgS1BNIGRhdGE6IGVycm9yIHJlYWRpbmcgZGF0YS4KAGFyVXRpbEdldFBpeGVsRm9ybWF0TmFtZTogRXJyb3IsIHVucmVjb2duaXNlZCBwaXhlbCBmb3JtYXQgKCVkKS4KAFNjYWxlIG11c3QgYmUgcG9zaXRpdmUAVW5rbm93biBpbWFnZSB0eXBlAEFzc2VydGlvbiBgcFswXSA+IHBwMVstMV1gIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBoaXN0ICE9IE5VTExgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoc3JjX3dpZHRoJTIpID09IDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTEuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbVJlZkltYWdlV2lkdGggPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKClbMF0ud2lkdGgoKSA9PSBkZXRlY3Rvci0+d2lkdGgoKWAgZmFpbGVkIGluIABPdXQgb2YgbWVtb3J5LgoAa3BtQ2hhbmdlUGFnZU5vT2ZSZWZEYXRhU2V0KCk6IE5VTEwgcmVmRGF0YVNldC4KAGFyVmlkZW9VdGlsR2V0UGl4ZWxGb3JtYXROYW1lOiBFcnJvciwgdW5yZWNvZ25pc2VkIHBpeGVsIGZvcm1hdCAoJWQpLgoARXJyb3Igb3BlbmluZyBmaWxlICclcy5tcmsnLgoAJSUlMDJ4AHZlY3RvcgBQeXJhbWlkIGFuZCBkZXRlY3RvciBzaXplIG1pc21hdGNoAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9vcmllbnRhdGlvbl9hc3NpZ25tZW50LmgAJWYgJWYgJWYgJWYAd2lkdGggbXVzdCBiZSBwb3NpdGl2ZQBVbnN1cHBvcnRlZCBpbWFnZSB0eXBlAFNvdXJjZSB3aWR0aCBtdXN0IGJlIG9kZABBc3NlcnRpb24gYHNjYWxlIDwgbU51bVNjYWxlc1Blck9jdGF2ZWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHBbMF0gPiBwcDFbMF1gIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTIuY2hhbm5lbHMoKSA9PSAxYCBmYWlsZWQgaW4gAC9wcm9jL3NlbGYvZXhlAFNjYWxlIG11c3QgYmUgbGVzcyB0aGFuIG51bWJlciBvZiBzY2FsZSBwZXIgb2N0YXZlAEhpc3RvZ3JhbSBwb2ludGVyIGlzIE5VTEwAQXNzZXJ0aW9uIGBwWzBdID4gcHAxWzFdYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKGNodW5rX3NpemUlMik9PTBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBtUmVmSW1hZ2VIZWlnaHQgPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgcHlyYW1pZC0+aW1hZ2VzKClbMF0uaGVpZ2h0KCkgPT0gZGV0ZWN0b3ItPmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZC53aWR0aCgpID09IGltMi53aWR0aCgpYCBmYWlsZWQgaW4gAFRyYW5zZm9ybWF0aW9uIG1hdHJpeCByZWFkIGVycm9yISEKAHZlY3RvcgBJbWFnZXMgbXVzdCBoYXZlIHRoZSBzYW1lIHdpZHRoAGpwZwBVbnRlc3RlZCBiZWhhdmlvciBmb3Igb2RkIGNodW5rIHNpemUAaGVpZ2h0IG11c3QgYmUgcG9zaXRpdmUAT2N0YXZlIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYChmYmluKzAuNWYpID4gMCAmJiAoZmJpbi0wLjVmKSA8IG51bV9iaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgYXNzaWdubWVudC5zaXplKCkgPT0gbnVtX2luZGljZXNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAhaXNpbmYodVswXSlgIGZhaWxlZCBpbiAAJXMlcwoAV2lkdGggaXMgemVybwAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9tYXRjaGVycy9ob3VnaF9zaW1pbGFyaXR5X3ZvdGluZy5oAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL21hdGNoZXJzL2JpbmFyeV9oaWVyYXJjaGljYWxfY2x1c3RlcmluZy5oAERlY2ltYWwgYmluIHBvc2l0aW9uIGluZGV4IG91dCBvZiByYW5nZQBTY2FsZSBvdXQgb2YgcmFuZ2UASU5GAEFzc2VydGlvbiBgZC5oZWlnaHQoKSA9PSBpbTIuaGVpZ2h0KClgIGZhaWxlZCBpbiAASW1hZ2VzIG11c3QgaGF2ZSB0aGUgc2FtZSBoZWlnaHQALy4uL3NoYXJlLyVzAEhlaWdodCBpcyB6ZXJvAEFzc2lnbm1lbnQgc2l6ZSB3cm9uZwBBc3NlcnRpb24gYChpbnQpc3RkOjpmbG9vcih4KSA9PSAoaW50KXhgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbmRleCA+PSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbWFnbml0dWRlID49IDBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAhaXNpbmYodVsxXSlgIGZhaWxlZCBpbiAAU3RlcCBpcyB6ZXJvAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9pbnRlcnBvbGF0ZS5oAE1hZ25pdHVkZSBjYW5ub3QgYmUgbmVnYXRpdmUAaW5kZXggb3V0IG9mIHJhbmdlAEhPTUUAQXNzZXJ0aW9uIGBhc3NpZ25tZW50W2ldICE9IC0xYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW0xLndpZHRoKCkgPT0gaW0yLndpZHRoKClgIGZhaWxlZCBpbiAAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvZGV0ZWN0b3JzL2hhcnJpcy1pbmxpbmUuaAAvcHJvYy9zZWxmL2NtZGxpbmUAZmxvb3IoKSBhbmQgY2FzdCBub3QgdGhlIHNhbWUAQXNzaWdubWVudCBpcyBpbnZhbGlkAEFzc2VydGlvbiBgbnVtX2JpbnMgPj0gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpblggPj0gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYChpPj4xKSA8IHN0ZDo6Y2VpbCgoc3JjX2hlaWdodC0xKS8yLmYpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW0xLmhlaWdodCgpID09IGltMi5oZWlnaHQoKWAgZmFpbGVkIGluIABJbmRleCBpcyBvdXQgb2YgYm91bmRzAE51bWJlciBiaW5zIG11c3QgYmUgcG9zaXRpdmUAYmluWCBvdXQgb2YgcmFuZ2UAT3V0IG9mIHJhbmdlAERvRyBQeXJhbWlkAHJiAEFzc2VydGlvbiBgKGludClzdGQ6OmZsb29yKHkpID09IChpbnQpeWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGFzc2lnbm1lbnRbaV0gPCBudW1faW5kaWNlc2AgZmFpbGVkIGluIABOb24tbWF4IHN1cHByZXNzaW9uAEFzc2lnbm1lbnQgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgeXAgPj0gMCAmJiB5cCA8IGhlaWdodGAgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpblggPCBtTnVtWEJpbnNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbWFnZS50eXBlKCkgPT0gSU1BR0VfVUlOVDhgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB3MSA+PSAwYCBmYWlsZWQgaW4gACVzOiAlcwoAeXAgb3V0IG9mIGJvdW5kcwBTdWJwaXhlbAB3MSBtdXN0IGJlIHBvc2l0aXZlAFVuYWJsZSB0byBkZXRlcm1pbmUgcHJvY2VzcyBuYW1lAE9ubHkgZ3JheSBzY2FsZSBpbWFnZXMgYXJlIHN1cHBvcnRlZABBc3NlcnRpb24gYGluZGljZXNbYXNzaWdubWVudFtpXV0gPCBudW1fZmVhdHVyZXNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBiaW5ZID49IDBgIGZhaWxlZCBpbiAAcHJ1bmVGZWF0dXJlcwAlcyVzAGJpblkgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgeXBfcGx1c18xID49IDAgJiYgeXBfcGx1c18xIDwgaGVpZ2h0YCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgb2N0YXZlIDwgbU51bU9jdGF2ZXNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB3MiA+PSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaXQtPnNlY29uZC5zaXplKCkgIT0gMGAgZmFpbGVkIGluIABGaW5kIE9yaWVudGF0aW9ucwB5cF9wbHVzXzEgb3V0IG9mIGJvdW5kcwAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvZ2F1c3NpYW5fc2NhbGVfc3BhY2VfcHlyYW1pZC5oAHcyIG11c3QgYmUgcG9zaXRpdmUAQ2x1c3RlciBtdXN0IGhhdmUgYXRsZWFzZXQgMSBmZWF0dXJlAC92YXIvY2FjaGUAQXNzZXJ0aW9uIGBiaW5ZIDwgbU51bVlCaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0W2ldID49IC0yNTgwNjRgIGZhaWxlZCBpbiAALy5jYWNoZQBPY3RhdmUgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYjEgPj0gMCAmJiBiMSA8IG51bV9iaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeHAgPj0gMCAmJiB4cCA8IHdpZHRoYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0W2ldIDw9IDI1ODA2NGAgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpbkFuZ2xlID49IDBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTAuaGVpZ2h0KCkgPT0gaW0xLmhlaWdodCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbUsgPT0gbUNlbnRlcnMuc2l6ZSgpYCBmYWlsZWQgaW4gAEhlaWdodCBpcyBpbmNvbnNpc3RlbnQAeHAgb3V0IG9mIGJvdW5kcwAlcy8lcwAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9tYXRjaGVycy9rbWVkb2lkcy5oAGIxIGJpbiBpbmRleCBvdXQgb2YgcmFuZ2UAYmluQW5nbGUgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgc2NhbGUgPCBtTnVtU2NhbGVzUGVyT2N0YXZlYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZHN0W2ldIDw9IDQxMjkwMjRgIGZhaWxlZCBpbiAAayBzaG91bGQgbWF0Y2ggdGhlIG51bWJlciBvZiBjbHVzdGVyIGNlbnRlcnMAU2NhbGUgb3V0IG9mIHJhbmdlAC92YXIvbGliAEFzc2VydGlvbiBgYjIgPj0gMCAmJiBiMiA8IG51bV9iaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgYmluQW5nbGUgPCBtTnVtQW5nbGVCaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgeHBfcGx1c18xID49IDAgJiYgeHBfcGx1c18xIDwgd2lkdGhgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBkc3RbaV0gPj0gLTQxMjkwMjRgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBpbTAuaGVpZ2h0KCkgPT0gaW0yLmhlaWdodCgpYCBmYWlsZWQgaW4gAHhwX3BsdXNfMSBvdXQgb2YgYm91bmRzAC8uY29uZmlnAGIyIGJpbiBpbmRleCBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGBudW1fZmVhdHVyZXMgPiAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgYmluU2NhbGUgPj0gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYChpbTEuaGVpZ2h0KCk+PjEpID09IGltMi5oZWlnaHQoKWAgZmFpbGVkIGluIAB2ZWN0b3IATnVtYmVyIG9mIGZlYXR1cmVzIG11c3QgYmUgcG9zaXRpdmUAYmluU2NhbGUgb3V0IG9mIHJhbmdlAFRNUERJUgBBc3NlcnRpb24gYGd4eCA8PSA0MTI5MDI0YCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgdzAgPj0gMCAmJiB3MCA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoaW0wLmhlaWdodCgpPj4xKSA9PSBpbTEuaGVpZ2h0KClgIGZhaWxlZCBpbiAAdmVjdG9yAC90bXAAT3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluU2NhbGUgPCBtTnVtU2NhbGVCaW5zYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbnVtX2luZGljZXMgPD0gbnVtX2ZlYXR1cmVzYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZ3h4ID49IDBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAoaW0wLmhlaWdodCgpPj4xKSA9PSBpbTIuaGVpZ2h0KClgIGZhaWxlZCBpbiAATW9yZSBpbmRpY2VzIHRoYW4gZmVhdHVyZXMARXJyb3IgbG9va2luZyBmb3IgcmVzb3VyY2VzIGRpcmVjdG9yeSBwYXRoAEFzc2VydGlvbiBgcm93IDwgbUhlaWdodGAgZmFpbGVkIGluIABBc3NlcnRpb24gYG1CdWNrZXRzLnNpemUoKSA9PSBtTnVtQnVja2V0c1hgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBneXkgPD0gNDEyOTAyNGAgZmFpbGVkIGluIABBc3NlcnRpb24gYHcxID49IDAgJiYgdzEgPD0gMS4wMDAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgaW5kZXggPD0gKGJpblggKyBiaW5ZKm1OdW1YQmlucyArIGJpbkFuZ2xlKm1OdW1YQmlucyptTnVtWUJpbnMgKyBiaW5TY2FsZSptTnVtWEJpbnMqbU51bVlCaW5zKm1OdW1BbmdsZUJpbnMpYCBmYWlsZWQgaW4gAEVycm9yIGNyZWF0aW5nIHJlc291cmNlcyBkaXJlY3RvcnkgcGF0aAAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9mcmFtZXdvcmsvaW1hZ2UuaABCdWNrZXRzIGFyZSBub3QgYWxsb2NhdGVkAEFzc2VydGlvbiBgbnVtX2luZGljZXMgPj0gbUtgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB3MiA+PSAwICYmIHcyIDw9IDEuMDAwMWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGd5eSA+PSAwYCBmYWlsZWQgaW4gAE5vdCBlbm91Z2ggZmVhdHVyZXMAcm93IG91dCBvZiBib3VuZHMAdmVjdG9yAEFzc2VydGlvbiBgbUJ1Y2tldHNbMF0uc2l6ZSgpID09IG1OdW1CdWNrZXRzWWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGd4eSA8PSA0MTI5MDI0YCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgdzMgPj0gMCAmJiB3MyA8PSAxLjAwMDFgIGZhaWxlZCBpbiAARXJyb3I6IFVuYWJsZSB0byBjaGFuZ2Ugd29ya2luZyBkaXJlY3RvcnkgdG8gJyVzJy4KAEFzc2lnbm1lbnQgc2l6ZSBpcyBpbmNvcnJlY3QAQXNzZXJ0aW9uIGBtRmVhdHVyZVBvaW50cy5zaXplKCkgPD0gbU1heE51bUZlYXR1cmVQb2ludHNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBneHkgPj0gLTQxMjkwMjRgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAodzArdzErdzIrdzMpIDw9IDEuMDAwMWAgZmFpbGVkIGluIABBc3NlcnRpb24gYG4gPiAwYCBmYWlsZWQgaW4gAFslIC4zZiAlIC4zZiAlIC4zZl0gWyUgNi4xZl0KAAADAAAAAwAAAAQAAAAEAAAABAAAAAEAAAAEAAAAAgAAAAIAAAACAAAAAgAAAAIAAAABAAAAAQAAAAEAQYCtAQunMgQAAACIAAAABQAAAJAAAAAGAAAAmAAAAAkAAACwAAAAGAQAAFMLAAAGDgAA0w8AAC5pc2V0AHJiAE42dmlzaW9uMjVHYXVzc2lhblNjYWxlU3BhY2VQeXJhbWlkRQAAABT6AAC5VgAAVG9vIG1hbnkgZmVhdHVyZSBwb2ludHMAdmVjdG9yAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL3V0aWxzL3BhcnRpYWxfc29ydC5oAEFzc2VydGlvbiBgcG9zID09IDY2NmAgZmFpbGVkIGluIABBc3NlcnRpb24gYG51bV9jZW50ZXJzID4gMGAgZmFpbGVkIGluIABUaGVyZSBtdXN0IGJlIGF0IGxlYXN0IDEgY2VudGVyAG4gbXVzdCBiZSBwb3NpdGl2ZQBQb3NpdGlvbiBpcyBub3Qgd2l0aGluIHJhbmdlAEFzc2VydGlvbiBga3Auc2NhbGUgPCBtTGFwbGFjaWFuUHlyYW1pZC5udW1TY2FsZVBlck9jdGF2ZSgpYCBmYWlsZWQgaW4gAFslc10gWyVzXSBbJXNdIDogRm91bmQgJWQgZmVhdHVyZXMgaW4gcXVlcnkARmVhdHVyZSBwb2ludCBzY2FsZSBpcyBvdXQgb2YgYm91bmRzAEFzc2VydGlvbiBgayA+IDBgIGZhaWxlZCBpbiAAayBtdXN0IGJlIHBvc2l0aXZlAEZpbmQgTWF0Y2hlcyAoMSkAQXNzZXJ0aW9uIGBrcC5zY29yZSA9PSBsYXAxLmdldDxmbG9hdD4oeSlbeF1gIGZhaWxlZCBpbiAAU2NvcmUgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCB0aGUgRG9HIGltYWdlAEhvdWdoIFZvdGluZyAoMSkARmluZCBIb3VnaCBNYXRjaGVzICgxKQBBc3NlcnRpb24gYGJ1Y2tldFswXS5maXJzdCA+PSBidWNrZXRbbl0uZmlyc3RgIGZhaWxlZCBpbiAAbnRoX2VsZW1lbnQgZmFpbGVkAEVzdGltYXRlIEhvbW9ncmFwaHkgKDEpAEZpbmQgSW5saWVycyAoMSkAQXNzZXJ0aW9uIGBvY3RhdmUgPCBtTnVtT2N0YXZlc2AgZmFpbGVkIGluIAAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9kZXRlY3RvcnMvZ2F1c3NpYW5fc2NhbGVfc3BhY2VfcHlyYW1pZC5oAEZpbmQgTWF0Y2hlcyAoMikAT2N0YXZlIG91dCBvZiByYW5nZQBIb3VnaCBWb3RpbmcgKDIpAEZpbmQgSG91Z2ggTWF0Y2hlcyAoMikAQXNzZXJ0aW9uIGBzY2FsZSA8IG1OdW1TY2FsZXNQZXJPY3RhdmVgIGZhaWxlZCBpbiAAU2NhbGUgb3V0IG9mIHJhbmdlAEVzdGltYXRlIEhvbW9ncmFwaHkgKDIpAEZpbmQgSW5saWVycyAoMikAQXNzZXJ0aW9uIGBpbmRleCA8IG1JbWFnZXMuc2l6ZSgpYCBmYWlsZWQgaW4gAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9Eb0dfc2NhbGVfaW52YXJpYW50X2RldGVjdG9yLmgAQXNzZXJ0aW9uIGBiZXN0X2luZGV4ICE9IHN0ZDo6bnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KClgIGZhaWxlZCBpbiAAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvZmVhdHVyZV9tYXRjaGVyLWlubGluZS5oAEluZGV4IGlzIG91dCBvZiByYW5nZQBTb21ldGhpbmcgc3RyYW5nZQBBc3NlcnRpb24gYHNjYWxlID49IDBgIGZhaWxlZCBpbiAAU2NhbGUgbXVzdCBiZSBwb3NpdGl2ZQBBc3NlcnRpb24gYG1NYXRjaGVzLnNpemUoKSA8PSBmZWF0dXJlczEtPnNpemUoKWAgZmFpbGVkIGluIABOdW1iZXIgb2YgbWF0Y2hlcyBzaG91bGQgYmUgbG93ZXIAU2NhbGUgbXVzdCBiZSBsZXNzIHRoYW4gbnVtYmVyIG9mIHNjYWxlIHBlciBvY3RhdmUAQXNzZXJ0aW9uIGBsYXAwLmhlaWdodCgpID09IGxhcDEuaGVpZ2h0KCkgPT0gbGFwMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYG1Sb290LmdldCgpYCBmYWlsZWQgaW4gAFdpZHRoL2hlaWdodCBhcmUgbm90IGNvbnNpc3RlbnQAUm9vdCBjYW5ub3QgYmUgTlVMTABBc3NlcnRpb24gYG1pbmkgIT0gLTFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAobGFwMC5oZWlnaHQoKSA9PSBsYXAxLmhlaWdodCgpKSAmJiAoKGxhcDEuaGVpZ2h0KCk+PjEpID09IGxhcDIuaGVpZ2h0KCkpYCBmYWlsZWQgaW4gAE1pbmltdW0gaW5kZXggbm90IHNldABBc3NlcnRpb24gYCgobGFwMC53aWR0aCgpPj4xKSA9PSBsYXAxLndpZHRoKCkpICYmIChsYXAxLndpZHRoKCkgPT0gbGFwMi53aWR0aCgpKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYDBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBuIDw9IGluX21hdGNoZXMuc2l6ZSgpYCBmYWlsZWQgaW4gAEltYWdlIHNpemVzIGFyZSBpbmNvbnNpc3RlbnQAU2hvdWxkIGJlIHRoZSBzYW1lAEFzc2VydGlvbiBgYmluWCA+PSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKHgtMSkgPj0gMCAmJiAoeCsxKSA8IGxhcDEud2lkdGgoKWAgZmFpbGVkIGluIAB4IG91dCBvZiBib3VuZHMAL2hvbWUvd2FsdGVyL2thbHdhbHQtZ2l0aHViL0FSLmpzLWdpdGh1Yi1vcmcvYXJ0b29sa2l0NS1qcy9saWIvYXJ0b29sa2l0NS9saWIvU1JDL0tQTS9GcmVha01hdGNoZXIvbWF0Y2hlcnMvaG91Z2hfc2ltaWxhcml0eV92b3RpbmcuaABiaW5YIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYCh5LTEpID49IDAgJiYgKHkrMSkgPCBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAHkgb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYGJpblggPCBtTnVtWEJpbnNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBiaW5ZID49IDBgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBsYXAwLndpZHRoKCkgPT0gbGFwMS53aWR0aCgpYCBmYWlsZWQgaW4gAEltYWdlIGRpbWVuc2lvbnMgaW5jb25zaXN0ZW50AGJpblkgb3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgYmluWSA8IG1OdW1ZQmluc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYGxhcDAud2lkdGgoKSA9PSBsYXAyLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBiaW5BbmdsZSA+PSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgbGFwMC5oZWlnaHQoKSA9PSBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAGJpbkFuZ2xlIG91dCBvZiByYW5nZQBBc3NlcnRpb24gYGxhcDAuaGVpZ2h0KCkgPT0gbGFwMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYGJpbkFuZ2xlIDwgbU51bUFuZ2xlQmluc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYCh4LTEpID49IDAgJiYgKHgrMSkgPCBpbS53aWR0aCgpYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgYmluU2NhbGUgPj0gMGAgZmFpbGVkIGluIABBc3NlcnRpb24gYCh5LTEpID49IDAgJiYgKHkrMSkgPCBpbS5oZWlnaHQoKWAgZmFpbGVkIGluIABiaW5TY2FsZSBvdXQgb2YgcmFuZ2UAQXNzZXJ0aW9uIGAobGFwMC53aWR0aCgpPj4xKSA9PSBsYXAyLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBiaW5TY2FsZSA8IG1OdW1TY2FsZUJpbnNgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGAobGFwMC5oZWlnaHQoKT4+MSkgPT0gbGFwMi5oZWlnaHQoKWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHhfZGl2XzItMC41ZiA+PSAwYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgZGlzdEJpbkFuZ2xlID49IDBgIGZhaWxlZCBpbiAAeF9kaXZfMiBvdXQgb2YgYm91bmRzIG91dCBvZiBib3VuZHMgZm9yIGludGVycG9sYXRpb24AZGlzdEJpbkFuZ2xlIG11c3Qgbm90IGJlIG5lZ2F0aXZlAEFzc2VydGlvbiBgaHlwLnNpemUoKSA+PSA5Km1heF9udW1faHlwb3RoZXNlc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYHlfZGl2XzItMC41ZiA+PSAwYCBmYWlsZWQgaW4gAHlfZGl2XzIgb3V0IG9mIGJvdW5kcyBvdXQgb2YgYm91bmRzIGZvciBpbnRlcnBvbGF0aW9uAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2hvbW9ncmFwaHlfZXN0aW1hdGlvbi9yb2J1c3RfaG9tb2dyYXBoeS5oAGh5cCB2ZWN0b3Igc2hvdWxkIGJlIG9mIHNpemUgOSptYXhfbnVtX2h5cG90aGVzZXMAQXNzZXJ0aW9uIGB4X2Rpdl8yKzAuNWYgPCBsYXAyLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB0bXBfaS5zaXplKCkgPj0gbnVtX3BvaW50c2AgZmFpbGVkIGluIABBc3NlcnRpb24gYHlfZGl2XzIrMC41ZiA8IGxhcDIuaGVpZ2h0KClgIGZhaWxlZCBpbiAAdG1wX2kgdmVjdG9yIHNob3VsZCBiZSBvZiBzaXplIG51bV9wb2ludHMAQXNzZXJ0aW9uIGAobGFwMC53aWR0aCgpPj4xKSA9PSBsYXAxLndpZHRoKClgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGBoeXBfY29zdHMuc2l6ZSgpID49IG1heF9udW1faHlwb3RoZXNlc2AgZmFpbGVkIGluIABBc3NlcnRpb24gYChsYXAwLmhlaWdodCgpPj4xKSA9PSBsYXAxLmhlaWdodCgpYCBmYWlsZWQgaW4gAHZlY3RvcgBBc3NlcnRpb24gYG4gPiAwYCBmYWlsZWQgaW4gAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL3V0aWxzL3BhcnRpYWxfc29ydC5oAEFzc2VydGlvbiBgcm93IDwgbUhlaWdodGAgZmFpbGVkIGluIAAvaG9tZS93YWx0ZXIva2Fsd2FsdC1naXRodWIvQVIuanMtZ2l0aHViLW9yZy9hcnRvb2xraXQ1LWpzL2xpYi9hcnRvb2xraXQ1L2xpYi9TUkMvS1BNL0ZyZWFrTWF0Y2hlci9mcmFtZXdvcmsvaW1hZ2UuaABuIG11c3QgYmUgcG9zaXRpdmUAcm93IG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGBrID4gMGAgZmFpbGVkIGluIABrIG11c3QgYmUgcG9zaXRpdmUAQXNzZXJ0aW9uIGAoaW50KXN0ZDo6Zmxvb3IoeCkgPT0gKGludCl4YCBmYWlsZWQgaW4gAC9ob21lL3dhbHRlci9rYWx3YWx0LWdpdGh1Yi9BUi5qcy1naXRodWItb3JnL2FydG9vbGtpdDUtanMvbGliL2FydG9vbGtpdDUvbGliL1NSQy9LUE0vRnJlYWtNYXRjaGVyL2RldGVjdG9ycy9pbnRlcnBvbGF0ZS5oAEFzc2VydGlvbiBgMGAgZmFpbGVkIGluIABGYWlsZWQgdG8gY29tcHV0ZSBtYXRyaXggaW52ZXJzZQBmbG9vcigpIGFuZCBjYXN0IG5vdCB0aGUgc2FtZQBBc3NlcnRpb24gYChpbnQpc3RkOjpmbG9vcih5KSA9PSAoaW50KXlgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB5cCA+PSAwICYmIHlwIDwgaGVpZ2h0YCBmYWlsZWQgaW4gAHlwIG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGB5cF9wbHVzXzEgPj0gMCAmJiB5cF9wbHVzXzEgPCBoZWlnaHRgIGZhaWxlZCBpbiAAeXBfcGx1c18xIG91dCBvZiBib3VuZHMAQXNzZXJ0aW9uIGB4cCA+PSAwICYmIHhwIDwgd2lkdGhgIGZhaWxlZCBpbiAAeHAgb3V0IG9mIGJvdW5kcwBBc3NlcnRpb24gYHhwX3BsdXNfMSA+PSAwICYmIHhwX3BsdXNfMSA8IHdpZHRoYCBmYWlsZWQgaW4gAHhwX3BsdXNfMSBvdXQgb2YgYm91bmRzAEFzc2VydGlvbiBgdzAgPj0gMCAmJiB3MCA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAT3V0IG9mIHJhbmdlAEFzc2VydGlvbiBgdzEgPj0gMCAmJiB3MSA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAQXNzZXJ0aW9uIGB3MiA+PSAwICYmIHcyIDw9IDEuMDAwMWAgZmFpbGVkIGluIABBc3NlcnRpb24gYHczID49IDAgJiYgdzMgPD0gMS4wMDAxYCBmYWlsZWQgaW4gAEFzc2VydGlvbiBgKHcwK3cxK3cyK3czKSA8PSAxLjAwMDFgIGZhaWxlZCBpbiAAAAAAAADgVgAAEQAAABIAAAAAAAAAJG0AABMAAAAUAAAATjZ2aXNpb245RXhjZXB0aW9uRQA8+gAA5GwAAFT7AABONnZpc2lvbjE4Qmlub21pYWxQeXJhbWlkMzJmRQAAADz6AAAEbQAA4FYAAAAAAAD4bAAADwAAABUAAAAWAAAAuVKMPo5a5z65Uow+AAAAAAAAAAD4bQAAFwAAABgAAAAZAAAAGgAAABsAAABOU3QzX18yMjBfX3NoYXJlZF9wdHJfcG9pbnRlcklQTjZ2aXNpb244S2V5ZnJhbWVJTGk5NkVFRU5TXzEwc2hhcmVkX3B0cklTM19FMjdfX3NoYXJlZF9wdHJfZGVmYXVsdF9kZWxldGVJUzNfUzNfRUVOU185YWxsb2NhdG9ySVMzX0VFRUUAPPoAAHBtAAC09wAATlN0M19fMjEwc2hhcmVkX3B0cklONnZpc2lvbjhLZXlmcmFtZUlMaTk2RUVFRTI3X19zaGFyZWRfcHRyX2RlZmF1bHRfZGVsZXRlSVMzX1MzX0VFAGJvb2wgdmlzaW9uOjpWaXN1YWxEYXRhYmFzZTx2aXNpb246OkZSRUFLRXh0cmFjdG9yLCB2aXNpb246OkJpbmFyeUZlYXR1cmVTdG9yZSwgdmlzaW9uOjpCaW5hcnlGZWF0dXJlTWF0Y2hlcjw5Nj4+OjpxdWVyeShjb25zdCBHYXVzc2lhblNjYWxlU3BhY2VQeXJhbWlkICopIFtGRUFUVVJFX0VYVFJBQ1RPUiA9IHZpc2lvbjo6RlJFQUtFeHRyYWN0b3IsIFNUT1JFID0gdmlzaW9uOjpCaW5hcnlGZWF0dXJlU3RvcmUsIE1BVENIRVIgPSB2aXNpb246OkJpbmFyeUZlYXR1cmVNYXRjaGVyPDk2Pl0AaHlwX2Nvc3RzIHZlY3RvciBzaG91bGQgYmUgb2Ygc2l6ZSBtYXhfbnVtX2h5cG90aGVzZXMAQbTfAQvfULK+uT4S3KC+kL45PhLcoL6Qvjm+AAAAgLK+ub4S3KA+kL45vhLcoD6Qvjk+0nIYvwAAAADScpi+OgYEv9JymD46BgS/0nIYPwAAAIDScpg+OgYEP9JymL46BgQ/AAAAgFa4Pb9mTSQ/Vri9vmZNJD9WuL0+AAAAAFa4PT9mTSS/Vri9PmZNJL9WuL2+DOlYPwAAAIAM6dg+mdk7Pwzp2L6Z2Ts/DOlYvwAAAAAM6di+mdk7vwzp2D6Z2Tu/AAAAAPxTbj/xZU6/DVTuPvFlTr8NVO6+AAAAgPxTbr/xZU4/DVTuvvFlTj8NVO4+AACAvwAAAAAAAAC/0LNdvwAAAD/Qs12/AACAPwAAAIAAAAA/0LNdPwAAAL/Qs10/AAAAADhxAAAXAAAAHAAAAB0AAAAeAAAAHwAAAE5TdDNfXzIyMF9fc2hhcmVkX3B0cl9wb2ludGVySVBoMTZOdWxsQXJyYXlEZWxldGVySWhFTlNfOWFsbG9jYXRvckloRUVFRQAAAAA8+gAA7HAAALT3AAAxNk51bGxBcnJheURlbGV0ZXJJaEUAAAAAAAAA4HEAABcAAAAgAAAAIQAAACIAAAAjAAAATlN0M19fMjIwX19zaGFyZWRfcHRyX3BvaW50ZXJJUGhOU18xMHNoYXJlZF9wdHJJaEUyN19fc2hhcmVkX3B0cl9kZWZhdWx0X2RlbGV0ZUloaEVFTlNfOWFsbG9jYXRvckloRUVFRQA8+gAAeHEAALT3AABOU3QzX18yMTBzaGFyZWRfcHRySWhFMjdfX3NoYXJlZF9wdHJfZGVmYXVsdF9kZWxldGVJaGhFRQB2aXNpb246OlNjb3BlZFRpbWVyOjp+U2NvcGVkVGltZXIoKQBpbmZpbml0eQBNaXNzaW5nIEh1ZmZtYW4gY29kZSB0YWJsZSBlbnRyeQBGZWJydWFyeQBKYW51YXJ5AEp1bHkAVGh1cnNkYXkAVHVlc2RheQBXZWRuZXNkYXkAU2F0dXJkYXkAU3VuZGF5AE1vbmRheQBGcmlkYXkATWF5ACVtLyVkLyV5AE1BWF9BTExPQ19DSFVOSyBpcyB3cm9uZywgcGxlYXNlIGZpeABBTElHTl9UWVBFIGlzIHdyb25nLCBwbGVhc2UgZml4AHNldE1hcmtlckluZm9WZXJ0ZXgATm90IGEgSlBFRyBmaWxlOiBzdGFydHMgd2l0aCAweCUwMnggMHglMDJ4AENvcnJ1cHQgSlBFRyBkYXRhOiAldSBleHRyYW5lb3VzIGJ5dGVzIGJlZm9yZSBtYXJrZXIgMHglMDJ4AFVuZXhwZWN0ZWQgbWFya2VyIDB4JTAyeABVbnN1cHBvcnRlZCBtYXJrZXIgdHlwZSAweCUwMngAVW5zdXBwb3J0ZWQgSlBFRyBwcm9jZXNzOiBTT0YgdHlwZSAweCUwMngARGVmaW5lIEh1ZmZtYW4gVGFibGUgMHglMDJ4AERlZmluZSBBcml0aG1ldGljIFRhYmxlIDB4JTAyeDogMHglMDJ4AC0rICAgMFgweAAtMFgrMFggMFgtMHgrMHggMHgAQm9ndXMgREFDIHZhbHVlIDB4JXgAX19uZXh0X3ByaW1lIG92ZXJmbG93AEh1ZmZtYW4gY29kZSBzaXplIHRhYmxlIG92ZXJmbG93AE5vdgBUaHUAICAgICAgICAlNHUgJTR1ICU0dSAlNHUgJTR1ICU0dSAlNHUgJTR1AEpQRUcgcGFyYW1ldGVyIHN0cnVjdCBtaXNtYXRjaDogbGlicmFyeSB0aGlua3Mgc2l6ZSBpcyAldSwgY2FsbGVyIGV4cGVjdHMgJXUARGVmaW5lIFJlc3RhcnQgSW50ZXJ2YWwgJXUAV2FybmluZzogdGh1bWJuYWlsIGltYWdlIHNpemUgZG9lcyBub3QgbWF0Y2ggZGF0YSBsZW5ndGggJXUATWlzY2VsbGFuZW91cyBtYXJrZXIgMHglMDJ4LCBsZW5ndGggJXUASkZJRiBleHRlbnNpb24gbWFya2VyOiB0eXBlIDB4JTAyeCwgbGVuZ3RoICV1AEpGSUYgZXh0ZW5zaW9uIG1hcmtlcjogcGFsZXR0ZSB0aHVtYm5haWwgaW1hZ2UsIGxlbmd0aCAldQBKRklGIGV4dGVuc2lvbiBtYXJrZXI6IEpQRUctY29tcHJlc3NlZCB0aHVtYm5haWwgaW1hZ2UsIGxlbmd0aCAldQBKRklGIGV4dGVuc2lvbiBtYXJrZXI6IFJHQiB0aHVtYm5haWwgaW1hZ2UsIGxlbmd0aCAldQBVbmtub3duIEFQUDE0IG1hcmtlciAobm90IEFkb2JlKSwgbGVuZ3RoICV1AFVua25vd24gQVBQMCBtYXJrZXIgKG5vdCBKRklGKSwgbGVuZ3RoICV1AE9idGFpbmVkIFhNUyBoYW5kbGUgJXUARnJlZWQgWE1TIGhhbmRsZSAldQBPYnRhaW5lZCBFTVMgaGFuZGxlICV1AEZyZWVkIEVNUyBoYW5kbGUgJXUAdW5zdXBwb3J0ZWQgbG9jYWxlIGZvciBzdGFuZGFyZCBpbnB1dABBdWd1c3QAZ2V0VHJhbnNNYXRNdWx0aVNxdWFyZVJvYnVzdABJbnZhbGlkIGNyb3AgcmVxdWVzdABVbnN1cHBvcnRlZCBjb2xvciBjb252ZXJzaW9uIHJlcXVlc3QAdW5zaWduZWQgc2hvcnQAZ2V0TXVsdGlNYXJrZXJDb3VudABnZXRUcmFuc01hdFNxdWFyZUNvbnQAdW5zaWduZWQgaW50AENvcnJ1cHQgSlBFRyBkYXRhOiBwcmVtYXR1cmUgZW5kIG9mIGRhdGEgc2VnbWVudABoZWlnaHQARnJhY3Rpb25hbCBzYW1wbGluZyBub3QgaW1wbGVtZW50ZWQgeWV0AENDSVI2MDEgc2FtcGxpbmcgbm90IGltcGxlbWVudGVkIHlldABOb3QgaW1wbGVtZW50ZWQgeWV0AGZzZXQAZ2V0AE9jdABmbG9hdABTYXQAdWludDY0X3QAQ2Fubm90IHF1YW50aXplIG1vcmUgdGhhbiAlZCBjb2xvciBjb21wb25lbnRzAFN0YXJ0IE9mIFNjYW46ICVkIGNvbXBvbmVudHMAQm9ndXMgdmlydHVhbCBhcnJheSBhY2Nlc3MAQm9ndXMgc2FtcGxpbmcgZmFjdG9ycwBRdWFudGl6aW5nIHRvICVkID0gJWQqJWQqJWQgY29sb3JzAFF1YW50aXppbmcgdG8gJWQgY29sb3JzAENhbm5vdCBxdWFudGl6ZSB0byBmZXdlciB0aGFuICVkIGNvbG9ycwBDYW5ub3QgcXVhbnRpemUgdG8gbW9yZSB0aGFuICVkIGNvbG9ycwBJbnZhbGlkIEpQRUcgZmlsZSBzdHJ1Y3R1cmU6IHR3byBTT0kgbWFya2VycwBJbnZhbGlkIEpQRUcgZmlsZSBzdHJ1Y3R1cmU6IHR3byBTT0YgbWFya2VycwBuZnRNYXJrZXJzAFNtb290aGluZyBub3Qgc3VwcG9ydGVkIHdpdGggbm9uc3RhbmRhcmQgc2FtcGxpbmcgcmF0aW9zAE1heGltdW0gc3VwcG9ydGVkIGltYWdlIGRpbWVuc2lvbiBpcyAldSBwaXhlbHMAQXBwbGljYXRpb24gdHJhbnNmZXJyZWQgdG9vIG1hbnkgc2NhbmxpbmVzAEFwcGxpY2F0aW9uIHRyYW5zZmVycmVkIHRvbyBmZXcgc2NhbmxpbmVzAEZhaWxlZCB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUgJXMAQ2xvc2VkIHRlbXBvcmFyeSBmaWxlICVzAE9wZW5lZCB0ZW1wb3JhcnkgZmlsZSAlcwBBcHIAdmVjdG9yAElucHV0IGZpbGUgcmVhZCBlcnJvcgBzZXRNYXJrZXJJbmZvRGlyAEludmFsaWQgSlBFRyBmaWxlIHN0cnVjdHVyZTogbWlzc2luZyBTT1MgbWFya2VyAG5mdE1hcmtlcgBnZXRNYXJrZXIAZGV0ZWN0TWFya2VyAF9hZGRNdWx0aU1hcmtlcgBnZXRNdWx0aUVhY2hNYXJrZXIAX2FkZE1hcmtlcgBnZXRORlRNYXJrZXIAZGV0ZWN0TkZUTWFya2VyAF9hZGRORlRNYXJrZXIAT2N0b2JlcgBOb3ZlbWJlcgBTZXB0ZW1iZXIARGVjZW1iZXIAdW5zaWduZWQgY2hhcgBpb3NfYmFzZTo6Y2xlYXIATWFyAFVucmVjb2duaXplZCBjb21wb25lbnQgSURzICVkICVkICVkLCBhc3N1bWluZyBZQ2JDcgBzZXR1cABWaXJ0dWFsIGFycmF5IGNvbnRyb2xsZXIgbWVzc2VkIHVwAFNlcAAlSTolTTolUyAlcABzZXRQYXR0UmF0aW8AZ2V0UGF0dFJhdGlvAHRlYXJkb3duAFN1bgBKdW4Ac3RkOjpleGNlcHRpb24AQm9ndXMgSHVmZm1hbiB0YWJsZSBkZWZpbml0aW9uAFNlbGVjdGVkICVkIGNvbG9ycyBmb3IgcXVhbnRpemF0aW9uAEltYWdlIHRvbyB3aWRlIGZvciB0aGlzIGltcGxlbWVudGF0aW9uAE1vbgBuYW4ARGlkbid0IGV4cGVjdCBtb3JlIHRoYW4gb25lIHNjYW4AU2FtcGxpbmcgZmFjdG9ycyB0b28gbGFyZ2UgZm9yIGludGVybGVhdmVkIHNjYW4ASmFuAGdldE1hcmtlck51bQBnZXRNdWx0aU1hcmtlck51bQBKdWwAYm9vbABCdWZmZXIgcGFzc2VkIHRvIEpQRUcgbGlicmFyeSBpcyB0b28gc21hbGwAQXByaWwAc2V0TG9nTGV2ZWwAZ2V0TG9nTGV2ZWwAZW1zY3JpcHRlbjo6dmFsAHB1c2hfYmFjawBGcmkAZHBpAGJhZF9hcnJheV9uZXdfbGVuZ3RoAEJvZ3VzIG1hcmtlciBsZW5ndGgAd2lkdGgATWFyY2gAQXVnAHVuc2lnbmVkIGxvbmcAc3RkOjp3c3RyaW5nAGJhc2ljX3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBDb3B5cmlnaHQgKEMpIDIwMTgsIFRob21hcyBHLiBMYW5lLCBHdWlkbyBWb2xsYmVkaW5nAGluZgAlLjBMZgAlTGYAcmVzaXplAHRydWUAVHVlAGZhbHNlAFN1c3BlbnNpb24gbm90IGFsbG93ZWQgaGVyZQBnZXRUcmFuc01hdFNxdWFyZQBnZXRUcmFuc01hdE11bHRpU3F1YXJlAHNldE1hdHJpeENvZGVUeXBlAGdldE1hdHJpeENvZGVUeXBlAEp1bmUAc2V0UHJvamVjdGlvbk5lYXJQbGFuZQBnZXRQcm9qZWN0aW9uTmVhclBsYW5lAHNldFByb2plY3Rpb25GYXJQbGFuZQBnZXRQcm9qZWN0aW9uRmFyUGxhbmUAUmVxdWVzdGVkIGZlYXR1cmUgd2FzIG9taXR0ZWQgYXQgY29tcGlsZSB0aW1lAFNlZWsgZmFpbGVkIG9uIHRlbXBvcmFyeSBmaWxlAFJlYWQgZmFpbGVkIG9uIHRlbXBvcmFyeSBmaWxlAEVtcHR5IGlucHV0IGZpbGUAUHJlbWF0dXJlIGVuZCBvZiBpbnB1dCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgSlBFRyBmaWxlAHNldENhbWVyYSgpOiBFcnJvciBjcmVhdGluZyAzRCBoYW5kbGUAZG91YmxlAERDVCBjb2VmZmljaWVudCBvdXQgb2YgcmFuZ2UASW52YWxpZCBjb2xvciBxdWFudGl6YXRpb24gbW9kZSBjaGFuZ2UASlBFRyBkYXRhc3RyZWFtIGNvbnRhaW5zIG5vIGltYWdlACAgICB3aXRoICVkIHggJWQgdGh1bWJuYWlsIGltYWdlAGdldFByb2Nlc3NpbmdJbWFnZQBTdGFydCBvZiBJbWFnZQBFbmQgT2YgSW1hZ2UAQm9ndXMgYnVmZmVyIGNvbnRyb2wgbW9kZQBDb3JydXB0IEpQRUcgZGF0YTogYmFkIEh1ZmZtYW4gY29kZQBDb3JydXB0IEpQRUcgZGF0YTogYmFkIGFyaXRobWV0aWMgY29kZQBzZXRQYXR0ZXJuRGV0ZWN0aW9uTW9kZQBnZXRQYXR0ZXJuRGV0ZWN0aW9uTW9kZQBzZXREZWJ1Z01vZGUAZ2V0RGVidWdNb2RlAHNldExhYmVsaW5nTW9kZQBnZXRMYWJlbGluZ01vZGUAc2V0VGhyZXNob2xkTW9kZQBnZXRUaHJlc2hvbGRNb2RlAHNldEltYWdlUHJvY01vZGUAZ2V0SW1hZ2VQcm9jTW9kZQBCb2d1cyBpbnB1dCBjb2xvcnNwYWNlAEJvZ3VzIEpQRUcgY29sb3JzcGFjZQBzZXRUaHJlc2hvbGQAZ2V0VGhyZXNob2xkAHZvaWQAQmFja2luZyBzdG9yZSBub3Qgc3VwcG9ydGVkAERDVCBzY2FsZWQgYmxvY2sgc2l6ZSAlZHglZCBub3Qgc3VwcG9ydGVkAFF1YW50aXphdGlvbiB0YWJsZSAweCUwMnggd2FzIG5vdCBkZWZpbmVkAEh1ZmZtYW4gdGFibGUgMHglMDJ4IHdhcyBub3QgZGVmaW5lZABBcml0aG1ldGljIHRhYmxlIDB4JTAyeCB3YXMgbm90IGRlZmluZWQAV3JpdGUgdG8gWE1TIGZhaWxlZABSZWFkIGZyb20gWE1TIGZhaWxlZABXcml0ZSB0byBFTVMgZmFpbGVkAFJlYWQgZnJvbSBFTVMgZmFpbGVkAFdlZAAgICAgICAgICUzZCAlM2QgJTNkICUzZCAlM2QgJTNkICUzZCAlM2QAV2FybmluZzogdW5rbm93biBKRklGIHJldmlzaW9uIG51bWJlciAlZC4lMDJkAENvcnJ1cHQgSlBFRyBkYXRhOiBmb3VuZCBtYXJrZXIgMHglMDJ4IGluc3RlYWQgb2YgUlNUJWQAU3RhcnQgT2YgRnJhbWUgMHglMDJ4OiB3aWR0aD0ldSwgaGVpZ2h0PSV1LCBjb21wb25lbnRzPSVkACAgICBDb21wb25lbnQgJWQ6ICVkaHglZHYgcT0lZABJbnZhbGlkIHByb2dyZXNzaXZlIHBhcmFtZXRlcnMgU3M9JWQgU2U9JWQgQWg9JWQgQWw9JWQAICBTcz0lZCwgU2U9JWQsIEFoPSVkLCBBbD0lZAAgICAgQ29tcG9uZW50ICVkOiBkYz0lZCBhYz0lZABJbnZhbGlkIHByb2dyZXNzaXZlIHBhcmFtZXRlcnMgYXQgc2NhbiBzY3JpcHQgZW50cnkgJWQASW52YWxpZCBzY2FuIHNjcmlwdCBhdCBlbnRyeSAlZABCb2d1cyBEUVQgaW5kZXggJWQAQm9ndXMgREhUIGluZGV4ICVkAEJvZ3VzIERBQyBpbmRleCAlZABUb28gbWFueSBjb2xvciBjb21wb25lbnRzOiAlZCwgbWF4ICVkAEluY29uc2lzdGVudCBwcm9ncmVzc2lvbiBzZXF1ZW5jZSBmb3IgY29tcG9uZW50ICVkIGNvZWZmaWNpZW50ICVkAFdyb25nIEpQRUcgbGlicmFyeSB2ZXJzaW9uOiBsaWJyYXJ5IGlzICVkLCBjYWxsZXIgZXhwZWN0cyAlZABBdCBtYXJrZXIgMHglMDJ4LCByZWNvdmVyeSBhY3Rpb24gJWQAVW5zdXBwb3J0ZWQgSlBFRyBkYXRhIHByZWNpc2lvbiAlZABEZWZpbmUgUXVhbnRpemF0aW9uIFRhYmxlICVkICBwcmVjaXNpb24gJWQAQWRvYmUgQVBQMTQgbWFya2VyOiB2ZXJzaW9uICVkLCBmbGFncyAweCUwNHggMHglMDR4LCB0cmFuc2Zvcm0gJWQASW1wcm9wZXIgY2FsbCB0byBKUEVHIGxpYnJhcnkgaW4gc3RhdGUgJWQAQ2Fubm90IHRyYW5zY29kZSBkdWUgdG8gbXVsdGlwbGUgdXNlIG9mIHF1YW50aXphdGlvbiB0YWJsZSAlZABVbmtub3duIEFkb2JlIGNvbG9yIHRyYW5zZm9ybSBjb2RlICVkAEludmFsaWQgbWVtb3J5IHBvb2wgY29kZSAlZABCb2d1cyBtZXNzYWdlIGNvZGUgJWQASkZJRiBBUFAwIG1hcmtlcjogdmVyc2lvbiAlZC4lMDJkLCBkZW5zaXR5ICVkeCVkICAlZABzdGQ6OmJhZF9hbGxvYwBEZWMAJWxkJWMAQ29tcG9uZW50IGluZGV4ICVkOiBtaXNtYXRjaGluZyBzYW1wbGluZyByYXRpbyAlZDolZCwgJWQ6JWQsICVjAEZlYgByd2EAU2NhbiBzY3JpcHQgZG9lcyBub3QgdHJhbnNtaXQgYWxsIGRhdGEAZ2V0TkZURGF0YQBfbG9hZENhbWVyYQBBUl9VU0VfVFJBQ0tJTkdfSElTVE9SWQBBUl9OT1VTRV9UUkFDS0lOR19ISVNUT1JZACVhICViICVkICVIOiVNOiVTICVZAFBPU0lYAEFSX1RFTVBMQVRFX01BVENISU5HX0NPTE9SX0FORF9NQVRSSVgAQVJfVEVNUExBVEVfTUFUQ0hJTkdfTU9OT19BTkRfTUFUUklYAEFSX0xBQkVMSU5HX1RIUkVTSF9NT0RFX0FVVE9fT1RTVQBBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfTUFUQ0hfQ09OVFJBU1QAQVJfTUFYX0xPT1BfQ09VTlQASW52YWxpZCBjb21wb25lbnQgSUQgJWQgaW4gU09TAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9IRVVSSVNUSUNfVFJPVUJMRVNPTUVfTUFUUklYX0NPREVTAEVSUk9SX01BUktFUl9JTkRFWF9PVVRfT0ZfQk9VTkRTACVIOiVNOiVTAEFSX0xPR19MRVZFTF9FUlJPUgBBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfUE9TRV9FUlJPUgBBUl9URU1QTEFURV9NQVRDSElOR19DT0xPUgBBUl9URU1QTEFURV9NQVRDSElOR19NT05PAEFSX0xPR19MRVZFTF9JTkZPAEFSX0xPR19MRVZFTF9SRUxfSU5GTwBBUl9MT0dfTEVWRUxfV0FSTgBBUl9NQVRSSVhfQ09ERV9ERVRFQ1RJT04AQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX1BBVFRFUk5fRVhUUkFDVElPTgBBUl9MQUJFTElOR19CTEFDS19SRUdJT04AQVJfTEFCRUxJTkdfV0hJVEVfUkVHSU9OAE5BTgBBUl9MQUJFTElOR19USFJFU0hfTU9ERV9BVVRPX01FRElBTgBQTQBKUEVHTUVNAEFNAExDX0FMTABBUl9NQVJLRVJfSU5GT19DVVRPRkZfUEhBU0VfTUFUQ0hfQkFSQ09ERV9FRENfRkFJTABBUl9MQUJFTElOR19USFJFU0hfTU9ERV9NQU5VQUwAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX1BPU0VfRVJST1JfTVVMVEkAQVJfTE9PUF9CUkVBS19USFJFU0gAQVJfREVGQVVMVF9MQUJFTElOR19USFJFU0gAQVJfTE9HX0xFVkVMX0RFQlVHAExBTkcASW52YWxpZCBTT1MgcGFyYW1ldGVycyBmb3Igc2VxdWVudGlhbCBKUEVHAENhdXRpb246IHF1YW50aXphdGlvbiB0YWJsZXMgYXJlIHRvbyBjb2Fyc2UgZm9yIGJhc2VsaW5lIEpQRUcASW52YWxpZCBKUEVHIGZpbGUgc3RydWN0dXJlOiAlcyBiZWZvcmUgU09GAElORgBBUl9MQUJFTElOR19USFJFU0hfTU9ERV9BVVRPX0FEQVBUSVZFAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9OT05FAEFSX0RFQlVHX0RJU0FCTEUAQVJfREVCVUdfRU5BQkxFAEFSX0lNQUdFX1BST0NfRlJBTUVfSU1BR0UAQVJfSU1BR0VfUFJPQ19GSUVMRF9JTUFHRQBBUl9ERUZBVUxUX1BBVFRFUk5fREVURUNUSU9OX01PREUAQVJfREVGQVVMVF9NQVJLRVJfRVhUUkFDVElPTl9NT0RFAEFSX0RFRkFVTFRfREVCVUdfTU9ERQBBUl9ERUZBVUxUX0xBQkVMSU5HX01PREUAQVJfREVGQVVMVF9JTUFHRV9QUk9DX01PREUAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX01BVENIX0NPTkZJREVOQ0UARVJST1JfQVJDT05UUk9MTEVSX05PVF9GT1VORABFUlJPUl9NVUxUSU1BUktFUl9OT1RfRk9VTkQAQVJfTUFSS0VSX0lORk9fQ1VUT0ZGX1BIQVNFX01BVENIX0JBUkNPREVfTk9UX0ZPVU5EAEFSX01BUktFUl9JTkZPX0NVVE9GRl9QSEFTRV9NQVRDSF9HRU5FUklDAE91dHB1dCBmaWxlIHdyaXRlIGVycm9yIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8AV3JpdGUgZmFpbGVkIG9uIHRlbXBvcmFyeSBmaWxlIC0tLSBvdXQgb2YgZGlzayBzcGFjZT8AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2hvcnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVuc2lnbmVkIGludD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZmxvYXQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDhfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dWludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGludDE2X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQzMl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBjaGFyPgBzdGQ6OmJhc2ljX3N0cmluZzx1bnNpZ25lZCBjaGFyPgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxzaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8bG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgbG9uZz4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8ZG91YmxlPgAwMTIzNDU2Nzg5ADljICAxNC1KYW4tMjAxOABDLlVURi04AEFSX01BVFJJWF9DT0RFXzV4NV9CQ0hfMjJfN183AEFSX01BVFJJWF9DT0RFXzZ4NgBBUl9NQVRSSVhfQ09ERV81eDUAQVJfTUFUUklYX0NPREVfNHg0X0JDSF8xM181XzUAQVJfTUFUUklYX0NPREVfNXg1X0JDSF8yMl8xMl81AEFSX01BVFJJWF9DT0RFXzN4M19QQVJJVFk2NQBBUl9NQVRSSVhfQ09ERV80eDQAQVJfTUFUUklYX0NPREVfM3gzAGZzZXQzAEFSX01BVFJJWF9DT0RFXzR4NF9CQ0hfMTNfOV8zAEFSX01BVFJJWF9DT0RFXzN4M19IQU1NSU5HNjMAQVJfVVNFX1RSQUNLSU5HX0hJU1RPUllfVjIAc2V0dXBBUjIAb24uAG9mZi4AKG51bGwpAEVtcHR5IEpQRUcgaW1hZ2UgKEROTCBub3Qgc3VwcG9ydGVkKQBJbnN1ZmZpY2llbnQgbWVtb3J5IChjYXNlICVkKQBQdXJlIHZpcnR1YWwgZnVuY3Rpb24gY2FsbGVkIQBFcnJvciByZWFkaW5nIGRhdGEgZnJvbSAlcy5mc2V0CgBSZWFkaW5nICVzLmZzZXQKAEVycm9yOiBrcG1TZXRSZWZEYXRhU2V0CgBFcnJvcjoga3BtQ2hhbmdlUGFnZU5vT2ZSZWZEYXRhU2V0CgBFcnJvcjoga3BtTWVyZ2VSZWZEYXRhU2V0CgBEZWJ1ZyBtb2RlIHNldCB0byAlcwoATkZUIG1hcmtlciBoZWlnaHQ6ICVpCgBORlQgbnVtLiBvZiBJbWFnZVNldDogJWkKAE5GVCBtYXJrZXIgZHBpOiAlaQoATkZUIG1hcmtlciB3aWR0aDogJWkKAExhYmVsaW5nIG1vZGUgc2V0IHRvICVkCgBUaHJlc2hvbGQgbW9kZSBzZXQgdG8gJWQKAFRocmVzaG9sZCBzZXQgdG8gJWQKAEFsbG9jYXRlZCB2aWRlb0ZyYW1lU2l6ZSAlZAoAVHJhY2tpbmcgbG9zdC4gJWQKAEVycm9yOiBtYWxsb2MKAEVycm9yIHJlYWRpbmcgS1BNIGRhdGEgZnJvbSAlcy5mc2V0MwoAUmVhZGluZyAlcy5mc2V0MwoAIyMjIEZlYXR1cmUgY2FuZGlkYXRlcyBmb3IgdHJhY2tpbmcgYXJlIG92ZXJmbG93LgoAbG9hZE1hcmtlcigpOiBFcnJvciBsb2FkaW5nIHBhdHRlcm4gZmlsZSAlcy4KAEFSVG9vbEtpdEpTKCk6IFVuYWJsZSB0byBzZXQgdXAgQVIgbXVsdGltYXJrZXIuCgBBUlRvb2xLaXRKUygpOiBVbmFibGUgdG8gc2V0IHVwIE5GVCBtYXJrZXIuCgBBUlRvb2xLaXRKUygpOiBVbmFibGUgdG8gc2V0IHVwIEFSIG1hcmtlci4KAFBhdHRlcm4gcmF0aW8gc2l6ZSBzZXQgdG8gJWYuCgBMb2FkaW5nIG9mIE5GVCBkYXRhIGNvbXBsZXRlLgoAc2V0Q2FtZXJhKCk6IEVycm9yOiBhclBhcmFtTFRDcmVhdGUuCgAgIERvbmUuCgBzZXR1cCgpOiBFcnJvcjogYXJQYXR0Q3JlYXRlSGFuZGxlLgoAc2V0Q2FtZXJhKCk6IEVycm9yOiBhckNyZWF0ZUhhbmRsZS4KAEVycm9yOiBhcjJDcmVhdGVIYW5kbGUuCgBQYXR0ZXJuIGRldGVjdGlvbiBtb2RlIHNldCB0byAlZC4KAEltYWdlIHByb2MuIG1vZGUgc2V0IHRvICVkLgoAICBBc3NpZ25lZCBwYWdlIG5vLiAlZC4KAGxvYWRDYW1lcmEoKTogRXJyb3IgbG9hZGluZyBwYXJhbWV0ZXIgZmlsZSAlcyBmb3IgY2FtZXJhLgoAVHJhY2tlZCBwYWdlICVkIChtYXggJWQpLgoAKioqIENhbWVyYSBQYXJhbWV0ZXIgcmVzaXplZCBmcm9tICVkLCAlZC4gKioqCgBPdXQgb2YgbWVtb3J5ISEKAGNvbmZpZyBkYXRhIGxvYWQgZXJyb3IgISEKAGlkZGRkZGRkZGRkZGRkAGkAaWlpZABBoLACC5QCaWlpaWlpaWRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRpAGlpaWlpaQBOU3QzX18yNnZlY3Rvckk5bmZ0TWFya2VyTlNfOWFsbG9jYXRvcklTMV9FRUVFABT6AABJmAAAUE5TdDNfXzI2dmVjdG9ySTluZnRNYXJrZXJOU185YWxsb2NhdG9ySVMxX0VFRUUA9PoAAICYAAAAAAAAeJgAAFBLTlN0M19fMjZ2ZWN0b3JJOW5mdE1hcmtlck5TXzlhbGxvY2F0b3JJUzFfRUVFRQAAAAD0+gAAwJgAAAEAAAB4mAAAaWkAdgB2aQCwmAAAUPkAALCYAAAomQAAOW5mdE1hcmtlcgAAFPoAAByZAAB2aWlpAEHAsgILUFD5AACwmAAA1PkAACiZAAB2aWlpaQAAANT5AAD0mAAAaWlpAISZAAB4mAAA1PkAAE4xMGVtc2NyaXB0ZW4zdmFsRQAAFPoAAHCZAABpaWlpAEGgswILFWj5AAB4mAAA1PkAACiZAABpaWlpaQBBwLMCC6sFsPkA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AAAAGQAAABIAAAALAAAAEwAAABoAAAAbAAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAAAAAAABAAAACAAAABAAAAAJAAAAAgAAAAoAAAARAAAAEgAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AQfTSAgvMBgEAAAAIAAAACQAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAAA/AAAAPwAAAD8AAABOU3QzX18yMTJiYXNpY19zdHJpbmdJaE5TXzExY2hhcl90cmFpdHNJaEVFTlNfOWFsbG9jYXRvckloRUVFRQAAFPoAAMCpAABOU3QzX18yMTJiYXNpY19zdHJpbmdJd05TXzExY2hhcl90cmFpdHNJd0VFTlNfOWFsbG9jYXRvckl3RUVFRQAAFPoAAAiqAABOU3QzX18yMTJiYXNpY19zdHJpbmdJRHNOU18xMWNoYXJfdHJhaXRzSURzRUVOU185YWxsb2NhdG9ySURzRUVFRQAAABT6AABQqgAATlN0M19fMjEyYmFzaWNfc3RyaW5nSURpTlNfMTFjaGFyX3RyYWl0c0lEaUVFTlNfOWFsbG9jYXRvcklEaUVFRUUAAAAU+gAAnKoAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWNFRQAAFPoAAOiqAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lhRUUAABT6AAAQqwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaEVFAAAU+gAAOKsAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SXNFRQAAFPoAAGCrAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0l0RUUAABT6AACIqwAATjEwZW1zY3JpcHRlbjExbWVtb3J5X3ZpZXdJaUVFAAAU+gAAsKsAAE4xMGVtc2NyaXB0ZW4xMW1lbW9yeV92aWV3SWpFRQAAFPoAANirAABOMTBlbXNjcmlwdGVuMTFtZW1vcnlfdmlld0lsRUUAABT6AAAArAAATjEwZW1zY3JpcHRl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ZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBNdWx0aWhvcCBhdHRlbXB0ZWQAQZKGAwuWAaUCWwDwAbUFjAUlAYMGHQOUBP8AxwMxAwsGvAGPAX8DygQrANoGrwBCA04D3AEOBBUAoQYNAZQCCwI4BmQCvAL/Al0D5wQLB88CywXvBdsF4QIeBkUChQCCAmwDbwTxAPMDGAXZANoDTAZUAnsBnQO9BAAAUQAVArsAswNtAP8BhQQvBfkEOABlAUYBnwC3BqgBcwJTAQBB2IcDCwwhBAAAAAAAAAAALwIAQfiHAwsGNQRHBFYEAEGOiAMLAqAEAEGiiAMLX0YFYAVuBWEGAADPAQAAAAAAAAAAyQbpBvkGAAAAABkACgAZGRkAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAGQARChkZGQMKBwABAAkLGAAACQYLAAALAAYZAAAAGRkZAEGRiQMLIQ4AAAAAAAAAABkACg0ZGRkADQAAAgAJDgAAAAkADgAADgBBy4kDCwEMAEHXiQMLFRMAAAAAEwAAAAAJDAAAAAAADAAADABBhYoDCwEQAEGRigMLFQ8AAAAEDwAAAAAJEAAAAAAAEAAAEABBv4oDCwESAEHLigMLHhEAAAAAEQAAAAAJEgAAAAAAEgAAEgAAGgAAABoaGgBBgosDCw4aAAAAGhoaAAAAAAAACQBBs4sDCwEUAEG/iwMLFRcAAAAAFwAAAAAJFAAAAAAAFAAAFABB7YsDCwEWAEH5iwMLJxUAAAAAFQAAAAAJFgAAAAAAFgAAFgAAMDEyMzQ1Njc4OUFCQ0RFRgBBxIwDCwICAQBB7IwDCwj//////////wBBsI0DC4MS0XSeAFedvSqAcFIP//8+JwoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFGAAAADUAAABxAAAAa////877//+Sv///AAAAAAAAAAD/////////////////////////////////////////////////////////////////AAECAwQFBgcICf////////8KCwwNDg8QERITFBUWFxgZGhscHR4fICEiI////////woLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIj/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wABAgQHAwYFAAAAAAAAAAIAAMADAADABAAAwAUAAMAGAADABwAAwAgAAMAJAADACgAAwAsAAMAMAADADQAAwA4AAMAPAADAEAAAwBEAAMASAADAEwAAwBQAAMAVAADAFgAAwBcAAMAYAADAGQAAwBoAAMAbAADAHAAAwB0AAMAeAADAHwAAwAAAALMBAADDAgAAwwMAAMMEAADDBQAAwwYAAMMHAADDCAAAwwkAAMMKAADDCwAAwwwAAMMNAADTDgAAww8AAMMAAAy7AQAMwwIADMMDAAzDBAAM2wAAAAAAAAAAAgAAAAMAAAAFAAAABwAAAAsAAAANAAAAEQAAABMAAAAXAAAAHQAAAB8AAAAlAAAAKQAAACsAAAAvAAAANQAAADsAAAA9AAAAQwAAAEcAAABJAAAATwAAAFMAAABZAAAAYQAAAGUAAABnAAAAawAAAG0AAABxAAAAfwAAAIMAAACJAAAAiwAAAJUAAACXAAAAnQAAAKMAAACnAAAArQAAALMAAAC1AAAAvwAAAMEAAADFAAAAxwAAANMAAAABAAAACwAAAA0AAAAR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")||(gA=IA,IA=A.locateFile?A.locateFile(gA,F):F+gA);var DA={65056:function(){var A=arguments,I=0;artoolkit.NFTMarkerInfo||(artoolkit.NFTMarkerInfo={id:0,error:-1,found:0,pose:[0,0,0,0,0,0,0,0,0,0,0,0]});var g=artoolkit.NFTMarkerInfo;g.id=A[I++],g.error=A[I++],g.found=1,g.pose[0]=A[I++],g.pose[1]=A[I++],g.pose[2]=A[I++],g.pose[3]=A[I++],g.pose[4]=A[I++],g.pose[5]=A[I++],g.pose[6]=A[I++],g.pose[7]=A[I++],g.pose[8]=A[I++],g.pose[9]=A[I++],g.pose[10]=A[I++],g.pose[11]=A[I++]},65753:function(){var A=arguments,I=0;artoolkit.NFTMarkerInfo||(artoolkit.NFTMarkerInfo={id:0,error:-1,found:0,pose:[0,0,0,0,0,0,0,0,0,0,0,0]});var g=artoolkit.NFTMarkerInfo;g.id=A[I++],g.error=-1,g.found=0,g.pose[0]=0,g.pose[1]=0,g.pose[2]=0,g.pose[3]=0,g.pose[4]=0,g.pose[5]=0,g.pose[6]=0,g.pose[7]=0,g.pose[8]=0,g.pose[9]=0,g.pose[10]=0,g.pose[11]=0},66373:function(A,I,g,B){artoolkit.multiEachMarkerInfo||(artoolkit.multiEachMarkerInfo={});var C=artoolkit.multiEachMarkerInfo;C.visible=A,C.pattId=I,C.pattType=g,C.width=B},66647:function(A,I,g,B,C,Q,E,i,o,D,a,t){var s=arguments,w=12;artoolkit.markerInfo||(artoolkit.markerInfo={pos:[0,0],line:[[0,0,0],[0,0,0],[0,0,0],[0,0,0]],vertex:[[0,0],[0,0],[0,0],[0,0]]});var G=artoolkit.markerInfo;G.area=A,G.id=I,G.idPatt=g,G.idMatrix=B,G.dir=C,G.dirPatt=Q,G.dirMatrix=E,G.cf=i,G.cfPatt=o,G.cfMatrix=D,G.pos[0]=a,G.pos[1]=t,G.line[0][0]=s[w++],G.line[0][1]=s[w++],G.line[0][2]=s[w++],G.line[1][0]=s[w++],G.line[1][1]=s[w++],G.line[1][2]=s[w++],G.line[2][0]=s[w++],G.line[2][1]=s[w++],G.line[2][2]=s[w++],G.line[3][0]=s[w++],G.line[3][1]=s[w++],G.line[3][2]=s[w++],G.vertex[0][0]=s[w++],G.vertex[0][1]=s[w++],G.vertex[1][0]=s[w++],G.vertex[1][1]=s[w++],G.vertex[2][0]=s[w++],G.vertex[2][1]=s[w++],G.vertex[3][0]=s[w++],G.vertex[3][1]=s[w++],G.errorCorrected=s[w++]},67982:function(A,I,g,B,C,Q){artoolkit.frameMalloc||(artoolkit.frameMalloc={});var E=artoolkit.frameMalloc;E.framepointer=I,E.framesize=g,E.camera=B,E.transform=C,E.videoLumaPointer=Q}};function aA(A){this.name="ExitStatus",this.message="Program terminated with exit("+A+")",this.status=A}function tA(I){for(;I.length>0;)I.shift()(A)}function sA(A){this.excPtr=A,this.ptr=A-24,this.set_type=function(A){l[this.ptr+4>>2]=A},this.get_type=function(){return l[this.ptr+4>>2]},this.set_destructor=function(A){l[this.ptr+8>>2]=A},this.get_destructor=function(){return l[this.ptr+8>>2]},this.set_refcount=function(A){d[this.ptr>>2]=A},this.set_caught=function(A){A=A?1:0,J[this.ptr+12|0]=A},this.get_caught=function(){return 0!=J[this.ptr+12|0]},this.set_rethrown=function(A){A=A?1:0,J[this.ptr+13|0]=A},this.get_rethrown=function(){return 0!=J[this.ptr+13|0]},this.init=function(A,I){this.set_adjusted_ptr(0),this.set_type(A),this.set_destructor(I),this.set_refcount(0),this.set_caught(!1),this.set_rethrown(!1)},this.add_ref=function(){var A=d[this.ptr>>2];d[this.ptr>>2]=A+1},this.release_ref=function(){var A=d[this.ptr>>2];return d[this.ptr>>2]=A-1,1===A},this.set_adjusted_ptr=function(A){l[this.ptr+16>>2]=A},this.get_adjusted_ptr=function(){return l[this.ptr+16>>2]},this.get_exception_ptr=function(){if(PI(this.get_type()))return l[this.excPtr>>2];var A=this.get_adjusted_ptr();return 0!==A?A:this.excPtr}}var wA={isAbs:function(A){return"/"===A.charAt(0)},splitPath:function(A){return/^(\\/?|)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?|)(\\.[^.\\/]*|))(?:[\\/]*)$/.exec(A).slice(1)},normalizeArray:function(A,I){for(var g=0,B=A.length-1;B>=0;B--){var C=A[B];"."===C?A.splice(B,1):".."===C?(A.splice(B,1),g++):g&&(A.splice(B,1),g--)}if(I)for(;g;g--)A.unshift("..");return A},normalize:function(A){var I=wA.isAbs(A),g="/"===A.substr(-1);return(A=wA.normalizeArray(A.split("/").filter(function(A){return!!A}),!I).join("/"))||I||(A="."),A&&g&&(A+="/"),(I?"/":"")+A},dirname:function(A){var I=wA.splitPath(A),g=I[0],B=I[1];return g||B?(B&&(B=B.substr(0,B.length-1)),g+B):"."},basename:function(A){if("/"===A)return"/";var I=(A=(A=wA.normalize(A)).replace(/\\/$/,"")).lastIndexOf("/");return-1===I?A:A.substr(I+1)},join:function(){var A=Array.prototype.slice.call(arguments);return wA.normalize(A.join("/"))},join2:function(A,I){return wA.normalize(A+"/"+I)}},GA={resolve:function(){for(var A="",I=!1,g=arguments.length-1;g>=-1&&!I;g--){var B=g>=0?arguments[g]:FA.cwd();if("string"!=typeof B)throw new TypeError("Arguments to path.resolve must be strings");if(!B)return"";A=B+"/"+A,I=wA.isAbs(B)}return(I?"/":"")+(A=wA.normalizeArray(A.split("/").filter(function(A){return!!A}),!I).join("/"))||"."},relative:function(A,I){function g(A){for(var I=0;I<A.length&&""===A[I];I++);for(var g=A.length-1;g>=0&&""===A[g];g--);return I>g?[]:A.slice(I,g-I+1)}A=GA.resolve(A).substr(1),I=GA.resolve(I).substr(1);for(var B=g(A.split("/")),C=g(I.split("/")),Q=Math.min(B.length,C.length),E=Q,i=0;i<Q;i++)if(B[i]!==C[i]){E=i;break}var o=[];for(i=E;i<B.length;i++)o.push("..");return(o=o.concat(C.slice(E))).join("/")}};function hA(A,I,g){var B=g>0?g:b(A)+1,C=new Array(B),Q=m(A,C,0,C.length);return I&&(C.length=Q),C}var rA={ttys:[],init:function(){},shutdown:function(){},register:function(A,I){rA.ttys[A]={input:[],output:[],ops:I},FA.registerDevice(A,rA.stream_ops)},stream_ops:{open:function(A){var I=rA.ttys[A.node.rdev];if(!I)throw new FA.ErrnoError(43);A.tty=I,A.seekable=!1},close:function(A){A.tty.ops.fsync(A.tty)},fsync:function(A){A.tty.ops.fsync(A.tty)},read:function(A,I,g,B,C){if(!A.tty||!A.tty.ops.get_char)throw new FA.ErrnoError(60);for(var Q=0,E=0;E<B;E++){var i;try{i=A.tty.ops.get_char(A.tty)}catch(A){throw new FA.ErrnoError(29)}if(void 0===i&&0===Q)throw new FA.ErrnoError(6);if(null==i)break;Q++,I[g+E]=i}return Q&&(A.node.timestamp=Date.now()),Q},write:function(A,I,g,B,C){if(!A.tty||!A.tty.ops.put_char)throw new FA.ErrnoError(60);try{for(var Q=0;Q<B;Q++)A.tty.ops.put_char(A.tty,I[g+Q])}catch(A){throw new FA.ErrnoError(29)}return B&&(A.node.timestamp=Date.now()),Q}},default_tty_ops:{get_char:function(A){if(!A.input.length){var I=null;if(y){var g=Buffer.alloc(256),B=0;try{B=o.readSync(process.stdin.fd,g,0,256,-1)}catch(A){if(!A.toString().includes("EOF"))throw A;B=0}I=B>0?g.slice(0,B).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(I=window.prompt("Input: "))&&(I+="\\n"):"function"==typeof readline&&null!==(I=readline())&&(I+="\\n");if(!I)return null;A.input=hA(I,!0)}return A.input.shift()},put_char:function(A,I){null===I||10===I?(n(f(A.output,0)),A.output=[]):0!=I&&A.output.push(I)},fsync:function(A){A.output&&A.output.length>0&&(n(f(A.output,0)),A.output=[])}},default_tty1_ops:{put_char:function(A,I){null===I||10===I?(M(f(A.output,0)),A.output=[]):0!=I&&A.output.push(I)},fsync:function(A){A.output&&A.output.length>0&&(M(f(A.output,0)),A.output=[])}}};function RA(A){AA()}var yA={ops_table:null,mount:function(A){return yA.createNode(null,"/",16895,0)},createNode:function(A,I,g,B){if(FA.isBlkdev(g)||FA.isFIFO(g))throw new FA.ErrnoError(63);yA.ops_table||(yA.ops_table={dir:{node:{getattr:yA.node_ops.getattr,setattr:yA.node_ops.setattr,lookup:yA.node_ops.lookup,mknod:yA.node_ops.mknod,rename:yA.node_ops.rename,unlink:yA.node_ops.unlink,rmdir:yA.node_ops.rmdir,readdir:yA.node_ops.readdir,symlink:yA.node_ops.symlink},stream:{llseek:yA.stream_ops.llseek}},file:{node:{getattr:yA.node_ops.getattr,setattr:yA.node_ops.setattr},stream:{llseek:yA.stream_ops.llseek,read:yA.stream_ops.read,write:yA.stream_ops.write,allocate:yA.stream_ops.allocate,mmap:yA.stream_ops.mmap,msync:yA.stream_ops.msync}},link:{node:{getattr:yA.node_ops.getattr,setattr:yA.node_ops.setattr,readlink:yA.node_ops.readlink},stream:{}},chrdev:{node:{getattr:yA.node_ops.getattr,setattr:yA.node_ops.setattr},stream:FA.chrdev_stream_ops}});var C=FA.createNode(A,I,g,B);return FA.isDir(C.mode)?(C.node_ops=yA.ops_table.dir.node,C.stream_ops=yA.ops_table.dir.stream,C.contents={}):FA.isFile(C.mode)?(C.node_ops=yA.ops_table.file.node,C.stream_ops=yA.ops_table.file.stream,C.usedBytes=0,C.contents=null):FA.isLink(C.mode)?(C.node_ops=yA.ops_table.link.node,C.stream_ops=yA.ops_table.link.stream):FA.isChrdev(C.mode)&&(C.node_ops=yA.ops_table.chrdev.node,C.stream_ops=yA.ops_table.chrdev.stream),C.timestamp=Date.now(),A&&(A.contents[I]=C,A.timestamp=C.timestamp),C},getFileDataAsTypedArray:function(A){return A.contents?A.contents.subarray?A.contents.subarray(0,A.usedBytes):new Uint8Array(A.contents):new Uint8Array(0)},expandFileStorage:function(A,I){var g=A.contents?A.contents.length:0;if(!(g>=I)){I=Math.max(I,g*(g<1048576?2:1.125)>>>0),0!=g&&(I=Math.max(I,256));var B=A.contents;A.contents=new Uint8Array(I),A.usedBytes>0&&A.contents.set(B.subarray(0,A.usedBytes),0)}},resizeFileStorage:function(A,I){if(A.usedBytes!=I)if(0==I)A.contents=null,A.usedBytes=0;else{var g=A.contents;A.contents=new Uint8Array(I),g&&A.contents.set(g.subarray(0,Math.min(I,A.usedBytes))),A.usedBytes=I}},node_ops:{getattr:function(A){var I={};return I.dev=FA.isChrdev(A.mode)?A.id:1,I.ino=A.id,I.mode=A.mode,I.nlink=1,I.uid=0,I.gid=0,I.rdev=A.rdev,FA.isDir(A.mode)?I.size=4096:FA.isFile(A.mode)?I.size=A.usedBytes:FA.isLink(A.mode)?I.size=A.link.length:I.size=0,I.atime=new Date(A.timestamp),I.mtime=new Date(A.timestamp),I.ctime=new Date(A.timestamp),I.blksize=4096,I.blocks=Math.ceil(I.size/I.blksize),I},setattr:function(A,I){void 0!==I.mode&&(A.mode=I.mode),void 0!==I.timestamp&&(A.timestamp=I.timestamp),void 0!==I.size&&yA.resizeFileStorage(A,I.size)},lookup:function(A,I){throw FA.genericErrors[44]},mknod:function(A,I,g,B){return yA.createNode(A,I,g,B)},rename:function(A,I,g){if(FA.isDir(A.mode)){var B;try{B=FA.lookupNode(I,g)}catch(A){}if(B)for(var C in B.contents)throw new FA.ErrnoError(55)}delete A.parent.contents[A.name],A.parent.timestamp=Date.now(),A.name=g,I.contents[g]=A,I.timestamp=A.parent.timestamp,A.parent=I},unlink:function(A,I){delete A.contents[I],A.timestamp=Date.now()},rmdir:function(A,I){var g=FA.lookupNode(A,I);for(var B in g.contents)throw new FA.ErrnoError(55);delete A.contents[I],A.timestamp=Date.now()},readdir:function(A){var I=[".",".."];for(var g in A.contents)A.contents.hasOwnProperty(g)&&I.push(g);return I},symlink:function(A,I,g){var B=yA.createNode(A,I,41471,0);return B.link=g,B},readlink:function(A){if(!FA.isLink(A.mode))throw new FA.ErrnoError(28);return A.link}},stream_ops:{read:function(A,I,g,B,C){var Q=A.node.contents;if(C>=A.node.usedBytes)return 0;var E=Math.min(A.node.usedBytes-C,B);if(E>8&&Q.subarray)I.set(Q.subarray(C,C+E),g);else for(var i=0;i<E;i++)I[g+i]=Q[C+i];return E},write:function(A,I,g,B,C,Q){if(I.buffer===J.buffer&&(Q=!1),!B)return 0;var E=A.node;if(E.timestamp=Date.now(),I.subarray&&(!E.contents||E.contents.subarray)){if(Q)return E.contents=I.subarray(g,g+B),E.usedBytes=B,B;if(0===E.usedBytes&&0===C)return E.contents=I.slice(g,g+B),E.usedBytes=B,B;if(C+B<=E.usedBytes)return E.contents.set(I.subarray(g,g+B),C),B}if(yA.expandFileStorage(E,C+B),E.contents.subarray&&I.subarray)E.contents.set(I.subarray(g,g+B),C);else for(var i=0;i<B;i++)E.contents[C+i]=I[g+i];return E.usedBytes=Math.max(E.usedBytes,C+B),B},llseek:function(A,I,g){var B=I;if(1===g?B+=A.position:2===g&&FA.isFile(A.node.mode)&&(B+=A.node.usedBytes),B<0)throw new FA.ErrnoError(28);return B},allocate:function(A,I,g){yA.expandFileStorage(A.node,I+g),A.node.usedBytes=Math.max(A.node.usedBytes,I+g)},mmap:function(A,I,g,B,C){if(!FA.isFile(A.node.mode))throw new FA.ErrnoError(43);var Q,E,i=A.node.contents;if(2&C||i.buffer!==U){if((g>0||g+I<i.length)&&(i=i.subarray?i.subarray(g,g+I):Array.prototype.slice.call(i,g,g+I)),E=!0,!(Q=RA()))throw new FA.ErrnoError(48);J.set(i,Q)}else E=!1,Q=i.byteOffset;return{ptr:Q,allocated:E}},msync:function(A,I,g,B,C){if(!FA.isFile(A.node.mode))throw new FA.ErrnoError(43);return 2&C||yA.stream_ops.write(A,I,0,B,g,!1),0}}},FA={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(A){var I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(!(A=GA.resolve(FA.cwd(),A)))return{path:"",node:null};if((I=Object.assign({follow_mount:!0,recurse_count:0},I)).recurse_count>8)throw new FA.ErrnoError(32);for(var g=wA.normalizeArray(A.split("/").filter(function(A){return!!A}),!1),B=FA.root,C="/",Q=0;Q<g.length;Q++){var E=Q===g.length-1;if(E&&I.parent)break;if(B=FA.lookupNode(B,g[Q]),C=wA.join2(C,g[Q]),FA.isMountpoint(B)&&(!E||E&&I.follow_mount)&&(B=B.mounted.root),!E||I.follow)for(var i=0;FA.isLink(B.mode);){var o=FA.readlink(C);if(C=GA.resolve(wA.dirname(C),o),B=FA.lookupPath(C,{recurse_count:I.recurse_count+1}).node,i++>40)throw new FA.ErrnoError(32)}}return{path:C,node:B}},getPath:function(A){for(var I;;){if(FA.isRoot(A)){var g=A.mount.mountpoint;return I?"/"!==g[g.length-1]?g+"/"+I:g+I:g}I=I?A.name+"/"+I:A.name,A=A.parent}},hashName:function(A,I){for(var g=0,B=0;B<I.length;B++)g=(g<<5)-g+I.charCodeAt(B)|0;return(A+g>>>0)%FA.nameTable.length},hashAddNode:function(A){var I=FA.hashName(A.parent.id,A.name);A.name_next=FA.nameTable[I],FA.nameTable[I]=A},hashRemoveNode:function(A){var I=FA.hashName(A.parent.id,A.name);if(FA.nameTable[I]===A)FA.nameTable[I]=A.name_next;else for(var g=FA.nameTable[I];g;){if(g.name_next===A){g.name_next=A.name_next;break}g=g.name_next}},lookupNode:function(A,I){var g=FA.mayLookup(A);if(g)throw new FA.ErrnoError(g,A);for(var B=FA.hashName(A.id,I),C=FA.nameTable[B];C;C=C.name_next){var Q=C.name;if(C.parent.id===A.id&&Q===I)return C}return FA.lookup(A,I)},createNode:function(A,I,g,B){var C=new FA.FSNode(A,I,g,B);return FA.hashAddNode(C),C},destroyNode:function(A){FA.hashRemoveNode(A)},isRoot:function(A){return A===A.parent},isMountpoint:function(A){return!!A.mounted},isFile:function(A){return 32768==(61440&A)},isDir:function(A){return 16384==(61440&A)},isLink:function(A){return 40960==(61440&A)},isChrdev:function(A){return 8192==(61440&A)},isBlkdev:function(A){return 24576==(61440&A)},isFIFO:function(A){return 4096==(61440&A)},isSocket:function(A){return!(49152&~A)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(A){var I=FA.flagModes[A];if(void 0===I)throw new Error("Unknown file open mode: "+A);return I},flagsToPermissionString:function(A){var I=["r","w","rw"][3&A];return 512&A&&(I+="w"),I},nodePermissions:function(A,I){return FA.ignorePermissions||(!I.includes("r")||292&A.mode)&&(!I.includes("w")||146&A.mode)&&(!I.includes("x")||73&A.mode)?0:2},mayLookup:function(A){return FA.nodePermissions(A,"x")||(A.node_ops.lookup?0:2)},mayCreate:function(A,I){try{return FA.lookupNode(A,I),20}catch(A){}return FA.nodePermissions(A,"wx")},mayDelete:function(A,I,g){var B;try{B=FA.lookupNode(A,I)}catch(A){return A.errno}var C=FA.nodePermissions(A,"wx");if(C)return C;if(g){if(!FA.isDir(B.mode))return 54;if(FA.isRoot(B)||FA.getPath(B)===FA.cwd())return 10}else if(FA.isDir(B.mode))return 31;return 0},mayOpen:function(A,I){return A?FA.isLink(A.mode)?32:FA.isDir(A.mode)&&("r"!==FA.flagsToPermissionString(I)||512&I)?31:FA.nodePermissions(A,FA.flagsToPermissionString(I)):44},MAX_OPEN_FDS:4096,nextfd:function(){for(var A=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,I=arguments.length>1&&void 0!==arguments[1]?arguments[1]:FA.MAX_OPEN_FDS,g=A;g<=I;g++)if(!FA.streams[g])return g;throw new FA.ErrnoError(33)},getStream:function(A){return FA.streams[A]},createStream:function(A,I,g){FA.FSStream||(FA.FSStream=function(){this.shared={}},FA.FSStream.prototype={},Object.defineProperties(FA.FSStream.prototype,{object:{get:function(){return this.node},set:function(A){this.node=A}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return!!(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}},flags:{get:function(){return this.shared.flags},set:function(A){this.shared.flags=A}},position:{get:function(){return this.shared.position},set:function(A){this.shared.position=A}}})),A=Object.assign(new FA.FSStream,A);var B=FA.nextfd(I,g);return A.fd=B,FA.streams[B]=A,A},closeStream:function(A){FA.streams[A]=null},chrdev_stream_ops:{open:function(A){var I=FA.getDevice(A.node.rdev);A.stream_ops=I.stream_ops,A.stream_ops.open&&A.stream_ops.open(A)},llseek:function(){throw new FA.ErrnoError(70)}},major:function(A){return A>>8},minor:function(A){return 255&A},makedev:function(A,I){return A<<8|I},registerDevice:function(A,I){FA.devices[A]={stream_ops:I}},getDevice:function(A){return FA.devices[A]},getMounts:function(A){for(var I=[],g=[A];g.length;){var B=g.pop();I.push(B),g.push.apply(g,B.mounts)}return I},syncfs:function(A,I){"function"==typeof A&&(I=A,A=!1),FA.syncFSRequests++,FA.syncFSRequests>1&&M("warning: "+FA.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var g=FA.getMounts(FA.root.mount),B=0;function C(A){return FA.syncFSRequests--,I(A)}function Q(A){if(A)return Q.errored?void 0:(Q.errored=!0,C(A));++B>=g.length&&C(null)}g.forEach(function(I){if(!I.type.syncfs)return Q(null);I.type.syncfs(I,A,Q)})},mount:function(A,I,g){var B,C="/"===g,Q=!g;if(C&&FA.root)throw new FA.ErrnoError(10);if(!C&&!Q){var E=FA.lookupPath(g,{follow_mount:!1});if(g=E.path,B=E.node,FA.isMountpoint(B))throw new FA.ErrnoError(10);if(!FA.isDir(B.mode))throw new FA.ErrnoError(54)}var i={type:A,opts:I,mountpoint:g,mounts:[]},o=A.mount(i);return o.mount=i,i.root=o,C?FA.root=o:B&&(B.mounted=i,B.mount&&B.mount.mounts.push(i)),o},unmount:function(A){var I=FA.lookupPath(A,{follow_mount:!1});if(!FA.isMountpoint(I.node))throw new FA.ErrnoError(28);var g=I.node,B=g.mounted,C=FA.getMounts(B);Object.keys(FA.nameTable).forEach(function(A){for(var I=FA.nameTable[A];I;){var g=I.name_next;C.includes(I.mount)&&FA.destroyNode(I),I=g}}),g.mounted=null;var Q=g.mount.mounts.indexOf(B);g.mount.mounts.splice(Q,1)},lookup:function(A,I){return A.node_ops.lookup(A,I)},mknod:function(A,I,g){var B=FA.lookupPath(A,{parent:!0}).node,C=wA.basename(A);if(!C||"."===C||".."===C)throw new FA.ErrnoError(28);var Q=FA.mayCreate(B,C);if(Q)throw new FA.ErrnoError(Q);if(!B.node_ops.mknod)throw new FA.ErrnoError(63);return B.node_ops.mknod(B,C,I,g)},create:function(A,I){return I=void 0!==I?I:438,I&=4095,I|=32768,FA.mknod(A,I,0)},mkdir:function(A,I){return I=void 0!==I?I:511,I&=1023,I|=16384,FA.mknod(A,I,0)},mkdirTree:function(A,I){for(var g=A.split("/"),B="",C=0;C<g.length;++C)if(g[C]){B+="/"+g[C];try{FA.mkdir(B,I)}catch(A){if(20!=A.errno)throw A}}},mkdev:function(A,I,g){return void 0===g&&(g=I,I=438),I|=8192,FA.mknod(A,I,g)},symlink:function(A,I){if(!GA.resolve(A))throw new FA.ErrnoError(44);var g=FA.lookupPath(I,{parent:!0}).node;if(!g)throw new FA.ErrnoError(44);var B=wA.basename(I),C=FA.mayCreate(g,B);if(C)throw new FA.ErrnoError(C);if(!g.node_ops.symlink)throw new FA.ErrnoError(63);return g.node_ops.symlink(g,B,A)},rename:function(A,I){var g,B,C=wA.dirname(A),Q=wA.dirname(I),E=wA.basename(A),i=wA.basename(I);if(g=FA.lookupPath(A,{parent:!0}).node,B=FA.lookupPath(I,{parent:!0}).node,!g||!B)throw new FA.ErrnoError(44);if(g.mount!==B.mount)throw new FA.ErrnoError(75);var o,D=FA.lookupNode(g,E),a=GA.relative(A,Q);if("."!==a.charAt(0))throw new FA.ErrnoError(28);if("."!==(a=GA.relative(I,C)).charAt(0))throw new FA.ErrnoError(55);try{o=FA.lookupNode(B,i)}catch(A){}if(D!==o){var t=FA.isDir(D.mode),s=FA.mayDelete(g,E,t);if(s)throw new FA.ErrnoError(s);if(s=o?FA.mayDelete(B,i,t):FA.mayCreate(B,i))throw new FA.ErrnoError(s);if(!g.node_ops.rename)throw new FA.ErrnoError(63);if(FA.isMountpoint(D)||o&&FA.isMountpoint(o))throw new FA.ErrnoError(10);if(B!==g&&(s=FA.nodePermissions(g,"w")))throw new FA.ErrnoError(s);FA.hashRemoveNode(D);try{g.node_ops.rename(D,B,i)}catch(A){throw A}finally{FA.hashAddNode(D)}}},rmdir:function(A){var I=FA.lookupPath(A,{parent:!0}).node,g=wA.basename(A),B=FA.lookupNode(I,g),C=FA.mayDelete(I,g,!0);if(C)throw new FA.ErrnoError(C);if(!I.node_ops.rmdir)throw new FA.ErrnoError(63);if(FA.isMountpoint(B))throw new FA.ErrnoError(10);I.node_ops.rmdir(I,g),FA.destroyNode(B)},readdir:function(A){var I=FA.lookupPath(A,{follow:!0}).node;if(!I.node_ops.readdir)throw new FA.ErrnoError(54);return I.node_ops.readdir(I)},unlink:function(A){var I=FA.lookupPath(A,{parent:!0}).node;if(!I)throw new FA.ErrnoError(44);var g=wA.basename(A),B=FA.lookupNode(I,g),C=FA.mayDelete(I,g,!1);if(C)throw new FA.ErrnoError(C);if(!I.node_ops.unlink)throw new FA.ErrnoError(63);if(FA.isMountpoint(B))throw new FA.ErrnoError(10);I.node_ops.unlink(I,g),FA.destroyNode(B)},readlink:function(A){var I=FA.lookupPath(A).node;if(!I)throw new FA.ErrnoError(44);if(!I.node_ops.readlink)throw new FA.ErrnoError(28);return GA.resolve(FA.getPath(I.parent),I.node_ops.readlink(I))},stat:function(A,I){var g=FA.lookupPath(A,{follow:!I}).node;if(!g)throw new FA.ErrnoError(44);if(!g.node_ops.getattr)throw new FA.ErrnoError(63);return g.node_ops.getattr(g)},lstat:function(A){return FA.stat(A,!0)},chmod:function(A,I,g){var B;if(!(B="string"==typeof A?FA.lookupPath(A,{follow:!g}).node:A).node_ops.setattr)throw new FA.ErrnoError(63);B.node_ops.setattr(B,{mode:4095&I|-4096&B.mode,timestamp:Date.now()})},lchmod:function(A,I){FA.chmod(A,I,!0)},fchmod:function(A,I){var g=FA.getStream(A);if(!g)throw new FA.ErrnoError(8);FA.chmod(g.node,I)},chown:function(A,I,g,B){var C;if(!(C="string"==typeof A?FA.lookupPath(A,{follow:!B}).node:A).node_ops.setattr)throw new FA.ErrnoError(63);C.node_ops.setattr(C,{timestamp:Date.now()})},lchown:function(A,I,g){FA.chown(A,I,g,!0)},fchown:function(A,I,g){var B=FA.getStream(A);if(!B)throw new FA.ErrnoError(8);FA.chown(B.node,I,g)},truncate:function(A,I){if(I<0)throw new FA.ErrnoError(28);var g;if(!(g="string"==typeof A?FA.lookupPath(A,{follow:!0}).node:A).node_ops.setattr)throw new FA.ErrnoError(63);if(FA.isDir(g.mode))throw new FA.ErrnoError(31);if(!FA.isFile(g.mode))throw new FA.ErrnoError(28);var B=FA.nodePermissions(g,"w");if(B)throw new FA.ErrnoError(B);g.node_ops.setattr(g,{size:I,timestamp:Date.now()})},ftruncate:function(A,I){var g=FA.getStream(A);if(!g)throw new FA.ErrnoError(8);if(!(2097155&g.flags))throw new FA.ErrnoError(28);FA.truncate(g.node,I)},utime:function(A,I,g){var B=FA.lookupPath(A,{follow:!0}).node;B.node_ops.setattr(B,{timestamp:Math.max(I,g)})},open:function(I,g,B){if(""===I)throw new FA.ErrnoError(44);var C;if(B=void 0===B?438:B,B=64&(g="string"==typeof g?FA.modeStringToFlags(g):g)?4095&B|32768:0,"object"==i(I))C=I;else{I=wA.normalize(I);try{C=FA.lookupPath(I,{follow:!(131072&g)}).node}catch(A){}}var Q=!1;if(64&g)if(C){if(128&g)throw new FA.ErrnoError(20)}else C=FA.mknod(I,B,0),Q=!0;if(!C)throw new FA.ErrnoError(44);if(FA.isChrdev(C.mode)&&(g&=-513),65536&g&&!FA.isDir(C.mode))throw new FA.ErrnoError(54);if(!Q){var E=FA.mayOpen(C,g);if(E)throw new FA.ErrnoError(E)}512&g&&!Q&&FA.truncate(C,0),g&=-131713;var o=FA.createStream({node:C,path:FA.getPath(C),flags:g,seekable:!0,position:0,stream_ops:C.stream_ops,ungotten:[],error:!1});return o.stream_ops.open&&o.stream_ops.open(o),!A.logReadFiles||1&g||(FA.readFiles||(FA.readFiles={}),I in FA.readFiles||(FA.readFiles[I]=1)),o},close:function(A){if(FA.isClosed(A))throw new FA.ErrnoError(8);A.getdents&&(A.getdents=null);try{A.stream_ops.close&&A.stream_ops.close(A)}catch(A){throw A}finally{FA.closeStream(A.fd)}A.fd=null},isClosed:function(A){return null===A.fd},llseek:function(A,I,g){if(FA.isClosed(A))throw new FA.ErrnoError(8);if(!A.seekable||!A.stream_ops.llseek)throw new FA.ErrnoError(70);if(0!=g&&1!=g&&2!=g)throw new FA.ErrnoError(28);return A.position=A.stream_ops.llseek(A,I,g),A.ungotten=[],A.position},read:function(A,I,g,B,C){if(B<0||C<0)throw new FA.ErrnoError(28);if(FA.isClosed(A))throw new FA.ErrnoError(8);if(1==(2097155&A.flags))throw new FA.ErrnoError(8);if(FA.isDir(A.node.mode))throw new FA.ErrnoError(31);if(!A.stream_ops.read)throw new FA.ErrnoError(28);var Q=void 0!==C;if(Q){if(!A.seekable)throw new FA.ErrnoError(70)}else C=A.position;var E=A.stream_ops.read(A,I,g,B,C);return Q||(A.position+=E),E},write:function(A,I,g,B,C,Q){if(B<0||C<0)throw new FA.ErrnoError(28);if(FA.isClosed(A))throw new FA.ErrnoError(8);if(!(2097155&A.flags))throw new FA.ErrnoError(8);if(FA.isDir(A.node.mode))throw new FA.ErrnoError(31);if(!A.stream_ops.write)throw new FA.ErrnoError(28);A.seekable&&1024&A.flags&&FA.llseek(A,0,2);var E=void 0!==C;if(E){if(!A.seekable)throw new FA.ErrnoError(70)}else C=A.position;var i=A.stream_ops.write(A,I,g,B,C,Q);return E||(A.position+=i),i},allocate:function(A,I,g){if(FA.isClosed(A))throw new FA.ErrnoError(8);if(I<0||g<=0)throw new FA.ErrnoError(28);if(!(2097155&A.flags))throw new FA.ErrnoError(8);if(!FA.isFile(A.node.mode)&&!FA.isDir(A.node.mode))throw new FA.ErrnoError(43);if(!A.stream_ops.allocate)throw new FA.ErrnoError(138);A.stream_ops.allocate(A,I,g)},mmap:function(A,I,g,B,C){if(2&B&&!(2&C)&&2!=(2097155&A.flags))throw new FA.ErrnoError(2);if(1==(2097155&A.flags))throw new FA.ErrnoError(2);if(!A.stream_ops.mmap)throw new FA.ErrnoError(43);return A.stream_ops.mmap(A,I,g,B,C)},msync:function(A,I,g,B,C){return A&&A.stream_ops.msync?A.stream_ops.msync(A,I,g,B,C):0},munmap:function(A){return 0},ioctl:function(A,I,g){if(!A.stream_ops.ioctl)throw new FA.ErrnoError(59);return A.stream_ops.ioctl(A,I,g)},readFile:function(A){var I,g=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(g.flags=g.flags||0,g.encoding=g.encoding||"binary","utf8"!==g.encoding&&"binary"!==g.encoding)throw new Error('Invalid encoding type "'+g.encoding+'"');var B=FA.open(A,g.flags),C=FA.stat(A).size,Q=new Uint8Array(C);return FA.read(B,Q,0,C,0),"utf8"===g.encoding?I=f(Q,0):"binary"===g.encoding&&(I=Q),FA.close(B),I},writeFile:function(A,I){var g=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};g.flags=g.flags||577;var B=FA.open(A,g.flags,g.mode);if("string"==typeof I){var C=new Uint8Array(b(I)+1),Q=m(I,C,0,C.length);FA.write(B,C,0,Q,void 0,g.canOwn)}else{if(!ArrayBuffer.isView(I))throw new Error("Unsupported data type");FA.write(B,I,0,I.byteLength,void 0,g.canOwn)}FA.close(B)},cwd:function(){return FA.currentPath},chdir:function(A){var I=FA.lookupPath(A,{follow:!0});if(null===I.node)throw new FA.ErrnoError(44);if(!FA.isDir(I.node.mode))throw new FA.ErrnoError(54);var g=FA.nodePermissions(I.node,"x");if(g)throw new FA.ErrnoError(g);FA.currentPath=I.path},createDefaultDirectories:function(){FA.mkdir("/tmp"),FA.mkdir("/home"),FA.mkdir("/home/web_user")},createDefaultDevices:function(){FA.mkdir("/dev"),FA.registerDevice(FA.makedev(1,3),{read:function(){return 0},write:function(A,I,g,B,C){return B}}),FA.mkdev("/dev/null",FA.makedev(1,3)),rA.register(FA.makedev(5,0),rA.default_tty_ops),rA.register(FA.makedev(6,0),rA.default_tty1_ops),FA.mkdev("/dev/tty",FA.makedev(5,0)),FA.mkdev("/dev/tty1",FA.makedev(6,0));var A=function(){if("object"==("undefined"==typeof crypto?"undefined":i(crypto))&&"function"==typeof crypto.getRandomValues){var A=new Uint8Array(1);return function(){return crypto.getRandomValues(A),A[0]}}if(y)try{var I=B(902);return function(){return I.randomBytes(1)[0]}}catch(A){}return function(){return AA("randomDevice")}}();FA.createDevice("/dev","random",A),FA.createDevice("/dev","urandom",A),FA.mkdir("/dev/shm"),FA.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){FA.mkdir("/proc");var A=FA.mkdir("/proc/self");FA.mkdir("/proc/self/fd"),FA.mount({mount:function(){var I=FA.createNode(A,"fd",16895,73);return I.node_ops={lookup:function(A,I){var g=+I,B=FA.getStream(g);if(!B)throw new FA.ErrnoError(8);var C={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return B.path}}};return C.parent=C,C}},I}},{},"/proc/self/fd")},createStandardStreams:function(){A.stdin?FA.createDevice("/dev","stdin",A.stdin):FA.symlink("/dev/tty","/dev/stdin"),A.stdout?FA.createDevice("/dev","stdout",null,A.stdout):FA.symlink("/dev/tty","/dev/stdout"),A.stderr?FA.createDevice("/dev","stderr",null,A.stderr):FA.symlink("/dev/tty1","/dev/stderr"),FA.open("/dev/stdin",0),FA.open("/dev/stdout",1),FA.open("/dev/stderr",1)},ensureErrnoError:function(){FA.ErrnoError||(FA.ErrnoError=function(A,I){this.node=I,this.setErrno=function(A){this.errno=A},this.setErrno(A),this.message="FS error"},FA.ErrnoError.prototype=new Error,FA.ErrnoError.prototype.constructor=FA.ErrnoError,[44].forEach(function(A){FA.genericErrors[A]=new FA.ErrnoError(A),FA.genericErrors[A].stack="<generic error, no stack>"}))},staticInit:function(){FA.ensureErrnoError(),FA.nameTable=new Array(4096),FA.mount(yA,{},"/"),FA.createDefaultDirectories(),FA.createDefaultDevices(),FA.createSpecialDirectories(),FA.filesystems={MEMFS:yA}},init:function(I,g,B){FA.init.initialized=!0,FA.ensureErrnoError(),A.stdin=I||A.stdin,A.stdout=g||A.stdout,A.stderr=B||A.stderr,FA.createStandardStreams()},quit:function(){FA.init.initialized=!1;for(var A=0;A<FA.streams.length;A++){var I=FA.streams[A];I&&FA.close(I)}},getMode:function(A,I){var g=0;return A&&(g|=365),I&&(g|=146),g},findObject:function(A,I){var g=FA.analyzePath(A,I);return g.exists?g.object:null},analyzePath:function(A,I){try{A=(B=FA.lookupPath(A,{follow:!I})).path}catch(A){}var g={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var B=FA.lookupPath(A,{parent:!0});g.parentExists=!0,g.parentPath=B.path,g.parentObject=B.node,g.name=wA.basename(A),B=FA.lookupPath(A,{follow:!I}),g.exists=!0,g.path=B.path,g.object=B.node,g.name=B.node.name,g.isRoot="/"===B.path}catch(A){g.error=A.errno}return g},createPath:function(A,I,g,B){A="string"==typeof A?A:FA.getPath(A);for(var C=I.split("/").reverse();C.length;){var Q=C.pop();if(Q){var E=wA.join2(A,Q);try{FA.mkdir(E)}catch(A){}A=E}}return E},createFile:function(A,I,g,B,C){var Q=wA.join2("string"==typeof A?A:FA.getPath(A),I),E=FA.getMode(B,C);return FA.create(Q,E)},createDataFile:function(A,I,g,B,C,Q){var E=I;A&&(A="string"==typeof A?A:FA.getPath(A),E=I?wA.join2(A,I):A);var i=FA.getMode(B,C),o=FA.create(E,i);if(g){if("string"==typeof g){for(var D=new Array(g.length),a=0,t=g.length;a<t;++a)D[a]=g.charCodeAt(a);g=D}FA.chmod(o,146|i);var s=FA.open(o,577);FA.write(s,g,0,g.length,0,Q),FA.close(s),FA.chmod(o,i)}return o},createDevice:function(A,I,g,B){var C=wA.join2("string"==typeof A?A:FA.getPath(A),I),Q=FA.getMode(!!g,!!B);FA.createDevice.major||(FA.createDevice.major=64);var E=FA.makedev(FA.createDevice.major++,0);return FA.registerDevice(E,{open:function(A){A.seekable=!1},close:function(A){B&&B.buffer&&B.buffer.length&&B(10)},read:function(A,I,B,C,Q){for(var E=0,i=0;i<C;i++){var o;try{o=g()}catch(A){throw new FA.ErrnoError(29)}if(void 0===o&&0===E)throw new FA.ErrnoError(6);if(null==o)break;E++,I[B+i]=o}return E&&(A.node.timestamp=Date.now()),E},write:function(A,I,g,C,Q){for(var E=0;E<C;E++)try{B(I[g+E])}catch(A){throw new FA.ErrnoError(29)}return C&&(A.node.timestamp=Date.now()),E}}),FA.mkdev(C,Q,E)},forceLoadFile:function(A){if(A.isDevice||A.isFolder||A.link||A.contents)return!0;if("undefined"!=typeof XMLHttpRequest)throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(!C)throw new Error("Cannot load without read() or XMLHttpRequest.");try{A.contents=hA(C(A.url),!0),A.usedBytes=A.contents.length}catch(A){throw new FA.ErrnoError(29)}},createLazyFile:function(A,I,g,B,C){function Q(){this.lengthKnown=!1,this.chunks=[]}if(Q.prototype.get=function(A){if(!(A>this.length-1||A<0)){var I=A%this.chunkSize,g=A/this.chunkSize|0;return this.getter(g)[I]}},Q.prototype.setDataGetter=function(A){this.getter=A},Q.prototype.cacheLength=function(){var A=new XMLHttpRequest;if(A.open("HEAD",g,!1),A.send(null),!(A.status>=200&&A.status<300||304===A.status))throw new Error("Couldn't load "+g+". Status: "+A.status);var I,B=Number(A.getResponseHeader("Content-length")),C=(I=A.getResponseHeader("Accept-Ranges"))&&"bytes"===I,Q=(I=A.getResponseHeader("Content-Encoding"))&&"gzip"===I,E=1048576;C||(E=B);var i=this;i.setDataGetter(function(A){var I=A*E,C=(A+1)*E-1;if(C=Math.min(C,B-1),void 0===i.chunks[A]&&(i.chunks[A]=function(A,I){if(A>I)throw new Error("invalid range ("+A+", "+I+") or no bytes requested!");if(I>B-1)throw new Error("only "+B+" bytes available! programmer error!");var C=new XMLHttpRequest;if(C.open("GET",g,!1),B!==E&&C.setRequestHeader("Range","bytes="+A+"-"+I),C.responseType="arraybuffer",C.overrideMimeType&&C.overrideMimeType("text/plain; charset=x-user-defined"),C.send(null),!(C.status>=200&&C.status<300||304===C.status))throw new Error("Couldn't load "+g+". Status: "+C.status);return void 0!==C.response?new Uint8Array(C.response||[]):hA(C.responseText||"",!0)}(I,C)),void 0===i.chunks[A])throw new Error("doXHR failed!");return i.chunks[A]}),!Q&&B||(E=B=1,B=this.getter(0).length,E=B,n("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=B,this._chunkSize=E,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!R)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var E=new Q;Object.defineProperties(E,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var i={isDevice:!1,contents:E}}else i={isDevice:!1,url:g};var o=FA.createFile(A,I,i,B,C);i.contents?o.contents=i.contents:i.url&&(o.contents=null,o.url=i.url),Object.defineProperties(o,{usedBytes:{get:function(){return this.contents.length}}});var D={};function a(A,I,g,B,C){var Q=A.node.contents;if(C>=Q.length)return 0;var E=Math.min(Q.length-C,B);if(Q.slice)for(var i=0;i<E;i++)I[g+i]=Q[C+i];else for(i=0;i<E;i++)I[g+i]=Q.get(C+i);return E}return Object.keys(o.stream_ops).forEach(function(A){var I=o.stream_ops[A];D[A]=function(){return FA.forceLoadFile(o),I.apply(null,arguments)}}),D.read=function(A,I,g,B,C){return FA.forceLoadFile(o),a(A,I,g,B,C)},D.mmap=function(A,I,g,B,C){FA.forceLoadFile(o);var Q=RA();if(!Q)throw new FA.ErrnoError(48);return a(A,J,Q,I,g),{ptr:Q,allocated:!0}},o.stream_ops=D,o},createPreloadedFile:function(A,I,g,B,C,E,i,o,D,a){var t=I?GA.resolve(wA.join2(A,I)):A;function s(g){function Q(g){a&&a(),o||FA.createDataFile(A,I,g,B,C,D),E&&E(),$()}Browser.handledByPreloadPlugin(g,t,Q,function(){i&&i(),$()})||Q(g)}_(),"string"==typeof g?function(A,I,g){var B="al "+A;Q(A,function(I){k(I,'Loading data file "'+A+'" failed (no arrayBuffer).'),s(new Uint8Array(I)),B&&$()},function(I){if(!g)throw'Loading data file "'+A+'" failed.';g()}),B&&_()}(g,0,i):s(g)},indexedDB:function(){return window.indexedDB||window.mozIndexedDB||window.webkitIndexedDB||window.msIndexedDB},DB_NAME:function(){return"EM_FS_"+window.location.pathname},DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function(A,I,g){I=I||function(){},g=g||function(){};var B=FA.indexedDB();try{var C=B.open(FA.DB_NAME(),FA.DB_VERSION)}catch(A){return g(A)}C.onupgradeneeded=function(){n("creating db"),C.result.createObjectStore(FA.DB_STORE_NAME)},C.onsuccess=function(){var B=C.result.transaction([FA.DB_STORE_NAME],"readwrite"),Q=B.objectStore(FA.DB_STORE_NAME),E=0,i=0,o=A.length;function D(){0==i?I():g()}A.forEach(function(A){var I=Q.put(FA.analyzePath(A).object.contents,A);I.onsuccess=function(){++E+i==o&&D()},I.onerror=function(){i++,E+i==o&&D()}}),B.onerror=g},C.onerror=g},loadFilesFromDB:function(A,I,g){I=I||function(){},g=g||function(){};var B=FA.indexedDB();try{var C=B.open(FA.DB_NAME(),FA.DB_VERSION)}catch(A){return g(A)}C.onupgradeneeded=g,C.onsuccess=function(){var B=C.result;try{var Q=B.transaction([FA.DB_STORE_NAME],"readonly")}catch(A){return void g(A)}var E=Q.objectStore(FA.DB_STORE_NAME),i=0,o=0,D=A.length;function a(){0==o?I():g()}A.forEach(function(A){var I=E.get(A);I.onsuccess=function(){FA.analyzePath(A).exists&&FA.unlink(A),FA.createDataFile(wA.dirname(A),wA.basename(A),I.result,!0,!0,!0),++i+o==D&&a()},I.onerror=function(){o++,i+o==D&&a()}}),Q.onerror=g},C.onerror=g}},eA={DEFAULT_POLLMASK:5,calculateAt:function(A,I,g){if(wA.isAbs(I))return I;var B;if(B=-100===A?FA.cwd():eA.getStreamFromFD(A).path,0==I.length){if(!g)throw new FA.ErrnoError(44);return B}return wA.join2(B,I)},doStat:function(A,I,g){try{var B=A(I)}catch(A){if(A&&A.node&&wA.normalize(I)!==wA.normalize(FA.getPath(A.node)))return-54;throw A}return d[g>>2]=B.dev,d[g+8>>2]=B.ino,d[g+12>>2]=B.mode,l[g+16>>2]=B.nlink,d[g+20>>2]=B.uid,d[g+24>>2]=B.gid,d[g+28>>2]=B.rdev,CA=[B.size>>>0,(BA=B.size,+Math.abs(BA)>=1?BA>0?(0|Math.min(+Math.floor(BA/4294967296),4294967295))>>>0:~~+Math.ceil((BA-+(~~BA>>>0))/4294967296)>>>0:0)],d[g+40>>2]=CA[0],d[g+44>>2]=CA[1],d[g+48>>2]=4096,d[g+52>>2]=B.blocks,CA=[Math.floor(B.atime.getTime()/1e3)>>>0,(BA=Math.floor(B.atime.getTime()/1e3),+Math.abs(BA)>=1?BA>0?(0|Math.min(+Math.floor(BA/4294967296),4294967295))>>>0:~~+Math.ceil((BA-+(~~BA>>>0))/4294967296)>>>0:0)],d[g+56>>2]=CA[0],d[g+60>>2]=CA[1],l[g+64>>2]=0,CA=[Math.floor(B.mtime.getTime()/1e3)>>>0,(BA=Math.floor(B.mtime.getTime()/1e3),+Math.abs(BA)>=1?BA>0?(0|Math.min(+Math.floor(BA/4294967296),4294967295))>>>0:~~+Math.ceil((BA-+(~~BA>>>0))/4294967296)>>>0:0)],d[g+72>>2]=CA[0],d[g+76>>2]=CA[1],l[g+80>>2]=0,CA=[Math.floor(B.ctime.getTime()/1e3)>>>0,(BA=Math.floor(B.ctime.getTime()/1e3),+Math.abs(BA)>=1?BA>0?(0|Math.min(+Math.floor(BA/4294967296),4294967295))>>>0:~~+Math.ceil((BA-+(~~BA>>>0))/4294967296)>>>0:0)],d[g+88>>2]=CA[0],d[g+92>>2]=CA[1],l[g+96>>2]=0,CA=[B.ino>>>0,(BA=B.ino,+Math.abs(BA)>=1?BA>0?(0|Math.min(+Math.floor(BA/4294967296),4294967295))>>>0:~~+Math.ceil((BA-+(~~BA>>>0))/4294967296)>>>0:0)],d[g+104>>2]=CA[0],d[g+108>>2]=CA[1],0},doMsync:function(A,I,g,B,C){var Q=K.slice(A,A+g);FA.msync(I,Q,C,g,B)},varargs:void 0,get:function(){return eA.varargs+=4,d[eA.varargs-4>>2]},getStr:function(A){return p(A)},getStreamFromFD:function(A){var I=FA.getStream(A);if(!I)throw new FA.ErrnoError(8);return I}},nA={};function MA(A){for(;A.length;){var I=A.pop();A.pop()(I)}}function SA(A){return this.fromWireType(d[A>>2])}var cA={},NA={},kA={};function UA(A){if(void 0===A)return"_unknown";var I=(A=A.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return I>=48&&I<=57?"_"+A:A}function JA(A,I){return A=UA(A),new Function("body","return function "+A+'() {\\n "use strict"; return body.apply(this, arguments);\\n};\\n')(I)}function KA(A,I){var g=JA(I,function(A){this.name=I,this.message=A;var g=new Error(A).stack;void 0!==g&&(this.stack=this.toString()+"\\n"+g.replace(/^Error(:[^\\n]*)?\\n/,""))});return g.prototype=Object.create(A.prototype),g.prototype.constructor=g,g.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},g}var YA=void 0;function LA(A){throw new YA(A)}function dA(A,I,g){function B(I){var B=g(I);B.length!==A.length&&LA("Mismatched type converter count");for(var C=0;C<A.length;++C)pA(A[C],B[C])}A.forEach(function(A){kA[A]=I});var C=new Array(I.length),Q=[],E=0;I.forEach(function(A,I){NA.hasOwnProperty(A)?C[I]=NA[A]:(Q.push(A),cA.hasOwnProperty(A)||(cA[A]=[]),cA[A].push(function(){C[I]=NA[A],++E===Q.length&&B(C)}))}),0===Q.length&&B(C)}function lA(A){switch(A){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+A)}}var qA=void 0;function HA(A){for(var I="",g=A;K[g];)I+=qA[K[g++]];return I}var uA=void 0;function fA(A){throw new uA(A)}function pA(A,I){var g=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!("argPackAdvance"in I))throw new TypeError("registerType registeredInstance requires argPackAdvance");var B=I.name;if(A||fA('type "'+B+'" must have a positive integer typeid pointer'),NA.hasOwnProperty(A)){if(g.ignoreDuplicateRegistrations)return;fA("Cannot register type '"+B+"' twice")}if(NA[A]=I,delete kA[A],cA.hasOwnProperty(A)){var C=cA[A];delete cA[A],C.forEach(function(A){return A()})}}function mA(A){fA(A.$$.ptrType.registeredClass.name+" instance already deleted")}var bA=!1;function WA(A){}function ZA(A){A.count.value-=1,0===A.count.value&&function(A){A.smartPtr?A.smartPtrType.rawDestructor(A.smartPtr):A.ptrType.registeredClass.rawDestructor(A.ptr)}(A)}function xA(A,I,g){if(I===g)return A;if(void 0===g.baseClass)return null;var B=xA(A,I,g.baseClass);return null===B?null:g.downcast(B)}var VA={},OA=[];function XA(){for(;OA.length;){var A=OA.pop();A.$$.deleteScheduled=!1,A.delete()}}var TA=void 0,vA={};function jA(A,I){return I.ptrType&&I.ptr||LA("makeClassHandle requires ptr and ptrType"),!!I.smartPtrType!=!!I.smartPtr&&LA("Both smartPtrType and smartPtr must be specified"),I.count={value:1},PA(Object.create(A,{$$:{value:I}}))}function PA(A){return"undefined"==typeof FinalizationRegistry?(PA=function(A){return A},A):(bA=new FinalizationRegistry(function(A){ZA(A.$$)}),PA=function(A){var I=A.$$;if(I.smartPtr){var g={$$:I};bA.register(A,g,A)}return A},WA=function(A){return bA.unregister(A)},PA(A))}function zA(){}function _A(A,I,g){if(void 0===A[I].overloadTable){var B=A[I];A[I]=function(){return A[I].overloadTable.hasOwnProperty(arguments.length)||fA("Function '"+g+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+A[I].overloadTable+")!"),A[I].overloadTable[arguments.length].apply(this,arguments)},A[I].overloadTable=[],A[I].overloadTable[B.argCount]=B}}function $A(I,g,B){A.hasOwnProperty(I)?((void 0===B||void 0!==A[I].overloadTable&&void 0!==A[I].overloadTable[B])&&fA("Cannot register public name '"+I+"' twice"),_A(A,I,I),A.hasOwnProperty(B)&&fA("Cannot register multiple overloads of a function with the same number of arguments ("+B+")!"),A[I].overloadTable[B]=g):(A[I]=g,void 0!==B&&(A[I].numArguments=B))}function AI(A,I,g,B,C,Q,E,i){this.name=A,this.constructor=I,this.instancePrototype=g,this.rawDestructor=B,this.baseClass=C,this.getActualType=Q,this.upcast=E,this.downcast=i,this.pureVirtualFunctions=[]}function II(A,I,g){for(;I!==g;)I.upcast||fA("Expected null or instance of "+g.name+", got an instance of "+I.name),A=I.upcast(A),I=I.baseClass;return A}function gI(A,I){if(null===I)return this.isReference&&fA("null is not a valid "+this.name),0;I.$$||fA('Cannot pass "'+yI(I)+'" as a '+this.name),I.$$.ptr||fA("Cannot pass deleted object as a pointer of type "+this.name);var g=I.$$.ptrType.registeredClass;return II(I.$$.ptr,g,this.registeredClass)}function BI(A,I){var g;if(null===I)return this.isReference&&fA("null is not a valid "+this.name),this.isSmartPointer?(g=this.rawConstructor(),null!==A&&A.push(this.rawDestructor,g),g):0;I.$$||fA('Cannot pass "'+yI(I)+'" as a '+this.name),I.$$.ptr||fA("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&I.$$.ptrType.isConst&&fA("Cannot convert argument of type "+(I.$$.smartPtrType?I.$$.smartPtrType.name:I.$$.ptrType.name)+" to parameter type "+this.name);var B=I.$$.ptrType.registeredClass;if(g=II(I.$$.ptr,B,this.registeredClass),this.isSmartPointer)switch(void 0===I.$$.smartPtr&&fA("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:I.$$.smartPtrType===this?g=I.$$.smartPtr:fA("Cannot convert argument of type "+(I.$$.smartPtrType?I.$$.smartPtrType.name:I.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:g=I.$$.smartPtr;break;case 2:if(I.$$.smartPtrType===this)g=I.$$.smartPtr;else{var C=I.clone();g=this.rawShare(g,RI.toHandle(function(){C.delete()})),null!==A&&A.push(this.rawDestructor,g)}break;default:fA("Unsupporting sharing policy")}return g}function CI(A,I){if(null===I)return this.isReference&&fA("null is not a valid "+this.name),0;I.$$||fA('Cannot pass "'+yI(I)+'" as a '+this.name),I.$$.ptr||fA("Cannot pass deleted object as a pointer of type "+this.name),I.$$.ptrType.isConst&&fA("Cannot convert argument of type "+I.$$.ptrType.name+" to parameter type "+this.name);var g=I.$$.ptrType.registeredClass;return II(I.$$.ptr,g,this.registeredClass)}function QI(A,I,g,B,C,Q,E,i,o,D,a){this.name=A,this.registeredClass=I,this.isReference=g,this.isConst=B,this.isSmartPointer=C,this.pointeeType=Q,this.sharingPolicy=E,this.rawGetPointee=i,this.rawConstructor=o,this.rawShare=D,this.rawDestructor=a,C||void 0!==I.baseClass?this.toWireType=BI:B?(this.toWireType=gI,this.destructorFunction=null):(this.toWireType=CI,this.destructorFunction=null)}function EI(I,g,B){A.hasOwnProperty(I)||LA("Replacing nonexistant public symbol"),void 0!==A[I].overloadTable&&void 0!==B?A[I].overloadTable[B]=g:(A[I]=g,A[I].argCount=B)}function iI(A){return Z.get(A)}function oI(I,g){var B,C,Q,E=(I=HA(I)).includes("j")?(B=I,C=g,Q=[],function(){return Q.length=0,Object.assign(Q,arguments),function(I,g,B){return I.includes("j")?function(I,g,B){var C=A["dynCall_"+I];return B&&B.length?C.apply(null,[g].concat(B)):C.call(null,g)}(I,g,B):iI(g).apply(null,B)}(B,C,Q)}):iI(g);return"function"!=typeof E&&fA("unknown function pointer with signature "+I+": "+g),E}var DI=void 0;function aI(A){var I=XI(A),g=HA(I);return VI(I),g}function tI(A,I){var g=[],B={};throw I.forEach(function A(I){B[I]||NA[I]||(kA[I]?kA[I].forEach(A):(g.push(I),B[I]=!0))}),new DI(A+": "+g.map(aI).join([", "]))}function sI(A,I){for(var g=[],B=0;B<A;B++)g.push(l[I+4*B>>2]);return g}function wI(A,I,g,B,C){var Q=I.length;Q<2&&fA("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var E=null!==I[1]&&null!==g,o=!1,D=1;D<I.length;++D)if(null!==I[D]&&void 0===I[D].destructorFunction){o=!0;break}var a="void"!==I[0].name,t="",s="";for(D=0;D<Q-2;++D)t+=(0!==D?", ":"")+"arg"+D,s+=(0!==D?", ":"")+"arg"+D+"Wired";var w="return function "+UA(A)+"("+t+") {\\nif (arguments.length !== "+(Q-2)+") {\\nthrowBindingError('function "+A+" called with ' + arguments.length + ' arguments, expected "+(Q-2)+" args!');\\n}\\n";o&&(w+="var destructors = [];\\n");var G=o?"destructors":"null",h=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],r=[fA,B,C,MA,I[0],I[1]];for(E&&(w+="var thisWired = classParam.toWireType("+G+", this);\\n"),D=0;D<Q-2;++D)w+="var arg"+D+"Wired = argType"+D+".toWireType("+G+", arg"+D+"); // "+I[D+2].name+"\\n",h.push("argType"+D),r.push(I[D+2]);if(E&&(s="thisWired"+(s.length>0?", ":"")+s),w+=(a?"var rv = ":"")+"invoker(fn"+(s.length>0?", ":"")+s+");\\n",o)w+="runDestructors(destructors);\\n";else for(D=E?1:2;D<I.length;++D){var R=1===D?"thisWired":"arg"+(D-2)+"Wired";null!==I[D].destructorFunction&&(w+=R+"_dtor("+R+"); // "+I[D].name+"\\n",h.push(R+"_dtor"),r.push(I[D].destructorFunction))}return a&&(w+="var ret = retType.fromWireType(rv);\\nreturn ret;\\n"),w+="}\\n",h.push(w),function(A,I){if(!(A instanceof Function))throw new TypeError("new_ called with constructor type "+i(A)+" which is not a function");var g=JA(A.name||"unknownFunctionName",function(){});g.prototype=A.prototype;var B=new g,C=A.apply(B,I);return C instanceof Object?C:B}(Function,h).apply(null,r)}var GI=[],hI=[{},{value:void 0},{value:null},{value:!0},{value:!1}];function rI(A){A>4&&0===--hI[A].refcount&&(hI[A]=void 0,GI.push(A))}var RI={toValue:function(A){return A||fA("Cannot use deleted val. handle = "+A),hI[A].value},toHandle:function(A){switch(A){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var I=GI.length?GI.pop():hI.length;return hI[I]={refcount:1,value:A},I}}};function yI(A){if(null===A)return"null";var I=i(A);return"object"===I||"array"===I||"function"===I?A.toString():""+A}function FI(A,I){switch(I){case 2:return function(A){return this.fromWireType(q[A>>2])};case 3:return function(A){return this.fromWireType(H[A>>3])};default:throw new TypeError("Unknown float type: "+A)}}function eI(A,I,g){switch(I){case 0:return g?function(A){return J[A]}:function(A){return K[A]};case 1:return g?function(A){return Y[A>>1]}:function(A){return L[A>>1]};case 2:return g?function(A){return d[A>>2]}:function(A){return l[A>>2]};default:throw new TypeError("Unknown integer type: "+A)}}var nI="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function MI(A,I){for(var g=A,B=g>>1,C=B+I/2;!(B>=C)&&L[B];)++B;if((g=B<<1)-A>32&&nI)return nI.decode(K.subarray(A,g));for(var Q="",E=0;!(E>=I/2);++E){var i=Y[A+2*E>>1];if(0==i)break;Q+=String.fromCharCode(i)}return Q}function SI(A,I,g){if(void 0===g&&(g=2147483647),g<2)return 0;for(var B=I,C=(g-=2)<2*A.length?g/2:A.length,Q=0;Q<C;++Q){var E=A.charCodeAt(Q);Y[I>>1]=E,I+=2}return Y[I>>1]=0,I-B}function cI(A){return 2*A.length}function NI(A,I){for(var g=0,B="";!(g>=I/4);){var C=d[A+4*g>>2];if(0==C)break;if(++g,C>=65536){var Q=C-65536;B+=String.fromCharCode(55296|Q>>10,56320|1023&Q)}else B+=String.fromCharCode(C)}return B}function kI(A,I,g){if(void 0===g&&(g=2147483647),g<4)return 0;for(var B=I,C=B+g-4,Q=0;Q<A.length;++Q){var E=A.charCodeAt(Q);if(E>=55296&&E<=57343&&(E=65536+((1023&E)<<10)|1023&A.charCodeAt(++Q)),d[I>>2]=E,(I+=4)+4>C)break}return d[I>>2]=0,I-B}function UI(A){for(var I=0,g=0;g<A.length;++g){var B=A.charCodeAt(g);B>=55296&&B<=57343&&++g,I+=4}return I}function JI(A){var I=b(A)+1,g=xI(I);return g&&m(A,J,g,I),g}var KI=[];function YI(A){try{return S.grow(A-U.byteLength+65535>>>16),W(S.buffer),1}catch(A){}}var LI={};function dI(){if(!dI.strings){var A={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==("undefined"==typeof navigator?"undefined":i(navigator))&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:G||"./this.program"};for(var I in LI)void 0===LI[I]?delete A[I]:A[I]=LI[I];var g=[];for(var I in A)g.push(I+"="+A[I]);dI.strings=g}return dI.strings}function lI(A){return A%4==0&&(A%100!=0||A%400==0)}var qI=[31,29,31,30,31,30,31,31,30,31,30,31],HI=[31,28,31,30,31,30,31,31,30,31,30,31];function uI(A,I,g,B){var C=d[B+40>>2],Q={tm_sec:d[B>>2],tm_min:d[B+4>>2],tm_hour:d[B+8>>2],tm_mday:d[B+12>>2],tm_mon:d[B+16>>2],tm_year:d[B+20>>2],tm_wday:d[B+24>>2],tm_yday:d[B+28>>2],tm_isdst:d[B+32>>2],tm_gmtoff:d[B+36>>2],tm_zone:C?p(C):""},E=p(g),i={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var o in i)E=E.replace(new RegExp(o,"g"),i[o]);var D=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],a=["January","February","March","April","May","June","July","August","September","October","November","December"];function t(A,I,g){for(var B="number"==typeof A?A.toString():A||"";B.length<I;)B=g[0]+B;return B}function s(A,I){return t(A,I,"0")}function w(A,I){function g(A){return A<0?-1:A>0?1:0}var B;return 0===(B=g(A.getFullYear()-I.getFullYear()))&&0===(B=g(A.getMonth()-I.getMonth()))&&(B=g(A.getDate()-I.getDate())),B}function G(A){switch(A.getDay()){case 0:return new Date(A.getFullYear()-1,11,29);case 1:return A;case 2:return new Date(A.getFullYear(),0,3);case 3:return new Date(A.getFullYear(),0,2);case 4:return new Date(A.getFullYear(),0,1);case 5:return new Date(A.getFullYear()-1,11,31);case 6:return new Date(A.getFullYear()-1,11,30)}}function h(A){var I=function(A,I){for(var g=new Date(A.getTime());I>0;){var B=lI(g.getFullYear()),C=g.getMonth(),Q=(B?qI:HI)[C];if(!(I>Q-g.getDate()))return g.setDate(g.getDate()+I),g;I-=Q-g.getDate()+1,g.setDate(1),C<11?g.setMonth(C+1):(g.setMonth(0),g.setFullYear(g.getFullYear()+1))}return g}(new Date(A.tm_year+1900,0,1),A.tm_yday),g=new Date(I.getFullYear(),0,4),B=new Date(I.getFullYear()+1,0,4),C=G(g),Q=G(B);return w(C,I)<=0?w(Q,I)<=0?I.getFullYear()+1:I.getFullYear():I.getFullYear()-1}var r={"%a":function(A){return D[A.tm_wday].substring(0,3)},"%A":function(A){return D[A.tm_wday]},"%b":function(A){return a[A.tm_mon].substring(0,3)},"%B":function(A){return a[A.tm_mon]},"%C":function(A){return s((A.tm_year+1900)/100|0,2)},"%d":function(A){return s(A.tm_mday,2)},"%e":function(A){return t(A.tm_mday,2," ")},"%g":function(A){return h(A).toString().substring(2)},"%G":function(A){return h(A)},"%H":function(A){return s(A.tm_hour,2)},"%I":function(A){var I=A.tm_hour;return 0==I?I=12:I>12&&(I-=12),s(I,2)},"%j":function(A){return s(A.tm_mday+function(A,I){for(var g=0,B=0;B<=I;g+=A[B++]);return g}(lI(A.tm_year+1900)?qI:HI,A.tm_mon-1),3)},"%m":function(A){return s(A.tm_mon+1,2)},"%M":function(A){return s(A.tm_min,2)},"%n":function(){return"\\n"},"%p":function(A){return A.tm_hour>=0&&A.tm_hour<12?"AM":"PM"},"%S":function(A){return s(A.tm_sec,2)},"%t":function(){return"\\t"},"%u":function(A){return A.tm_wday||7},"%U":function(A){var I=A.tm_yday+7-A.tm_wday;return s(Math.floor(I/7),2)},"%V":function(A){var I=Math.floor((A.tm_yday+7-(A.tm_wday+6)%7)/7);if((A.tm_wday+371-A.tm_yday-2)%7<=2&&I++,I){if(53==I){var g=(A.tm_wday+371-A.tm_yday)%7;4==g||3==g&&lI(A.tm_year)||(I=1)}}else{I=52;var B=(A.tm_wday+7-A.tm_yday-1)%7;(4==B||5==B&&lI(A.tm_year%400-1))&&I++}return s(I,2)},"%w":function(A){return A.tm_wday},"%W":function(A){var I=A.tm_yday+7-(A.tm_wday+6)%7;return s(Math.floor(I/7),2)},"%y":function(A){return(A.tm_year+1900).toString().substring(2)},"%Y":function(A){return A.tm_year+1900},"%z":function(A){var I=A.tm_gmtoff,g=I>=0;return I=(I=Math.abs(I)/60)/60*100+I%60,(g?"+":"-")+String("0000"+I).slice(-4)},"%Z":function(A){return A.tm_zone},"%%":function(){return"%"}};for(var o in E=E.replace(/%%/g,"\\0\\0"),r)E.includes(o)&&(E=E.replace(new RegExp(o,"g"),r[o](Q)));var R=hA(E=E.replace(/\\0\\0/g,"%"),!1);return R.length>I?0:(function(A,I){J.set(A,I)}(R,A),R.length-1)}var fI=function(A,I,g,B){A||(A=this),this.parent=A,this.mount=A.mount,this.mounted=null,this.id=FA.nextInode++,this.name=I,this.mode=g,this.node_ops={},this.stream_ops={},this.rdev=B};Object.defineProperties(fI.prototype,{read:{get:function(){return!(365&~this.mode)},set:function(A){A?this.mode|=365:this.mode&=-366}},write:{get:function(){return!(146&~this.mode)},set:function(A){A?this.mode|=146:this.mode&=-147}},isFolder:{get:function(){return FA.isDir(this.mode)}},isDevice:{get:function(){return FA.isChrdev(this.mode)}}}),FA.FSNode=fI,FA.staticInit(),YA=A.InternalError=KA(Error,"InternalError"),function(){for(var A=new Array(256),I=0;I<256;++I)A[I]=String.fromCharCode(I);qA=A}(),uA=A.BindingError=KA(Error,"BindingError"),zA.prototype.isAliasOf=function(A){if(!(this instanceof zA))return!1;if(!(A instanceof zA))return!1;for(var I=this.$$.ptrType.registeredClass,g=this.$$.ptr,B=A.$$.ptrType.registeredClass,C=A.$$.ptr;I.baseClass;)g=I.upcast(g),I=I.baseClass;for(;B.baseClass;)C=B.upcast(C),B=B.baseClass;return I===B&&g===C},zA.prototype.clone=function(){if(this.$$.ptr||mA(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var A,I=PA(Object.create(Object.getPrototypeOf(this),{$$:{value:(A=this.$$,{count:A.count,deleteScheduled:A.deleteScheduled,preservePointerOnDelete:A.preservePointerOnDelete,ptr:A.ptr,ptrType:A.ptrType,smartPtr:A.smartPtr,smartPtrType:A.smartPtrType})}}));return I.$$.count.value+=1,I.$$.deleteScheduled=!1,I},zA.prototype.delete=function(){this.$$.ptr||mA(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&fA("Object already scheduled for deletion"),WA(this),ZA(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},zA.prototype.isDeleted=function(){return!this.$$.ptr},zA.prototype.deleteLater=function(){return this.$$.ptr||mA(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&fA("Object already scheduled for deletion"),OA.push(this),1===OA.length&&TA&&TA(XA),this.$$.deleteScheduled=!0,this},A.getInheritedInstanceCount=function(){return Object.keys(vA).length},A.getLiveInheritedInstances=function(){var A=[];for(var I in vA)vA.hasOwnProperty(I)&&A.push(vA[I]);return A},A.flushPendingDeletes=XA,A.setDelayFunction=function(A){TA=A,OA.length&&TA&&TA(XA)},QI.prototype.getPointee=function(A){return this.rawGetPointee&&(A=this.rawGetPointee(A)),A},QI.prototype.destructor=function(A){this.rawDestructor&&this.rawDestructor(A)},QI.prototype.argPackAdvance=8,QI.prototype.readValueFromPointer=SA,QI.prototype.deleteObject=function(A){null!==A&&A.delete()},QI.prototype.fromWireType=function(A){var I=this.getPointee(A);if(!I)return this.destructor(A),null;var g=function(A,I){return I=function(A,I){for(void 0===I&&fA("ptr should not be undefined");A.baseClass;)I=A.upcast(I),A=A.baseClass;return I}(A,I),vA[I]}(this.registeredClass,I);if(void 0!==g){if(0===g.$$.count.value)return g.$$.ptr=I,g.$$.smartPtr=A,g.clone();var B=g.clone();return this.destructor(A),B}function C(){return this.isSmartPointer?jA(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:I,smartPtrType:this,smartPtr:A}):jA(this.registeredClass.instancePrototype,{ptrType:this,ptr:A})}var Q,E=this.registeredClass.getActualType(I),i=VA[E];if(!i)return C.call(this);Q=this.isConst?i.constPointerType:i.pointerType;var o=xA(I,this.registeredClass,Q.registeredClass);return null===o?C.call(this):this.isSmartPointer?jA(Q.registeredClass.instancePrototype,{ptrType:Q,ptr:o,smartPtrType:this,smartPtr:A}):jA(Q.registeredClass.instancePrototype,{ptrType:Q,ptr:o})},DI=A.UnboundTypeError=KA(Error,"UnboundTypeError"),A.count_emval_handles=function(){for(var A=0,I=5;I<hI.length;++I)void 0!==hI[I]&&++A;return A},A.get_first_emval=function(){for(var A=5;A<hI.length;++A)if(void 0!==hI[A])return hI[A];return null};var pI=!1,mI="function"==typeof atob?atob:function(A){var I,g,B,C,Q,E,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o="",D=0;A=A.replace(/[^A-Za-z0-9\\+\\/\\=]/g,"");do{I=i.indexOf(A.charAt(D++))<<2|(C=i.indexOf(A.charAt(D++)))>>4,g=(15&C)<<4|(Q=i.indexOf(A.charAt(D++)))>>2,B=(3&Q)<<6|(E=i.indexOf(A.charAt(D++))),o+=String.fromCharCode(I),64!==Q&&(o+=String.fromCharCode(g)),64!==E&&(o+=String.fromCharCode(B))}while(D<A.length);return o};function bI(A){if(EA(A))return function(A){if("boolean"==typeof y&&y){var I=Buffer.from(A,"base64");return new Uint8Array(I.buffer,I.byteOffset,I.byteLength)}try{for(var g=mI(A),B=new Uint8Array(g.length),C=0;C<g.length;++C)B[C]=g.charCodeAt(C);return B}catch(A){throw new Error("Converting base64 string to bytes failed.")}}(A.slice(QA.length))}var WI,ZI={g:function(A){return xI(A+24)+24},f:function(A,I,g){throw new sA(A).init(I,g),A},o:function(A,I,g){eA.varargs=g;try{var B=eA.getStreamFromFD(A);switch(I){case 0:return(C=eA.get())<0?-28:FA.createStream(B,C).fd;case 1:case 2:case 6:case 7:return 0;case 3:return B.flags;case 4:var C=eA.get();return B.flags|=C,0;case 5:return C=eA.get(),Y[C+0>>1]=2,0;case 16:case 8:default:return-28;case 9:return d[OI()>>2]=28,-1}}catch(A){if(void 0===FA||!(A instanceof FA.ErrnoError))throw A;return-A.errno}},G:function(A,I,g){eA.varargs=g;try{var B=eA.getStreamFromFD(A);switch(I){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return B.tty?0:-59;case 21519:if(!B.tty)return-59;var C=eA.get();return d[C>>2]=0,0;case 21520:return B.tty?-28:-59;case 21531:return C=eA.get(),FA.ioctl(B,I,C);default:return-28}}catch(A){if(void 0===FA||!(A instanceof FA.ErrnoError))throw A;return-A.errno}},H:function(A,I,g,B){eA.varargs=B;try{I=eA.getStr(I),I=eA.calculateAt(A,I);var C=B?eA.get():0;return FA.open(I,g,C).fd}catch(A){if(void 0===FA||!(A instanceof FA.ErrnoError))throw A;return-A.errno}},R:function(A){var I=nA[A];delete nA[A];var g=I.rawConstructor,B=I.rawDestructor,C=I.fields;dA([A],C.map(function(A){return A.getterReturnType}).concat(C.map(function(A){return A.setterArgumentType})),function(A){var Q={};return C.forEach(function(I,g){var B=I.fieldName,E=A[g],i=I.getter,o=I.getterContext,D=A[g+C.length],a=I.setter,t=I.setterContext;Q[B]={read:function(A){return E.fromWireType(i(o,A))},write:function(A,I){var g=[];a(t,A,D.toWireType(g,I)),MA(g)}}}),[{name:I.name,fromWireType:function(A){var I={};for(var g in Q)I[g]=Q[g].read(A);return B(A),I},toWireType:function(A,I){for(var C in Q)if(!(C in I))throw new TypeError('Missing field: "'+C+'"');var E=g();for(C in Q)Q[C].write(E,I[C]);return null!==A&&A.push(B,E),E},argPackAdvance:8,readValueFromPointer:SA,destructorFunction:B}]})},y:function(A,I,g,B,C){},L:function(A,I,g,B,C){var Q=lA(g);pA(A,{name:I=HA(I),fromWireType:function(A){return!!A},toWireType:function(A,I){return I?B:C},argPackAdvance:8,readValueFromPointer:function(A){var B;if(1===g)B=J;else if(2===g)B=Y;else{if(4!==g)throw new TypeError("Unknown boolean type size: "+I);B=d}return this.fromWireType(B[A>>Q])},destructorFunction:null})},U:function(A,I,g,B,C,Q,E,i,o,D,a,t,s){a=HA(a),Q=oI(C,Q),i&&(i=oI(E,i)),D&&(D=oI(o,D)),s=oI(t,s);var w=UA(a);$A(w,function(){tI("Cannot construct "+a+" due to unbound types",[B])}),dA([A,I,g],B?[B]:[],function(I){var g,C;I=I[0],C=B?(g=I.registeredClass).instancePrototype:zA.prototype;var E=JA(w,function(){if(Object.getPrototypeOf(this)!==o)throw new uA("Use 'new' to construct "+a);if(void 0===t.constructor_body)throw new uA(a+" has no accessible constructor");var A=t.constructor_body[arguments.length];if(void 0===A)throw new uA("Tried to invoke ctor of "+a+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(t.constructor_body).toString()+") parameters instead!");return A.apply(this,arguments)}),o=Object.create(C,{constructor:{value:E}});E.prototype=o;var t=new AI(a,E,o,s,g,Q,i,D),G=new QI(a,t,!0,!1,!1),h=new QI(a+"*",t,!1,!1,!1),r=new QI(a+" const*",t,!1,!0,!1);return VA[A]={pointerType:h,constPointerType:r},EI(w,E),[G,h,r]})},Q:function(A,I,g,B,C,Q){k(I>0);var E=sI(I,g);C=oI(B,C),dA([],[A],function(A){var g="constructor "+(A=A[0]).name;if(void 0===A.registeredClass.constructor_body&&(A.registeredClass.constructor_body=[]),void 0!==A.registeredClass.constructor_body[I-1])throw new uA("Cannot register multiple constructors with identical number of parameters ("+(I-1)+") for class '"+A.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return A.registeredClass.constructor_body[I-1]=function(){tI("Cannot construct "+A.name+" due to unbound types",E)},dA([],E,function(B){return B.splice(1,0,null),A.registeredClass.constructor_body[I-1]=wI(g,B,null,C,Q),[]}),[]})},h:function(A,I,g,B,C,Q,E,i){var o=sI(g,B);I=HA(I),Q=oI(C,Q),dA([],[A],function(A){var B=(A=A[0]).name+"."+I;function C(){tI("Cannot call "+B+" due to unbound types",o)}I.startsWith("@@")&&(I=Symbol[I.substring(2)]),i&&A.registeredClass.pureVirtualFunctions.push(I);var D=A.registeredClass.instancePrototype,a=D[I];return void 0===a||void 0===a.overloadTable&&a.className!==A.name&&a.argCount===g-2?(C.argCount=g-2,C.className=A.name,D[I]=C):(_A(D,I,B),D[I].overloadTable[g-2]=C),dA([],o,function(C){var i=wI(B,C,A,Q,E);return void 0===D[I].overloadTable?(i.argCount=g-2,D[I]=i):D[I].overloadTable[g-2]=i,[]}),[]})},s:function(I,g,B){I=HA(I),dA([],[g],function(g){return g=g[0],A[I]=g.fromWireType(B),[]})},K:function(A,I){pA(A,{name:I=HA(I),fromWireType:function(A){var I=RI.toValue(A);return rI(A),I},toWireType:function(A,I){return RI.toHandle(I)},argPackAdvance:8,readValueFromPointer:SA,destructorFunction:null})},r:function(A,I,g){var B=lA(g);pA(A,{name:I=HA(I),fromWireType:function(A){return A},toWireType:function(A,I){return I},argPackAdvance:8,readValueFromPointer:FI(I,B),destructorFunction:null})},d:function(A,I,g,B,C,Q){var E=sI(I,g);A=HA(A),C=oI(B,C),$A(A,function(){tI("Cannot call "+A+" due to unbound types",E)},I-1),dA([],E,function(g){var B=[g[0],null].concat(g.slice(1));return EI(A,wI(A,B,null,C,Q),I-1),[]})},e:function(A,I,g,B,C){I=HA(I),-1===C&&(C=4294967295);var Q=lA(g),E=function(A){return A};if(0===B){var i=32-8*g;E=function(A){return A<<i>>>i}}var o=I.includes("unsigned");pA(A,{name:I,fromWireType:E,toWireType:o?function(A,I){return this.name,I>>>0}:function(A,I){return this.name,I},argPackAdvance:8,readValueFromPointer:eI(I,Q,0!==B),destructorFunction:null})},c:function(A,I,g){var B=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][I];function C(A){var I=l,g=I[A>>=2],C=I[A+1];return new B(U,C,g)}pA(A,{name:g=HA(g),fromWireType:C,argPackAdvance:8,readValueFromPointer:C},{ignoreDuplicateRegistrations:!0})},q:function(A,I){var g="std::string"===(I=HA(I));pA(A,{name:I,fromWireType:function(A){var I,B=l[A>>2],C=A+4;if(g)for(var Q=C,E=0;E<=B;++E){var i=C+E;if(E==B||0==K[i]){var o=p(Q,i-Q);void 0===I?I=o:(I+=String.fromCharCode(0),I+=o),Q=i+1}}else{var D=new Array(B);for(E=0;E<B;++E)D[E]=String.fromCharCode(K[C+E]);I=D.join("")}return VI(A),I},toWireType:function(A,I){var B;I instanceof ArrayBuffer&&(I=new Uint8Array(I));var C="string"==typeof I;C||I instanceof Uint8Array||I instanceof Uint8ClampedArray||I instanceof Int8Array||fA("Cannot pass non-string to std::string"),B=g&&C?b(I):I.length;var Q=xI(4+B+1),E=Q+4;if(l[Q>>2]=B,g&&C)m(I,K,E,B+1);else if(C)for(var i=0;i<B;++i){var o=I.charCodeAt(i);o>255&&(VI(E),fA("String has UTF-16 code units that do not fit in 8 bits")),K[E+i]=o}else for(i=0;i<B;++i)K[E+i]=I[i];return null!==A&&A.push(VI,Q),Q},argPackAdvance:8,readValueFromPointer:SA,destructorFunction:function(A){VI(A)}})},l:function(A,I,g){var B,C,Q,E,i;g=HA(g),2===I?(B=MI,C=SI,E=cI,Q=function(){return L},i=1):4===I&&(B=NI,C=kI,E=UI,Q=function(){return l},i=2),pA(A,{name:g,fromWireType:function(A){for(var g,C=l[A>>2],E=Q(),o=A+4,D=0;D<=C;++D){var a=A+4+D*I;if(D==C||0==E[a>>i]){var t=B(o,a-o);void 0===g?g=t:(g+=String.fromCharCode(0),g+=t),o=a+I}}return VI(A),g},toWireType:function(A,B){"string"!=typeof B&&fA("Cannot pass non-string to C++ string type "+g);var Q=E(B),o=xI(4+Q+I);return l[o>>2]=Q>>i,C(B,o+4,Q+I),null!==A&&A.push(VI,o),o},argPackAdvance:8,readValueFromPointer:SA,destructorFunction:function(A){VI(A)}})},T:function(A,I,g,B,C,Q){nA[A]={name:HA(I),rawConstructor:oI(g,B),rawDestructor:oI(C,Q),fields:[]}},S:function(A,I,g,B,C,Q,E,i,o,D){nA[A].fields.push({fieldName:HA(I),getterReturnType:g,getter:oI(B,C),getterContext:Q,setterArgumentType:E,setter:oI(i,o),setterContext:D})},M:function(A,I){pA(A,{isVoid:!0,name:I=HA(I),argPackAdvance:0,fromWireType:function(){},toWireType:function(A,I){}})},p:function(){return Date.now()},A:function(){throw 1/0},O:rI,P:function(A){A>4&&(hI[A].refcount+=1)},N:function(A,I){var g,B;void 0===(B=NA[g=A])&&fA("_emval_take_value has unknown type "+aI(g));var C=(A=B).readValueFromPointer(I);return RI.toHandle(C)},I:function(A,I){var g,B=new Date(1e3*(l[(g=A)>>2]+4294967296*d[g+4>>2]));d[I>>2]=B.getSeconds(),d[I+4>>2]=B.getMinutes(),d[I+8>>2]=B.getHours(),d[I+12>>2]=B.getDate(),d[I+16>>2]=B.getMonth(),d[I+20>>2]=B.getFullYear()-1900,d[I+24>>2]=B.getDay();var C=new Date(B.getFullYear(),0,1),Q=(B.getTime()-C.getTime())/864e5|0;d[I+28>>2]=Q,d[I+36>>2]=-60*B.getTimezoneOffset();var E=new Date(B.getFullYear(),6,1).getTimezoneOffset(),i=C.getTimezoneOffset(),o=0|(E!=i&&B.getTimezoneOffset()==Math.min(i,E));d[I+32>>2]=o},J:function A(I,g,B){A.called||(A.called=!0,function(A,I,g){var B=(new Date).getFullYear(),C=new Date(B,0,1),Q=new Date(B,6,1),E=C.getTimezoneOffset(),i=Q.getTimezoneOffset(),o=Math.max(E,i);function D(A){var I=A.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return I?I[1]:"GMT"}d[A>>2]=60*o,d[I>>2]=Number(E!=i);var a=D(C),t=D(Q),s=JI(a),w=JI(t);i<E?(l[g>>2]=s,l[g+4>>2]=w):(l[g>>2]=w,l[g+4>>2]=s)}(I,g,B))},a:function(){AA("")},i:function(A,I,g){var B=function(A,I){var g;for(KI.length=0,I>>=2;g=K[A++];)I+=105!=g&I,KI.push(105==g?d[I]:H[I++>>1]),++I;return KI}(I,g);return DA[A].apply(null,B)},B:function(A){var I=K.length,g=2147483648;if((A>>>=0)>g)return!1;for(var B=function(A,I){return A+(I-A%I)%I},C=1;C<=4;C*=2){var Q=I*(1+.2/C);if(Q=Math.min(Q,A+100663296),YI(Math.min(g,B(Math.max(A,Q),65536))))return!0}return!1},C:function(A,I){var g=0;return dI().forEach(function(B,C){var Q=I+g;l[A+4*C>>2]=Q,function(A,I){for(var g=0;g<A.length;++g)J[0|I++]=A.charCodeAt(g);J[0|I]=0}(B,Q),g+=B.length+1}),0},D:function(A,I){var g=dI();l[A>>2]=g.length;var B=0;return g.forEach(function(A){B+=A.length+1}),l[I>>2]=B,0},b:function(I,g){var B;B=I,X()||(A.onExit&&A.onExit(B),N=!0),h(B,new aA(B))},m:function(A){try{var I=eA.getStreamFromFD(A);return FA.close(I),0}catch(A){if(void 0===FA||!(A instanceof FA.ErrnoError))throw A;return A.errno}},F:function(A,I,g,B){try{var C=function(A,I,g){for(var B=0,C=0;C<g;C++){var Q=l[I>>2],E=l[I+4>>2];I+=8;var i=FA.read(A,J,Q,E,void 0);if(i<0)return-1;if(B+=i,i<E)break}return B}(eA.getStreamFromFD(A),I,g);return l[B>>2]=C,0}catch(A){if(void 0===FA||!(A instanceof FA.ErrnoError))throw A;return A.errno}},x:function(A,I,g,B,C){try{var Q=(o=g)+2097152>>>0<4194305-!!(i=I)?(i>>>0)+4294967296*o:NaN;if(isNaN(Q))return 61;var E=eA.getStreamFromFD(A);return FA.llseek(E,Q,B),CA=[E.position>>>0,(BA=E.position,+Math.abs(BA)>=1?BA>0?(0|Math.min(+Math.floor(BA/4294967296),4294967295))>>>0:~~+Math.ceil((BA-+(~~BA>>>0))/4294967296)>>>0:0)],d[C>>2]=CA[0],d[C+4>>2]=CA[1],E.getdents&&0===Q&&0===B&&(E.getdents=null),0}catch(A){if(void 0===FA||!(A instanceof FA.ErrnoError))throw A;return A.errno}var i,o},n:function(A,I,g,B){try{var C=function(A,I,g){for(var B=0,C=0;C<g;C++){var Q=l[I>>2],E=l[I+4>>2];I+=8;var i=FA.write(A,J,Q,E,void 0);if(i<0)return-1;B+=i}return B}(eA.getStreamFromFD(A),I,g);return l[B>>2]=C,0}catch(A){if(void 0===FA||!(A instanceof FA.ErrnoError))throw A;return A.errno}},t:function(A,I){var g=vI();try{return iI(A)(I)}catch(A){if(jI(g),A!==A+0)throw A;TI(1,0)}},v:function(A,I,g){var B=vI();try{return iI(A)(I,g)}catch(A){if(jI(B),A!==A+0)throw A;TI(1,0)}},u:function(A,I,g,B){var C=vI();try{return iI(A)(I,g,B)}catch(A){if(jI(C),A!==A+0)throw A;TI(1,0)}},j:function(A,I){var g=vI();try{iI(A)(I)}catch(A){if(jI(g),A!==A+0)throw A;TI(1,0)}},w:function(A,I,g){var B=vI();try{iI(A)(I,g)}catch(A){if(jI(B),A!==A+0)throw A;TI(1,0)}},E:function(A,I,g,B){var C=vI();try{iI(A)(I,g,B)}catch(A){if(jI(C),A!==A+0)throw A;TI(1,0)}},k:function(A,I,g,B,C){var Q=vI();try{iI(A)(I,g,B,C)}catch(A){if(jI(Q),A!==A+0)throw A;TI(1,0)}},V:uI,z:function(A,I,g,B){return uI(A,I,g,B)}},xI=(function(){var I={a:ZI};function B(I,g){var B,C=I.exports;A.asm=C,W((S=A.asm.W).buffer),Z=A.asm.$,B=A.asm.X,V.unshift(B),$()}function C(A){B(A.instance)}function E(A){return function(){if(!e&&(r||R)){if("function"==typeof fetch&&!iA(IA))return fetch(IA,{credentials:"same-origin"}).then(function(A){if(!A.ok)throw"failed to load wasm binary file at '"+IA+"'";return A.arrayBuffer()}).catch(function(){return oA(IA)});if(Q)return new Promise(function(A,I){Q(IA,function(I){A(new Uint8Array(I))},I)})}return Promise.resolve().then(function(){return oA(IA)})}().then(function(A){return WebAssembly.instantiate(A,I)}).then(function(A){return A}).then(A,function(A){M("failed to asynchronously prepare wasm: "+A),AA(A)})}if(_(),A.instantiateWasm)try{return A.instantiateWasm(I,B)}catch(A){return M("Module.instantiateWasm callback failed with error: "+A),!1}(e||"function"!=typeof WebAssembly.instantiateStreaming||EA(IA)||iA(IA)||y||"function"!=typeof fetch?E(C):fetch(IA,{credentials:"same-origin"}).then(function(A){return WebAssembly.instantiateStreaming(A,I).then(C,function(A){return M("wasm streaming compile failed: "+A),M("falling back to ArrayBuffer instantiation"),E(C)})})).catch(g)}(),A.___wasm_call_ctors=function(){return(A.___wasm_call_ctors=A.asm.X).apply(null,arguments)},A._malloc=function(){return(xI=A._malloc=A.asm.Y).apply(null,arguments)}),VI=A._free=function(){return(VI=A._free=A.asm.Z).apply(null,arguments)},OI=A.___errno_location=function(){return(OI=A.___errno_location=A.asm._).apply(null,arguments)},XI=A.___getTypeName=function(){return(XI=A.___getTypeName=A.asm.aa).apply(null,arguments)},TI=(A.__embind_initialize_bindings=function(){return(A.__embind_initialize_bindings=A.asm.ba).apply(null,arguments)},A._setThrew=function(){return(TI=A._setThrew=A.asm.ca).apply(null,arguments)}),vI=A.stackSave=function(){return(vI=A.stackSave=A.asm.da).apply(null,arguments)},jI=A.stackRestore=function(){return(jI=A.stackRestore=A.asm.ea).apply(null,arguments)},PI=A.___cxa_is_pointer_type=function(){return(PI=A.___cxa_is_pointer_type=A.asm.fa).apply(null,arguments)};function zI(g){function B(){WI||(WI=!0,A.calledRun=!0,N||(A.noFSInit||FA.init.initialized||FA.init(),FA.ignorePermissions=!1,rA.init(),tA(V),I(A),A.onRuntimeInitialized&&A.onRuntimeInitialized(),function(){if(A.postRun)for("function"==typeof A.postRun&&(A.postRun=[A.postRun]);A.postRun.length;)v(A.postRun.shift());tA(O)}()))}g=g||w,j>0||(function(){if(A.preRun)for("function"==typeof A.preRun&&(A.preRun=[A.preRun]);A.preRun.length;)T(A.preRun.shift());tA(x)}(),j>0||(A.setStatus?(A.setStatus("Running..."),setTimeout(function(){setTimeout(function(){A.setStatus("")},1),B()},1)):B()))}if(A.dynCall_jiji=function(){return(A.dynCall_jiji=A.asm.ga).apply(null,arguments)},A.dynCall_viijii=function(){return(A.dynCall_viijii=A.asm.ha).apply(null,arguments)},A.dynCall_iiiiij=function(){return(A.dynCall_iiiiij=A.asm.ia).apply(null,arguments)},A.dynCall_iiiiijj=function(){return(A.dynCall_iiiiijj=A.asm.ja).apply(null,arguments)},A.dynCall_iiiiiijj=function(){return(A.dynCall_iiiiiijj=A.asm.ka).apply(null,arguments)},A.FS=FA,z=function A(){WI||zI(),WI||(z=A)},A.preInit)for("function"==typeof A.preInit&&(A.preInit=[A.preInit]);A.preInit.length>0;)A.preInit.pop()();return zI(),A.ready});const r=h,R=function(){return new Promise(function(A){r({onRuntimeInitialized:function(){A({instance:this})}})})};function y(A,I){return function(){return A.apply(I,arguments)}}const{toString:F}=Object.prototype,{getPrototypeOf:e}=Object,{iterator:n,toStringTag:M}=Symbol,S=(c=Object.create(null),A=>{const I=F.call(A);return c[I]||(c[I]=I.slice(8,-1).toLowerCase())});var c;const N=A=>(A=A.toLowerCase(),I=>S(I)===A),k=A=>I=>typeof I===A,{isArray:U}=Array,J=k("undefined");function K(A){return null!==A&&!J(A)&&null!==A.constructor&&!J(A.constructor)&&d(A.constructor.isBuffer)&&A.constructor.isBuffer(A)}const Y=N("ArrayBuffer"),L=k("string"),d=k("function"),l=k("number"),q=A=>null!==A&&"object"==typeof A,H=A=>{if("object"!==S(A))return!1;const I=e(A);return!(null!==I&&I!==Object.prototype&&null!==Object.getPrototypeOf(I)||M in A||n in A)},u=N("Date"),f=N("File"),p=N("Blob"),m=N("FileList"),b=N("URLSearchParams"),[W,Z,x,V]=["ReadableStream","Request","Response","Headers"].map(N);function O(A,I,{allOwnKeys:g=!1}={}){if(null==A)return;let B,C;if("object"!=typeof A&&(A=[A]),U(A))for(B=0,C=A.length;B<C;B++)I.call(null,A[B],B,A);else{if(K(A))return;const C=g?Object.getOwnPropertyNames(A):Object.keys(A),Q=C.length;let E;for(B=0;B<Q;B++)E=C[B],I.call(null,A[E],E,A)}}function X(A,I){if(K(A))return null;I=I.toLowerCase();const g=Object.keys(A);let B,C=g.length;for(;C-- >0;)if(B=g[C],I===B.toLowerCase())return B;return null}const T="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:g.g,v=A=>!J(A)&&A!==T,j=(P="undefined"!=typeof Uint8Array&&e(Uint8Array),A=>P&&A instanceof P);var P;const z=N("HTMLFormElement"),_=(({hasOwnProperty:A})=>(I,g)=>A.call(I,g))(Object.prototype),$=N("RegExp"),AA=(A,I)=>{const g=Object.getOwnPropertyDescriptors(A),B={};O(g,(g,C)=>{let Q;!1!==(Q=I(g,C,A))&&(B[C]=Q||g)}),Object.defineProperties(A,B)},IA=N("AsyncFunction"),gA=(BA="function"==typeof setImmediate,CA=d(T.postMessage),BA?setImmediate:CA?(QA=\`axios@\${Math.random()}\`,EA=[],T.addEventListener("message",({source:A,data:I})=>{A===T&&I===QA&&EA.length&&EA.shift()()},!1),A=>{EA.push(A),T.postMessage(QA,"*")}):A=>setTimeout(A));var BA,CA,QA,EA;const iA="undefined"!=typeof queueMicrotask?queueMicrotask.bind(T):"undefined"!=typeof process&&process.nextTick||gA,oA={isArray:U,isArrayBuffer:Y,isBuffer:K,isFormData:A=>{let I;return A&&("function"==typeof FormData&&A instanceof FormData||d(A.append)&&("formdata"===(I=S(A))||"object"===I&&d(A.toString)&&"[object FormData]"===A.toString()))},isArrayBufferView:function(A){let I;return I="undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(A):A&&A.buffer&&Y(A.buffer),I},isString:L,isNumber:l,isBoolean:A=>!0===A||!1===A,isObject:q,isPlainObject:H,isEmptyObject:A=>{if(!q(A)||K(A))return!1;try{return 0===Object.keys(A).length&&Object.getPrototypeOf(A)===Object.prototype}catch(A){return!1}},isReadableStream:W,isRequest:Z,isResponse:x,isHeaders:V,isUndefined:J,isDate:u,isFile:f,isBlob:p,isRegExp:$,isFunction:d,isStream:A=>q(A)&&d(A.pipe),isURLSearchParams:b,isTypedArray:j,isFileList:m,forEach:O,merge:function A(){const{caseless:I,skipUndefined:g}=v(this)&&this||{},B={},C=(C,Q)=>{const E=I&&X(B,Q)||Q;H(B[E])&&H(C)?B[E]=A(B[E],C):H(C)?B[E]=A({},C):U(C)?B[E]=C.slice():g&&J(C)||(B[E]=C)};for(let A=0,I=arguments.length;A<I;A++)arguments[A]&&O(arguments[A],C);return B},extend:(A,I,g,{allOwnKeys:B}={})=>(O(I,(I,B)=>{g&&d(I)?A[B]=y(I,g):A[B]=I},{allOwnKeys:B}),A),trim:A=>A.trim?A.trim():A.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,""),stripBOM:A=>(65279===A.charCodeAt(0)&&(A=A.slice(1)),A),inherits:(A,I,g,B)=>{A.prototype=Object.create(I.prototype,B),A.prototype.constructor=A,Object.defineProperty(A,"super",{value:I.prototype}),g&&Object.assign(A.prototype,g)},toFlatObject:(A,I,g,B)=>{let C,Q,E;const i={};if(I=I||{},null==A)return I;do{for(C=Object.getOwnPropertyNames(A),Q=C.length;Q-- >0;)E=C[Q],B&&!B(E,A,I)||i[E]||(I[E]=A[E],i[E]=!0);A=!1!==g&&e(A)}while(A&&(!g||g(A,I))&&A!==Object.prototype);return I},kindOf:S,kindOfTest:N,endsWith:(A,I,g)=>{A=String(A),(void 0===g||g>A.length)&&(g=A.length),g-=I.length;const B=A.indexOf(I,g);return-1!==B&&B===g},toArray:A=>{if(!A)return null;if(U(A))return A;let I=A.length;if(!l(I))return null;const g=new Array(I);for(;I-- >0;)g[I]=A[I];return g},forEachEntry:(A,I)=>{const g=(A&&A[n]).call(A);let B;for(;(B=g.next())&&!B.done;){const g=B.value;I.call(A,g[0],g[1])}},matchAll:(A,I)=>{let g;const B=[];for(;null!==(g=A.exec(I));)B.push(g);return B},isHTMLForm:z,hasOwnProperty:_,hasOwnProp:_,reduceDescriptors:AA,freezeMethods:A=>{AA(A,(I,g)=>{if(d(A)&&-1!==["arguments","caller","callee"].indexOf(g))return!1;const B=A[g];d(B)&&(I.enumerable=!1,"writable"in I?I.writable=!1:I.set||(I.set=()=>{throw Error("Can not rewrite read-only method '"+g+"'")}))})},toObjectSet:(A,I)=>{const g={},B=A=>{A.forEach(A=>{g[A]=!0})};return U(A)?B(A):B(String(A).split(I)),g},toCamelCase:A=>A.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,function(A,I,g){return I.toUpperCase()+g}),noop:()=>{},toFiniteNumber:(A,I)=>null!=A&&Number.isFinite(A=+A)?A:I,findKey:X,global:T,isContextDefined:v,isSpecCompliantForm:function(A){return!!(A&&d(A.append)&&"FormData"===A[M]&&A[n])},toJSONObject:A=>{const I=new Array(10),g=(A,B)=>{if(q(A)){if(I.indexOf(A)>=0)return;if(K(A))return A;if(!("toJSON"in A)){I[B]=A;const C=U(A)?[]:{};return O(A,(A,I)=>{const Q=g(A,B+1);!J(Q)&&(C[I]=Q)}),I[B]=void 0,C}}return A};return g(A,0)},isAsyncFn:IA,isThenable:A=>A&&(q(A)||d(A))&&d(A.then)&&d(A.catch),setImmediate:gA,asap:iA,isIterable:A=>null!=A&&d(A[n])};function DA(A,I,g,B,C){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=(new Error).stack,this.message=A,this.name="AxiosError",I&&(this.code=I),g&&(this.config=g),B&&(this.request=B),C&&(this.response=C,this.status=C.status?C.status:null)}oA.inherits(DA,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:oA.toJSONObject(this.config),code:this.code,status:this.status}}});const aA=DA.prototype,tA={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(A=>{tA[A]={value:A}}),Object.defineProperties(DA,tA),Object.defineProperty(aA,"isAxiosError",{value:!0}),DA.from=(A,I,g,B,C,Q)=>{const E=Object.create(aA);oA.toFlatObject(A,E,function(A){return A!==Error.prototype},A=>"isAxiosError"!==A);const i=A&&A.message?A.message:"Error",o=null==I&&A?A.code:I;return DA.call(E,i,o,g,B,C),A&&null==E.cause&&Object.defineProperty(E,"cause",{value:A,configurable:!0}),E.name=A&&A.name||"Error",Q&&Object.assign(E,Q),E};const sA=DA;function wA(A){return oA.isPlainObject(A)||oA.isArray(A)}function GA(A){return oA.endsWith(A,"[]")?A.slice(0,-2):A}function hA(A,I,g){return A?A.concat(I).map(function(A,I){return A=GA(A),!g&&I?"["+A+"]":A}).join(g?".":""):I}const rA=oA.toFlatObject(oA,{},null,function(A){return/^is[A-Z]/.test(A)}),RA=function(A,I,g){if(!oA.isObject(A))throw new TypeError("target must be an object");I=I||new FormData;const B=(g=oA.toFlatObject(g,{metaTokens:!0,dots:!1,indexes:!1},!1,function(A,I){return!oA.isUndefined(I[A])})).metaTokens,C=g.visitor||D,Q=g.dots,E=g.indexes,i=(g.Blob||"undefined"!=typeof Blob&&Blob)&&oA.isSpecCompliantForm(I);if(!oA.isFunction(C))throw new TypeError("visitor must be a function");function o(A){if(null===A)return"";if(oA.isDate(A))return A.toISOString();if(oA.isBoolean(A))return A.toString();if(!i&&oA.isBlob(A))throw new sA("Blob is not supported. Use a Buffer instead.");return oA.isArrayBuffer(A)||oA.isTypedArray(A)?i&&"function"==typeof Blob?new Blob([A]):Buffer.from(A):A}function D(A,g,C){let i=A;if(A&&!C&&"object"==typeof A)if(oA.endsWith(g,"{}"))g=B?g:g.slice(0,-2),A=JSON.stringify(A);else if(oA.isArray(A)&&function(A){return oA.isArray(A)&&!A.some(wA)}(A)||(oA.isFileList(A)||oA.endsWith(g,"[]"))&&(i=oA.toArray(A)))return g=GA(g),i.forEach(function(A,B){!oA.isUndefined(A)&&null!==A&&I.append(!0===E?hA([g],B,Q):null===E?g:g+"[]",o(A))}),!1;return!!wA(A)||(I.append(hA(C,g,Q),o(A)),!1)}const a=[],t=Object.assign(rA,{defaultVisitor:D,convertValue:o,isVisitable:wA});if(!oA.isObject(A))throw new TypeError("data must be an object");return function A(g,B){if(!oA.isUndefined(g)){if(-1!==a.indexOf(g))throw Error("Circular reference detected in "+B.join("."));a.push(g),oA.forEach(g,function(g,Q){!0===(!(oA.isUndefined(g)||null===g)&&C.call(I,g,oA.isString(Q)?Q.trim():Q,B,t))&&A(g,B?B.concat(Q):[Q])}),a.pop()}}(A),I};function yA(A){const I={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\\0"};return encodeURIComponent(A).replace(/[!'()~]|%20|%00/g,function(A){return I[A]})}function FA(A,I){this._pairs=[],A&&RA(A,this,I)}const eA=FA.prototype;eA.append=function(A,I){this._pairs.push([A,I])},eA.toString=function(A){const I=A?function(I){return A.call(this,I,yA)}:yA;return this._pairs.map(function(A){return I(A[0])+"="+I(A[1])},"").join("&")};const nA=FA;function MA(A){return encodeURIComponent(A).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function SA(A,I,g){if(!I)return A;const B=g&&g.encode||MA;oA.isFunction(g)&&(g={serialize:g});const C=g&&g.serialize;let Q;if(Q=C?C(I,g):oA.isURLSearchParams(I)?I.toString():new nA(I,g).toString(B),Q){const I=A.indexOf("#");-1!==I&&(A=A.slice(0,I)),A+=(-1===A.indexOf("?")?"?":"&")+Q}return A}const cA=class{constructor(){this.handlers=[]}use(A,I,g){return this.handlers.push({fulfilled:A,rejected:I,synchronous:!!g&&g.synchronous,runWhen:g?g.runWhen:null}),this.handlers.length-1}eject(A){this.handlers[A]&&(this.handlers[A]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(A){oA.forEach(this.handlers,function(I){null!==I&&A(I)})}},NA={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},kA={isBrowser:!0,classes:{URLSearchParams:"undefined"!=typeof URLSearchParams?URLSearchParams:nA,FormData:"undefined"!=typeof FormData?FormData:null,Blob:"undefined"!=typeof Blob?Blob:null},protocols:["http","https","file","blob","url","data"]},UA="undefined"!=typeof window&&"undefined"!=typeof document,JA="object"==typeof navigator&&navigator||void 0,KA=UA&&(!JA||["ReactNative","NativeScript","NS"].indexOf(JA.product)<0),YA="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,LA=UA&&window.location.href||"http://localhost",dA={...A,...kA},lA=function(A){function I(A,g,B,C){let Q=A[C++];if("__proto__"===Q)return!0;const E=Number.isFinite(+Q),i=C>=A.length;return Q=!Q&&oA.isArray(B)?B.length:Q,i?(oA.hasOwnProp(B,Q)?B[Q]=[B[Q],g]:B[Q]=g,!E):(B[Q]&&oA.isObject(B[Q])||(B[Q]=[]),I(A,g,B[Q],C)&&oA.isArray(B[Q])&&(B[Q]=function(A){const I={},g=Object.keys(A);let B;const C=g.length;let Q;for(B=0;B<C;B++)Q=g[B],I[Q]=A[Q];return I}(B[Q])),!E)}if(oA.isFormData(A)&&oA.isFunction(A.entries)){const g={};return oA.forEachEntry(A,(A,B)=>{I(function(A){return oA.matchAll(/\\w+|\\[(\\w*)]/g,A).map(A=>"[]"===A[0]?"":A[1]||A[0])}(A),B,g,0)}),g}return null},qA={transitional:NA,adapter:["xhr","http","fetch"],transformRequest:[function(A,I){const g=I.getContentType()||"",B=g.indexOf("application/json")>-1,C=oA.isObject(A);if(C&&oA.isHTMLForm(A)&&(A=new FormData(A)),oA.isFormData(A))return B?JSON.stringify(lA(A)):A;if(oA.isArrayBuffer(A)||oA.isBuffer(A)||oA.isStream(A)||oA.isFile(A)||oA.isBlob(A)||oA.isReadableStream(A))return A;if(oA.isArrayBufferView(A))return A.buffer;if(oA.isURLSearchParams(A))return I.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),A.toString();let Q;if(C){if(g.indexOf("application/x-www-form-urlencoded")>-1)return function(A,I){return RA(A,new dA.classes.URLSearchParams,{visitor:function(A,I,g,B){return dA.isNode&&oA.isBuffer(A)?(this.append(I,A.toString("base64")),!1):B.defaultVisitor.apply(this,arguments)},...I})}(A,this.formSerializer).toString();if((Q=oA.isFileList(A))||g.indexOf("multipart/form-data")>-1){const I=this.env&&this.env.FormData;return RA(Q?{"files[]":A}:A,I&&new I,this.formSerializer)}}return C||B?(I.setContentType("application/json",!1),function(A){if(oA.isString(A))try{return(0,JSON.parse)(A),oA.trim(A)}catch(A){if("SyntaxError"!==A.name)throw A}return(0,JSON.stringify)(A)}(A)):A}],transformResponse:[function(A){const I=this.transitional||qA.transitional,g=I&&I.forcedJSONParsing,B="json"===this.responseType;if(oA.isResponse(A)||oA.isReadableStream(A))return A;if(A&&oA.isString(A)&&(g&&!this.responseType||B)){const g=!(I&&I.silentJSONParsing)&&B;try{return JSON.parse(A,this.parseReviver)}catch(A){if(g){if("SyntaxError"===A.name)throw sA.from(A,sA.ERR_BAD_RESPONSE,this,null,this.response);throw A}}}return A}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:dA.classes.FormData,Blob:dA.classes.Blob},validateStatus:function(A){return A>=200&&A<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};oA.forEach(["delete","get","head","post","put","patch"],A=>{qA.headers[A]={}});const HA=qA,uA=oA.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),fA=Symbol("internals");function pA(A){return A&&String(A).trim().toLowerCase()}function mA(A){return!1===A||null==A?A:oA.isArray(A)?A.map(mA):String(A)}function bA(A,I,g,B,C){return oA.isFunction(B)?B.call(this,I,g):(C&&(I=g),oA.isString(I)?oA.isString(B)?-1!==I.indexOf(B):oA.isRegExp(B)?B.test(I):void 0:void 0)}class WA{constructor(A){A&&this.set(A)}set(A,I,g){const B=this;function C(A,I,g){const C=pA(I);if(!C)throw new Error("header name must be a non-empty string");const Q=oA.findKey(B,C);(!Q||void 0===B[Q]||!0===g||void 0===g&&!1!==B[Q])&&(B[Q||I]=mA(A))}const Q=(A,I)=>oA.forEach(A,(A,g)=>C(A,g,I));if(oA.isPlainObject(A)||A instanceof this.constructor)Q(A,I);else if(oA.isString(A)&&(A=A.trim())&&!/^[-_a-zA-Z0-9^\`|~,!#$%&'*+.]+$/.test(A.trim()))Q((A=>{const I={};let g,B,C;return A&&A.split("\\n").forEach(function(A){C=A.indexOf(":"),g=A.substring(0,C).trim().toLowerCase(),B=A.substring(C+1).trim(),!g||I[g]&&uA[g]||("set-cookie"===g?I[g]?I[g].push(B):I[g]=[B]:I[g]=I[g]?I[g]+", "+B:B)}),I})(A),I);else if(oA.isObject(A)&&oA.isIterable(A)){let g,B,C={};for(const I of A){if(!oA.isArray(I))throw TypeError("Object iterator must return a key-value pair");C[B=I[0]]=(g=C[B])?oA.isArray(g)?[...g,I[1]]:[g,I[1]]:I[1]}Q(C,I)}else null!=A&&C(I,A,g);return this}get(A,I){if(A=pA(A)){const g=oA.findKey(this,A);if(g){const A=this[g];if(!I)return A;if(!0===I)return function(A){const I=Object.create(null),g=/([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;let B;for(;B=g.exec(A);)I[B[1]]=B[2];return I}(A);if(oA.isFunction(I))return I.call(this,A,g);if(oA.isRegExp(I))return I.exec(A);throw new TypeError("parser must be boolean|regexp|function")}}}has(A,I){if(A=pA(A)){const g=oA.findKey(this,A);return!(!g||void 0===this[g]||I&&!bA(0,this[g],g,I))}return!1}delete(A,I){const g=this;let B=!1;function C(A){if(A=pA(A)){const C=oA.findKey(g,A);!C||I&&!bA(0,g[C],C,I)||(delete g[C],B=!0)}}return oA.isArray(A)?A.forEach(C):C(A),B}clear(A){const I=Object.keys(this);let g=I.length,B=!1;for(;g--;){const C=I[g];A&&!bA(0,this[C],C,A,!0)||(delete this[C],B=!0)}return B}normalize(A){const I=this,g={};return oA.forEach(this,(B,C)=>{const Q=oA.findKey(g,C);if(Q)return I[Q]=mA(B),void delete I[C];const E=A?function(A){return A.trim().toLowerCase().replace(/([a-z\\d])(\\w*)/g,(A,I,g)=>I.toUpperCase()+g)}(C):String(C).trim();E!==C&&delete I[C],I[E]=mA(B),g[E]=!0}),this}concat(...A){return this.constructor.concat(this,...A)}toJSON(A){const I=Object.create(null);return oA.forEach(this,(g,B)=>{null!=g&&!1!==g&&(I[B]=A&&oA.isArray(g)?g.join(", "):g)}),I}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([A,I])=>A+": "+I).join("\\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(A){return A instanceof this?A:new this(A)}static concat(A,...I){const g=new this(A);return I.forEach(A=>g.set(A)),g}static accessor(A){const I=(this[fA]=this[fA]={accessors:{}}).accessors,g=this.prototype;function B(A){const B=pA(A);I[B]||(function(A,I){const g=oA.toCamelCase(" "+I);["get","set","has"].forEach(B=>{Object.defineProperty(A,B+g,{value:function(A,g,C){return this[B].call(this,I,A,g,C)},configurable:!0})})}(g,A),I[B]=!0)}return oA.isArray(A)?A.forEach(B):B(A),this}}WA.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),oA.reduceDescriptors(WA.prototype,({value:A},I)=>{let g=I[0].toUpperCase()+I.slice(1);return{get:()=>A,set(A){this[g]=A}}}),oA.freezeMethods(WA);const ZA=WA;function xA(A,I){const g=this||HA,B=I||g,C=ZA.from(B.headers);let Q=B.data;return oA.forEach(A,function(A){Q=A.call(g,Q,C.normalize(),I?I.status:void 0)}),C.normalize(),Q}function VA(A){return!(!A||!A.__CANCEL__)}function OA(A,I,g){sA.call(this,null==A?"canceled":A,sA.ERR_CANCELED,I,g),this.name="CanceledError"}oA.inherits(OA,sA,{__CANCEL__:!0});const XA=OA;function TA(A,I,g){const B=g.config.validateStatus;g.status&&B&&!B(g.status)?I(new sA("Request failed with status code "+g.status,[sA.ERR_BAD_REQUEST,sA.ERR_BAD_RESPONSE][Math.floor(g.status/100)-4],g.config,g.request,g)):A(g)}const vA=(A,I,g=3)=>{let B=0;const C=function(A,I){A=A||10;const g=new Array(A),B=new Array(A);let C,Q=0,E=0;return I=void 0!==I?I:1e3,function(i){const o=Date.now(),D=B[E];C||(C=o),g[Q]=i,B[Q]=o;let a=E,t=0;for(;a!==Q;)t+=g[a++],a%=A;if(Q=(Q+1)%A,Q===E&&(E=(E+1)%A),o-C<I)return;const s=D&&o-D;return s?Math.round(1e3*t/s):void 0}}(50,250);return function(A,I){let g,B,C=0,Q=1e3/I;const E=(I,Q=Date.now())=>{C=Q,g=null,B&&(clearTimeout(B),B=null),A(...I)};return[(...A)=>{const I=Date.now(),i=I-C;i>=Q?E(A,I):(g=A,B||(B=setTimeout(()=>{B=null,E(g)},Q-i)))},()=>g&&E(g)]}(g=>{const Q=g.loaded,E=g.lengthComputable?g.total:void 0,i=Q-B,o=C(i);B=Q,A({loaded:Q,total:E,progress:E?Q/E:void 0,bytes:i,rate:o||void 0,estimated:o&&E&&Q<=E?(E-Q)/o:void 0,event:g,lengthComputable:null!=E,[I?"download":"upload"]:!0})},g)},jA=(A,I)=>{const g=null!=A;return[B=>I[0]({lengthComputable:g,total:A,loaded:B}),I[1]]},PA=A=>(...I)=>oA.asap(()=>A(...I)),zA=dA.hasStandardBrowserEnv?((A,I)=>g=>(g=new URL(g,dA.origin),A.protocol===g.protocol&&A.host===g.host&&(I||A.port===g.port)))(new URL(dA.origin),dA.navigator&&/(msie|trident)/i.test(dA.navigator.userAgent)):()=>!0,_A=dA.hasStandardBrowserEnv?{write(A,I,g,B,C,Q,E){if("undefined"==typeof document)return;const i=[\`\${A}=\${encodeURIComponent(I)}\`];oA.isNumber(g)&&i.push(\`expires=\${new Date(g).toUTCString()}\`),oA.isString(B)&&i.push(\`path=\${B}\`),oA.isString(C)&&i.push(\`domain=\${C}\`),!0===Q&&i.push("secure"),oA.isString(E)&&i.push(\`SameSite=\${E}\`),document.cookie=i.join("; ")},read(A){if("undefined"==typeof document)return null;const I=document.cookie.match(new RegExp("(?:^|; )"+A+"=([^;]*)"));return I?decodeURIComponent(I[1]):null},remove(A){this.write(A,"",Date.now()-864e5,"/")}}:{write(){},read:()=>null,remove(){}};function $A(A,I,g){let B=!/^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(I);return A&&(B||0==g)?function(A,I){return I?A.replace(/\\/?\\/$/,"")+"/"+I.replace(/^\\/+/,""):A}(A,I):I}const AI=A=>A instanceof ZA?{...A}:A;function II(A,I){I=I||{};const g={};function B(A,I,g,B){return oA.isPlainObject(A)&&oA.isPlainObject(I)?oA.merge.call({caseless:B},A,I):oA.isPlainObject(I)?oA.merge({},I):oA.isArray(I)?I.slice():I}function C(A,I,g,C){return oA.isUndefined(I)?oA.isUndefined(A)?void 0:B(void 0,A,0,C):B(A,I,0,C)}function Q(A,I){if(!oA.isUndefined(I))return B(void 0,I)}function E(A,I){return oA.isUndefined(I)?oA.isUndefined(A)?void 0:B(void 0,A):B(void 0,I)}function i(g,C,Q){return Q in I?B(g,C):Q in A?B(void 0,g):void 0}const o={url:Q,method:Q,data:Q,baseURL:E,transformRequest:E,transformResponse:E,paramsSerializer:E,timeout:E,timeoutMessage:E,withCredentials:E,withXSRFToken:E,adapter:E,responseType:E,xsrfCookieName:E,xsrfHeaderName:E,onUploadProgress:E,onDownloadProgress:E,decompress:E,maxContentLength:E,maxBodyLength:E,beforeRedirect:E,transport:E,httpAgent:E,httpsAgent:E,cancelToken:E,socketPath:E,responseEncoding:E,validateStatus:i,headers:(A,I,g)=>C(AI(A),AI(I),0,!0)};return oA.forEach(Object.keys({...A,...I}),function(B){const Q=o[B]||C,E=Q(A[B],I[B],B);oA.isUndefined(E)&&Q!==i||(g[B]=E)}),g}const gI=A=>{const I=II({},A);let{data:g,withXSRFToken:B,xsrfHeaderName:C,xsrfCookieName:Q,headers:E,auth:i}=I;if(I.headers=E=ZA.from(E),I.url=SA($A(I.baseURL,I.url,I.allowAbsoluteUrls),A.params,A.paramsSerializer),i&&E.set("Authorization","Basic "+btoa((i.username||"")+":"+(i.password?unescape(encodeURIComponent(i.password)):""))),oA.isFormData(g))if(dA.hasStandardBrowserEnv||dA.hasStandardBrowserWebWorkerEnv)E.setContentType(void 0);else if(oA.isFunction(g.getHeaders)){const A=g.getHeaders(),I=["content-type","content-length"];Object.entries(A).forEach(([A,g])=>{I.includes(A.toLowerCase())&&E.set(A,g)})}if(dA.hasStandardBrowserEnv&&(B&&oA.isFunction(B)&&(B=B(I)),B||!1!==B&&zA(I.url))){const A=C&&Q&&_A.read(Q);A&&E.set(C,A)}return I},BI="undefined"!=typeof XMLHttpRequest&&function(A){return new Promise(function(I,g){const B=gI(A);let C=B.data;const Q=ZA.from(B.headers).normalize();let E,i,o,D,a,{responseType:t,onUploadProgress:s,onDownloadProgress:w}=B;function G(){D&&D(),a&&a(),B.cancelToken&&B.cancelToken.unsubscribe(E),B.signal&&B.signal.removeEventListener("abort",E)}let h=new XMLHttpRequest;function r(){if(!h)return;const B=ZA.from("getAllResponseHeaders"in h&&h.getAllResponseHeaders());TA(function(A){I(A),G()},function(A){g(A),G()},{data:t&&"text"!==t&&"json"!==t?h.response:h.responseText,status:h.status,statusText:h.statusText,headers:B,config:A,request:h}),h=null}h.open(B.method.toUpperCase(),B.url,!0),h.timeout=B.timeout,"onloadend"in h?h.onloadend=r:h.onreadystatechange=function(){h&&4===h.readyState&&(0!==h.status||h.responseURL&&0===h.responseURL.indexOf("file:"))&&setTimeout(r)},h.onabort=function(){h&&(g(new sA("Request aborted",sA.ECONNABORTED,A,h)),h=null)},h.onerror=function(I){const B=I&&I.message?I.message:"Network Error",C=new sA(B,sA.ERR_NETWORK,A,h);C.event=I||null,g(C),h=null},h.ontimeout=function(){let I=B.timeout?"timeout of "+B.timeout+"ms exceeded":"timeout exceeded";const C=B.transitional||NA;B.timeoutErrorMessage&&(I=B.timeoutErrorMessage),g(new sA(I,C.clarifyTimeoutError?sA.ETIMEDOUT:sA.ECONNABORTED,A,h)),h=null},void 0===C&&Q.setContentType(null),"setRequestHeader"in h&&oA.forEach(Q.toJSON(),function(A,I){h.setRequestHeader(I,A)}),oA.isUndefined(B.withCredentials)||(h.withCredentials=!!B.withCredentials),t&&"json"!==t&&(h.responseType=B.responseType),w&&([o,a]=vA(w,!0),h.addEventListener("progress",o)),s&&h.upload&&([i,D]=vA(s),h.upload.addEventListener("progress",i),h.upload.addEventListener("loadend",D)),(B.cancelToken||B.signal)&&(E=I=>{h&&(g(!I||I.type?new XA(null,A,h):I),h.abort(),h=null)},B.cancelToken&&B.cancelToken.subscribe(E),B.signal&&(B.signal.aborted?E():B.signal.addEventListener("abort",E)));const R=function(A){const I=/^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(A);return I&&I[1]||""}(B.url);R&&-1===dA.protocols.indexOf(R)?g(new sA("Unsupported protocol "+R+":",sA.ERR_BAD_REQUEST,A)):h.send(C||null)})},CI=(A,I)=>{const{length:g}=A=A?A.filter(Boolean):[];if(I||g){let g,B=new AbortController;const C=function(A){if(!g){g=!0,E();const I=A instanceof Error?A:this.reason;B.abort(I instanceof sA?I:new XA(I instanceof Error?I.message:I))}};let Q=I&&setTimeout(()=>{Q=null,C(new sA(\`timeout \${I} of ms exceeded\`,sA.ETIMEDOUT))},I);const E=()=>{A&&(Q&&clearTimeout(Q),Q=null,A.forEach(A=>{A.unsubscribe?A.unsubscribe(C):A.removeEventListener("abort",C)}),A=null)};A.forEach(A=>A.addEventListener("abort",C));const{signal:i}=B;return i.unsubscribe=()=>oA.asap(E),i}},QI=function*(A,I){let g=A.byteLength;if(!I||g<I)return void(yield A);let B,C=0;for(;C<g;)B=C+I,yield A.slice(C,B),C=B},EI=(A,I,g,B)=>{const C=async function*(A,I){for await(const g of async function*(A){if(A[Symbol.asyncIterator])return void(yield*A);const I=A.getReader();try{for(;;){const{done:A,value:g}=await I.read();if(A)break;yield g}}finally{await I.cancel()}}(A))yield*QI(g,I)}(A,I);let Q,E=0,i=A=>{Q||(Q=!0,B&&B(A))};return new ReadableStream({async pull(A){try{const{done:I,value:B}=await C.next();if(I)return i(),void A.close();let Q=B.byteLength;if(g){let A=E+=Q;g(A)}A.enqueue(new Uint8Array(B))}catch(A){throw i(A),A}},cancel:A=>(i(A),C.return())},{highWaterMark:2})},{isFunction:iI}=oA,oI=(({Request:A,Response:I})=>({Request:A,Response:I}))(oA.global),{ReadableStream:DI,TextEncoder:aI}=oA.global,tI=(A,...I)=>{try{return!!A(...I)}catch(A){return!1}},sI=A=>{A=oA.merge.call({skipUndefined:!0},oI,A);const{fetch:I,Request:g,Response:B}=A,C=I?iI(I):"function"==typeof fetch,Q=iI(g),E=iI(B);if(!C)return!1;const i=C&&iI(DI),o=C&&("function"==typeof aI?(D=new aI,A=>D.encode(A)):async A=>new Uint8Array(await new g(A).arrayBuffer()));var D;const a=Q&&i&&tI(()=>{let A=!1;const I=new g(dA.origin,{body:new DI,method:"POST",get duplex(){return A=!0,"half"}}).headers.has("Content-Type");return A&&!I}),t=E&&i&&tI(()=>oA.isReadableStream(new B("").body)),s={stream:t&&(A=>A.body)};return C&&["text","arrayBuffer","blob","formData","stream"].forEach(A=>{!s[A]&&(s[A]=(I,g)=>{let B=I&&I[A];if(B)return B.call(I);throw new sA(\`Response type '\${A}' is not supported\`,sA.ERR_NOT_SUPPORT,g)})}),async A=>{let{url:C,method:E,data:i,signal:D,cancelToken:w,timeout:G,onDownloadProgress:h,onUploadProgress:r,responseType:R,headers:y,withCredentials:F="same-origin",fetchOptions:e}=gI(A),n=I||fetch;R=R?(R+"").toLowerCase():"text";let M=CI([D,w&&w.toAbortSignal()],G),S=null;const c=M&&M.unsubscribe&&(()=>{M.unsubscribe()});let N;try{if(r&&a&&"get"!==E&&"head"!==E&&0!==(N=await(async(A,I)=>{const B=oA.toFiniteNumber(A.getContentLength());return null==B?(async A=>{if(null==A)return 0;if(oA.isBlob(A))return A.size;if(oA.isSpecCompliantForm(A)){const I=new g(dA.origin,{method:"POST",body:A});return(await I.arrayBuffer()).byteLength}return oA.isArrayBufferView(A)||oA.isArrayBuffer(A)?A.byteLength:(oA.isURLSearchParams(A)&&(A+=""),oA.isString(A)?(await o(A)).byteLength:void 0)})(I):B})(y,i))){let A,I=new g(C,{method:"POST",body:i,duplex:"half"});if(oA.isFormData(i)&&(A=I.headers.get("content-type"))&&y.setContentType(A),I.body){const[A,g]=jA(N,vA(PA(r)));i=EI(I.body,65536,A,g)}}oA.isString(F)||(F=F?"include":"omit");const I=Q&&"credentials"in g.prototype,D={...e,signal:M,method:E.toUpperCase(),headers:y.normalize().toJSON(),body:i,duplex:"half",credentials:I?F:void 0};S=Q&&new g(C,D);let w=await(Q?n(S,e):n(C,D));const G=t&&("stream"===R||"response"===R);if(t&&(h||G&&c)){const A={};["status","statusText","headers"].forEach(I=>{A[I]=w[I]});const I=oA.toFiniteNumber(w.headers.get("content-length")),[g,C]=h&&jA(I,vA(PA(h),!0))||[];w=new B(EI(w.body,65536,g,()=>{C&&C(),c&&c()}),A)}R=R||"text";let k=await s[oA.findKey(s,R)||"text"](w,A);return!G&&c&&c(),await new Promise((I,g)=>{TA(I,g,{data:k,headers:ZA.from(w.headers),status:w.status,statusText:w.statusText,config:A,request:S})})}catch(I){if(c&&c(),I&&"TypeError"===I.name&&/Load failed|fetch/i.test(I.message))throw Object.assign(new sA("Network Error",sA.ERR_NETWORK,A,S),{cause:I.cause||I});throw sA.from(I,I&&I.code,A,S)}}},wI=new Map,GI=A=>{let I=A&&A.env||{};const{fetch:g,Request:B,Response:C}=I,Q=[B,C,g];let E,i,o=Q.length,D=wI;for(;o--;)E=Q[o],i=D.get(E),void 0===i&&D.set(E,i=o?new Map:sI(I)),D=i;return i},hI=(GI(),{http:null,xhr:BI,fetch:{get:GI}});oA.forEach(hI,(A,I)=>{if(A){try{Object.defineProperty(A,"name",{value:I})}catch(A){}Object.defineProperty(A,"adapterName",{value:I})}});const rI=A=>\`- \${A}\`,RI=A=>oA.isFunction(A)||null===A||!1===A,yI=function(A,I){A=oA.isArray(A)?A:[A];const{length:g}=A;let B,C;const Q={};for(let E=0;E<g;E++){let g;if(B=A[E],C=B,!RI(B)&&(C=hI[(g=String(B)).toLowerCase()],void 0===C))throw new sA(\`Unknown adapter '\${g}'\`);if(C&&(oA.isFunction(C)||(C=C.get(I))))break;Q[g||"#"+E]=C}if(!C){const A=Object.entries(Q).map(([A,I])=>\`adapter \${A} \`+(!1===I?"is not supported by the environment":"is not available in the build"));let I=g?A.length>1?"since :\\n"+A.map(rI).join("\\n"):" "+rI(A[0]):"as no adapter specified";throw new sA("There is no suitable adapter to dispatch the request "+I,"ERR_NOT_SUPPORT")}return C};function FI(A){if(A.cancelToken&&A.cancelToken.throwIfRequested(),A.signal&&A.signal.aborted)throw new XA(null,A)}function eI(A){return FI(A),A.headers=ZA.from(A.headers),A.data=xA.call(A,A.transformRequest),-1!==["post","put","patch"].indexOf(A.method)&&A.headers.setContentType("application/x-www-form-urlencoded",!1),yI(A.adapter||HA.adapter,A)(A).then(function(I){return FI(A),I.data=xA.call(A,A.transformResponse,I),I.headers=ZA.from(I.headers),I},function(I){return VA(I)||(FI(A),I&&I.response&&(I.response.data=xA.call(A,A.transformResponse,I.response),I.response.headers=ZA.from(I.response.headers))),Promise.reject(I)})}const nI="1.13.1",MI={};["object","boolean","number","function","string","symbol"].forEach((A,I)=>{MI[A]=function(g){return typeof g===A||"a"+(I<1?"n ":" ")+A}});const SI={};MI.transitional=function(A,I,g){function B(A,I){return"[Axios v"+nI+"] Transitional option '"+A+"'"+I+(g?". "+g:"")}return(g,C,Q)=>{if(!1===A)throw new sA(B(C," has been removed"+(I?" in "+I:"")),sA.ERR_DEPRECATED);return I&&!SI[C]&&(SI[C]=!0,console.warn(B(C," has been deprecated since v"+I+" and will be removed in the near future"))),!A||A(g,C,Q)}},MI.spelling=function(A){return(I,g)=>(console.warn(\`\${g} is likely a misspelling of \${A}\`),!0)};const cI={assertOptions:function(A,I,g){if("object"!=typeof A)throw new sA("options must be an object",sA.ERR_BAD_OPTION_VALUE);const B=Object.keys(A);let C=B.length;for(;C-- >0;){const Q=B[C],E=I[Q];if(E){const I=A[Q],g=void 0===I||E(I,Q,A);if(!0!==g)throw new sA("option "+Q+" must be "+g,sA.ERR_BAD_OPTION_VALUE);continue}if(!0!==g)throw new sA("Unknown option "+Q,sA.ERR_BAD_OPTION)}},validators:MI},NI=cI.validators;class kI{constructor(A){this.defaults=A||{},this.interceptors={request:new cA,response:new cA}}async request(A,I){try{return await this._request(A,I)}catch(A){if(A instanceof Error){let I={};Error.captureStackTrace?Error.captureStackTrace(I):I=new Error;const g=I.stack?I.stack.replace(/^.+\\n/,""):"";try{A.stack?g&&!String(A.stack).endsWith(g.replace(/^.+\\n.+\\n/,""))&&(A.stack+="\\n"+g):A.stack=g}catch(A){}}throw A}}_request(A,I){"string"==typeof A?(I=I||{}).url=A:I=A||{},I=II(this.defaults,I);const{transitional:g,paramsSerializer:B,headers:C}=I;void 0!==g&&cI.assertOptions(g,{silentJSONParsing:NI.transitional(NI.boolean),forcedJSONParsing:NI.transitional(NI.boolean),clarifyTimeoutError:NI.transitional(NI.boolean)},!1),null!=B&&(oA.isFunction(B)?I.paramsSerializer={serialize:B}:cI.assertOptions(B,{encode:NI.function,serialize:NI.function},!0)),void 0!==I.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?I.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:I.allowAbsoluteUrls=!0),cI.assertOptions(I,{baseUrl:NI.spelling("baseURL"),withXsrfToken:NI.spelling("withXSRFToken")},!0),I.method=(I.method||this.defaults.method||"get").toLowerCase();let Q=C&&oA.merge(C.common,C[I.method]);C&&oA.forEach(["delete","get","head","post","put","patch","common"],A=>{delete C[A]}),I.headers=ZA.concat(Q,C);const E=[];let i=!0;this.interceptors.request.forEach(function(A){"function"==typeof A.runWhen&&!1===A.runWhen(I)||(i=i&&A.synchronous,E.unshift(A.fulfilled,A.rejected))});const o=[];let D;this.interceptors.response.forEach(function(A){o.push(A.fulfilled,A.rejected)});let a,t=0;if(!i){const A=[eI.bind(this),void 0];for(A.unshift(...E),A.push(...o),a=A.length,D=Promise.resolve(I);t<a;)D=D.then(A[t++],A[t++]);return D}a=E.length;let s=I;for(;t<a;){const I=E[t++],g=E[t++];try{s=I(s)}catch(A){g.call(this,A);break}}try{D=eI.call(this,s)}catch(A){return Promise.reject(A)}for(t=0,a=o.length;t<a;)D=D.then(o[t++],o[t++]);return D}getUri(A){return SA($A((A=II(this.defaults,A)).baseURL,A.url,A.allowAbsoluteUrls),A.params,A.paramsSerializer)}}oA.forEach(["delete","get","head","options"],function(A){kI.prototype[A]=function(I,g){return this.request(II(g||{},{method:A,url:I,data:(g||{}).data}))}}),oA.forEach(["post","put","patch"],function(A){function I(I){return function(g,B,C){return this.request(II(C||{},{method:A,headers:I?{"Content-Type":"multipart/form-data"}:{},url:g,data:B}))}}kI.prototype[A]=I(),kI.prototype[A+"Form"]=I(!0)});const UI=kI;class JI{constructor(A){if("function"!=typeof A)throw new TypeError("executor must be a function.");let I;this.promise=new Promise(function(A){I=A});const g=this;this.promise.then(A=>{if(!g._listeners)return;let I=g._listeners.length;for(;I-- >0;)g._listeners[I](A);g._listeners=null}),this.promise.then=A=>{let I;const B=new Promise(A=>{g.subscribe(A),I=A}).then(A);return B.cancel=function(){g.unsubscribe(I)},B},A(function(A,B,C){g.reason||(g.reason=new XA(A,B,C),I(g.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(A){this.reason?A(this.reason):this._listeners?this._listeners.push(A):this._listeners=[A]}unsubscribe(A){if(!this._listeners)return;const I=this._listeners.indexOf(A);-1!==I&&this._listeners.splice(I,1)}toAbortSignal(){const A=new AbortController,I=I=>{A.abort(I)};return this.subscribe(I),A.signal.unsubscribe=()=>this.unsubscribe(I),A.signal}static source(){let A;return{token:new JI(function(I){A=I}),cancel:A}}}const KI=JI,YI={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(YI).forEach(([A,I])=>{YI[I]=A});const LI=YI,dI=function A(I){const g=new UI(I),B=y(UI.prototype.request,g);return oA.extend(B,UI.prototype,g,{allOwnKeys:!0}),oA.extend(B,g,null,{allOwnKeys:!0}),B.create=function(g){return A(II(I,g))},B}(HA);dI.Axios=UI,dI.CanceledError=XA,dI.CancelToken=KI,dI.isCancel=VA,dI.VERSION=nI,dI.toFormData=RA,dI.AxiosError=sA,dI.Cancel=dI.CanceledError,dI.all=function(A){return Promise.all(A)},dI.spread=function(A){return function(I){return A.apply(null,I)}},dI.isAxiosError=function(A){return oA.isObject(A)&&!0===A.isAxiosError},dI.mergeConfig=II,dI.AxiosHeaders=ZA,dI.formToJSON=A=>lA(oA.isHTMLForm(A)?new FormData(A):A),dI.getAdapter=yI,dI.HttpStatusCode=LI,dI.default=dI;const lI=dI;var qI=function(){function A(){E(this,A)}return a(A,null,[{key:"fetchRemoteData",value:(I=Q(G().mark(function A(I){var g;return G().wrap(function(A){for(;;)switch(A.prev=A.next){case 0:return A.prev=0,A.next=1,lI.get(I,{responseType:"arraybuffer"});case 1:return g=A.sent,A.abrupt("return",new Uint8Array(g.data));case 2:throw A.prev=2,A.catch(0);case 3:case"end":return A.stop()}},A,null,[[0,2]])})),function(A){return I.apply(this,arguments)})},{key:"string2Uint8Data",value:function(A){for(var I=new Uint8Array(A.length),g=0;g<I.length;g++)I[g]=255&A.charCodeAt(g);return I}},{key:"uint8Data2String",value:function(A){return String.fromCharCode.apply(String,A)}},{key:"parseMultiFile",value:function(I){var g=A.uint8Data2String(I).split("\\n"),B=[],C=0;return g.forEach(function(A){if((A=A.trim())&&!A.startsWith("#"))switch(C){case 0:return void(C=1);case 1:A.match(/^\\d+$/)||B.push(A);case 2:case 3:case 4:return void C++;case 5:return void(C=1)}}),B}}]);var I}(),HI=function(){function A(){E(this,A),this.instance,this.markerCount=0,this.multiMarkerCount=0,this.cameraCount=0,this.version="0.3.2",console.info("ARToolkit ",this.version)}return a(A,[{key:"init",value:(o=Q(G().mark(function I(){var g;return G().wrap(function(I){for(;;)switch(I.prev=I.next){case 0:return I.next=1,R();case 1:return g=I.sent,this.instance=g.instance,this._decorate(),("undefined"!=typeof window?window:B.g).artoolkit=this,A.INSTANCE=this.instance,I.abrupt("return",this);case 2:case"end":return I.stop()}},I,this)})),function(){return o.apply(this,arguments)})},{key:"_decorate",value:function(){var A=this;for(var I in["setup","teardown","setupAR2","setLogLevel","getLogLevel","setDebugMode","getDebugMode","getProcessingImage","setMarkerInfoDir","setMarkerInfoVertex","getTransMatSquare","getTransMatSquareCont","getTransMatMultiSquare","getTransMatMultiSquareRobust","getMultiMarkerNum","getMultiMarkerCount","detectMarker","getMarkerNum","detectNFTMarker","getNFTMarker","getNFTData","getMarker","getMultiEachMarker","setProjectionNearPlane","getProjectionNearPlane","setProjectionFarPlane","getProjectionFarPlane","setThresholdMode","getThresholdMode","setThreshold","getThreshold","setPatternDetectionMode","getPatternDetectionMode","setMatrixCodeType","getMatrixCodeType","setLabelingMode","getLabelingMode","setPattRatio","getPattRatio","setImageProcMode","getImageProcMode"].forEach(function(I){A[I]=A.instance[I]}),this.instance)I.match(/^AR/)&&(this[I]=this.instance[I])}},{key:"loadCamera",value:(i=Q(G().mark(function A(I){var g,B;return G().wrap(function(A){for(;;)switch(A.prev=A.next){case 0:if(g="/camera_param_"+this.cameraCount++,!(I instanceof Uint8Array)){A.next=1;break}B=I,A.next=4;break;case 1:return A.prev=1,A.next=2,qI.fetchRemoteData(I);case 2:B=A.sent,A.next=4;break;case 3:throw A.prev=3,A.catch(1);case 4:return this._storeDataFile(B,g),A.abrupt("return",this.instance._loadCamera(g));case 5:case"end":return A.stop()}},A,this,[[1,3]])})),function(A){return i.apply(this,arguments)})},{key:"addMarker",value:(C=Q(G().mark(function A(I,g){var B,C;return G().wrap(function(A){for(;;)switch(A.prev=A.next){case 0:if(B="/marker_"+this.markerCount++,-1===g.indexOf("\\n")){A.next=1;break}C=qI.string2Uint8Data(g),A.next=4;break;case 1:return A.prev=1,A.next=2,qI.fetchRemoteData(g);case 2:C=A.sent,A.next=4;break;case 3:throw A.prev=3,A.catch(1);case 4:return this._storeDataFile(C,B),A.abrupt("return",this.instance._addMarker(I,B));case 5:case"end":return A.stop()}},A,this,[[1,3]])})),function(A,I){return C.apply(this,arguments)})},{key:"addMultiMarker",value:(g=Q(G().mark(function I(g,B,C,Q){var E;return G().wrap(function(I){for(;;)switch(I.prev=I.next){case 0:E="/multi_marker_"+this.multiMarkerCount++,A.ajax(B,E,function(I){var Q=qI.parseMultiFile(I);function i(){var I=A.INSTANCE._addMultiMarker(g,E),B=A.INSTANCE.getMultiMarkerNum(g,I);C&&C(I,B)}if(!Q.length)return i();var o=B.split("/").slice(0,-1).join("/");Q=Q.map(function(A){return[o+"/"+A,A]}),A.ajaxDependencies(Q,i)},function(A){Q&&Q(A)});case 1:case"end":return I.stop()}},I,this)})),function(A,I,B,C){return g.apply(this,arguments)})},{key:"addNFTMarker",value:(I=Q(G().mark(function A(I,g){var B,C,E,i;return G().wrap(function(A){for(;;)switch(A.prev=A.next){case 0:return B="/markerNFT_"+this.markerCount++,C=["fset","iset","fset3"],E=function(){var A=Q(G().mark(function A(I){var C,Q,E;return G().wrap(function(A){for(;;)switch(A.prev=A.next){case 0:return C=g+"."+I,Q=B+"."+I,A.next=1,qI.fetchRemoteData(C);case 1:E=A.sent,this._storeDataFile(E,Q);case 2:case"end":return A.stop()}},A,this)}));return function(I){return A.apply(this,arguments)}}(),i=C.map(E,this),A.next=1,Promise.all(i);case 1:return A.abrupt("return",this.instance._addNFTMarker(I,B));case 2:case"end":return A.stop()}},A,this)})),function(A,g){return I.apply(this,arguments)})},{key:"_storeDataFile",value:function(A,I){this.instance.FS.writeFile(I,A,{encoding:"binary"})}}],[{key:"UNKNOWN_MARKER",get:function(){return-1}},{key:"PATTERN_MARKER",get:function(){return 0}},{key:"BARCODE_MARKER",get:function(){return 1}},{key:"NFT_MARKER",get:function(){return 2}},{key:"ajax",value:function(I,g,B,C,Q){var E=new XMLHttpRequest;E.open("GET",I,!0),E.responseType="arraybuffer",E.onload=function(){if(200==this.status){var I=E.response,i=new Uint8Array(I);!function(I,g,B,C){A.INSTANCE.FS.writeFile(I,g,{encoding:"binary"}),B(g,C)}(g,i,B,Q)}else C(this.status)},E.send()}},{key:"ajaxDependencies",value:function(I,g){var B=I.pop();B?A.ajax(B[0],B[1],function(){A.ajaxDependencies(I,g)}):g()}}]);var I,g,C,i,o}();function uI(A,I){var g=Object.keys(A);if(Object.getOwnPropertySymbols){var B=Object.getOwnPropertySymbols(A);I&&(B=B.filter(function(I){return Object.getOwnPropertyDescriptor(A,I).enumerable})),g.push.apply(g,B)}return g}function fI(A){for(var I=1;I<arguments.length;I++){var g=null!=arguments[I]?arguments[I]:{};I%2?uI(Object(g),!0).forEach(function(I){t(A,I,g[I])}):Object.getOwnPropertyDescriptors?Object.defineProperties(A,Object.getOwnPropertyDescriptors(g)):uI(Object(g)).forEach(function(I){Object.defineProperty(A,I,Object.getOwnPropertyDescriptor(g,I))})}return A}t(HI,"INSTANCE",void 0);var pI=function(){function A(I,g,B,C){E(this,A),this.options=fI(fI({},{canvas:null,orientation:"landscape"}),C),this.id=-1,this.width=I,this.height=g,this.image,this.orientation=this.options.orientation,this.cameraParam=B,this.cameraId=-1,this.cameraLoaded=!1,this.artoolkit,this.listeners={},this.defaultMarkerWidth=1,this.patternMarkers={},this.barcodeMarkers={},this.nftMarkers={},this.multiMarkers={},this.transform_mat=new Float32Array(16),this.transformGL_RH=new Float64Array(16),this.videoWidth=I,this.videoHeight=g,this.videoSize=this.videoWidth*this.videoHeight,this.framepointer=null,this.framesize=null,this.dataHeap=null,this.videoLuma=null,this.camera_mat=null,this.marker_transform_mat=null,this.videoLumaPointer=null,this.options.canvas?this.canvas=this.options.canvas:"undefined"!=typeof document&&(this.canvas=document.createElement("canvas")),this.canvas?(this.canvas.width=I,this.canvas.height=g,this.ctx=this.canvas.getContext("2d")):console.warn("No canvas available"),this.nftMarkerFound=!1,this.nftMarkerFoundTime=!1,this.nftMarkerCount=0,this._bwpointer=!1}return a(A,[{key:"dispose",value:function(){for(var A in this.cameraId=-1,this.cameraParam="",this.cameraLoaded=!1,this.id>-1&&this.artoolkit.teardown(this.id),this.image&&this.image.srcObject,this)this[A]=null}},{key:"process",value:function(A){var I=this.detectMarker(A);0!=I&&console.error("[ARController]","detectMarker error:",I);var g,B,C=this.getMarkerNum();for(g in this.patternMarkers)(B=this.patternMarkers[g]).inPrevious=B.inCurrent,B.inCurrent=!1;for(g in this.barcodeMarkers)(B=this.barcodeMarkers[g]).inPrevious=B.inCurrent,B.inCurrent=!1;for(g in this.nftMarkers)(B=this.nftMarkers[g]).inPrevious=B.inCurrent,B.inCurrent=!1;for(var Q=0;Q<C;Q++){var E=this.getMarker(Q),i=HI.UNKNOWN_MARKER,o=this.trackPatternMarkerId(-1);E.idPatt>-1&&(E.id===E.idPatt||-1===E.idMatrix)?(o=this.trackPatternMarkerId(E.idPatt),i=HI.PATTERN_MARKER,E.dir!==E.dirPatt&&this.setMarkerInfoDir(Q,E.dirPatt)):E.idMatrix>-1&&(o=this.trackBarcodeMarkerId(E.idMatrix),i=HI.BARCODE_MARKER,E.dir!==E.dirMatrix&&this.setMarkerInfoDir(Q,E.dirMatrix)),i!==HI.UNKNOWN_MARKER&&o.inPrevious?this.getTransMatSquareCont(Q,o.markerWidth,o.matrix,o.matrix):this.getTransMatSquare(Q,o.markerWidth,o.matrix),o.inCurrent=!0,this.transMatToGLMat(o.matrix,this.transform_mat),this.transformGL_RH=this.arglCameraViewRHf(this.transform_mat),this.dispatchEvent({name:"getMarker",target:this,data:{index:Q,type:i,marker:E,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}})}var D=this.nftMarkerCount;this.detectNFTMarker();for(var a=0;a<D;a++){var t=this.getNFTMarker(a),s=HI.NFT_MARKER;if(t.found){this.nftMarkerFound=a,this.nftMarkerFoundTime=Date.now();var w=this.trackNFTMarkerId(a);w.matrix.set(t.pose),w.inCurrent=!0,this.transMatToGLMat(w.matrix,this.transform_mat),this.transformGL_RH=this.arglCameraViewRHf(this.transform_mat),this.dispatchEvent({name:"getNFTMarker",target:this,data:{index:a,type:s,marker:t,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}})}else self.nftMarkerFound===a&&Date.now()-this.nftMarkerFoundTime>200&&(this.nftMarkerFound=!1,this.dispatchEvent({name:"lostNFTMarker",target:this,data:{index:a,type:s,marker:t,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}}))}for(var G=this.getMultiMarkerCount(),h=0;h<G;h++){var r=this.getMultiMarkerPatternCount(h),R=!1;this.artoolkit.getTransMatMultiSquareRobust(this.id,h),this.transMatToGLMat(this.marker_transform_mat,this.transform_mat),this.transformGL_RH=this.arglCameraViewRHf(this.transform_mat);for(var y=0;y<r;y++)if((e=this.getMultiEachMarker(h,y)).visible>=0){R=!0,this.dispatchEvent({name:"getMultiMarker",target:this,data:{multiMarkerId:h,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}});break}if(R)for(var F=0;F<r;F++){var e=this.getMultiEachMarker(h,F);this.transMatToGLMat(this.marker_transform_mat,this.transform_mat),this.transformGL_RH=this.arglCameraViewRHf(this.transform_mat),this.dispatchEvent({name:"getMultiMarkerSub",target:this,data:{multiMarkerId:h,markerIndex:F,marker:e,matrix:this.transform_mat,matrixGL_RH:this.transformGL_RH}})}}this._bwpointer&&this.debugDraw()}},{key:"detectNFTMarker",value:function(){this.artoolkit.detectNFTMarker(this.id)}},{key:"trackPatternMarkerId",value:function(A,I){var g=this.patternMarkers[A];return g||(this.patternMarkers[A]=g={inPrevious:!1,inCurrent:!1,matrix:new Float64Array(12),matrixGL_RH:new Float64Array(12),markerWidth:I||this.defaultMarkerWidth}),I&&(g.markerWidth=I),g}},{key:"trackBarcodeMarkerId",value:function(A,I){var g=this.barcodeMarkers[A];return g||(this.barcodeMarkers[A]=g={inPrevious:!1,inCurrent:!1,matrix:new Float64Array(12),matrixGL_RH:new Float64Array(12),markerWidth:I||this.defaultMarkerWidth}),I&&(g.markerWidth=I),g}},{key:"trackNFTMarkerId",value:function(A,I){var g=this.nftMarkers[A];return g||(this.nftMarkers[A]=g={inPrevious:!1,inCurrent:!1,matrix:new Float64Array(12),matrixGL_RH:new Float64Array(12),markerWidth:I||this.defaultMarkerWidth}),I&&(g.markerWidth=I),g}},{key:"trackMultiMarkersId",value:function(A,I){var g=this.multiMarkers[A];return g||(this.multiMarkers[A]=g={inPrevious:!1,inCurrent:!1,multiMarkerId:A,matrix:new Float64Array(12),matrixGL_RH:new Float64Array(12),markerWidth:I||this.defaultMarkerWidth}),I&&(g.markerWidth=I),g}},{key:"getMultiMarkerCount",value:function(){return this.artoolkit.getMultiMarkerCount(this.id)}},{key:"getMultiMarkerPatternCount",value:function(A){return this.artoolkit.getMultiMarkerNum(this.id,A)}},{key:"addEventListener",value:function(A,I){this.listeners[A]||(this.listeners[A]=[]),this.listeners[A].push(I)}},{key:"removeEventListener",value:function(A,I){if(this.listeners[A]){var g=this.listeners[A].indexOf(I);g>-1&&this.listeners[A].splice(g,1)}}},{key:"dispatchEvent",value:function(A){var I=this.listeners[A.name];if(I)for(var g=0;g<I.length;g++)I[g].call(this,A)}},{key:"debugSetup",value:function(){"undefined"!=typeof document?(document.body.appendChild(this.canvas),this.setDebugMode(!0),this._bwpointer=this.getProcessingImage()):console.log("debugSetup() currently only supports Browser environments")}},{key:"debugDraw",value:function(){for(var A=new Uint8ClampedArray(this.artoolkit.instance.HEAPU8.buffer,this._bwpointer,this.framesize),I=new ImageData(new Uint8ClampedArray(this.canvas.width*this.canvas.height*4),this.canvas.width,this.canvas.height),g=0,B=0;g<A.length;g++,B+=4){var C=A[g];I.data[B+0]=C,I.data[B+1]=C,I.data[B+2]=C,I.data[B+3]=255}this.ctx.putImageData(I,0,0);for(var Q=this.getMarkerNum(),E=0;E<Q;E++)this.drawDebugMarker(this.getMarker(E))}},{key:"drawDebugMarker",value:function(A){var I=A.vertex,g=A.pos,B=this.ctx;B.lineWidth=5,B.strokeStyle="red",B.beginPath(),B.moveTo(I[0][0],I[0][1]),B.lineTo(I[1][0],I[1][1]),B.stroke(),B.beginPath(),B.moveTo(I[2][0],I[2][1]),B.lineTo(I[3][0],I[3][1]),B.stroke(),B.strokeStyle="green",B.beginPath(),B.lineTo(I[1][0],I[1][1]),B.lineTo(I[2][0],I[2][1]),B.stroke(),B.beginPath(),B.moveTo(I[3][0],I[3][1]),B.lineTo(I[0][0],I[0][1]),B.stroke(),B.beginPath(),B.arc(g[0],g[1],8,0,2*Math.PI),B.fillStyle="red",B.fill()}},{key:"loadMarker",value:(o=Q(G().mark(function A(I){return G().wrap(function(A){for(;;)switch(A.prev=A.next){case 0:return A.next=1,this.artoolkit.addMarker(this.id,I);case 1:return A.abrupt("return",A.sent);case 2:case"end":return A.stop()}},A,this)})),function(A){return o.apply(this,arguments)})},{key:"loadMultiMarker",value:(i=Q(G().mark(function A(I,g,B){return G().wrap(function(A){for(;;)switch(A.prev=A.next){case 0:return A.next=1,this.artoolkit.addMultiMarker(this.id,I,g,B);case 1:return A.abrupt("return",A.sent);case 2:case"end":return A.stop()}},A,this)})),function(A,I,g){return i.apply(this,arguments)})},{key:"loadNFTMarker",value:(C=Q(G().mark(function A(I){var g;return G().wrap(function(A){for(;;)switch(A.prev=A.next){case 0:return A.next=1,this.artoolkit.addNFTMarker(this.id,I);case 1:return g=A.sent,this.nftMarkerCount=g+1,A.abrupt("return",g);case 2:case"end":return A.stop()}},A,this)})),function(A){return C.apply(this,arguments)})},{key:"getTransMatSquare",value:function(A,I,g){return this.artoolkit.getTransMatSquare(this.id,A,I),g.set(this.marker_transform_mat),g}},{key:"getTransMatSquareCont",value:function(A,I,g,B){return this.marker_transform_mat.set(g),this.artoolkit.getTransMatSquareCont(this.id,A,I),B.set(this.marker_transform_mat),B}},{key:"getTransMatMultiSquare",value:function(A,I){return this.artoolkit.getTransMatMultiSquare(this.id,A),I.set(this.marker_transform_mat),I}},{key:"getTransMatMultiSquareRobust",value:function(A,I){return this.artoolkit.getTransMatMultiSquare(this.id,A),I.set(this.marker_transform_mat),I}},{key:"transMatToGLMat",value:function(A,I,g){return null==I&&(I=new Float64Array(16)),I[0]=A[0],I[4]=A[1],I[8]=A[2],I[12]=A[3],I[1]=A[4],I[5]=A[5],I[9]=A[6],I[13]=A[7],I[2]=A[8],I[6]=A[9],I[10]=A[10],I[14]=A[11],I[3]=0,I[7]=0,I[11]=0,I[15]=1,null!=g&&0!==g&&(I[12]*=g,I[13]*=g,I[14]*=g),I}},{key:"arglCameraViewRHf",value:function(A,I,g){var B;return(B=null==I?new Float64Array(16):I)[0]=A[0],B[4]=A[4],B[8]=A[8],B[12]=A[12],B[1]=-A[1],B[5]=-A[5],B[9]=-A[9],B[13]=-A[13],B[2]=-A[2],B[6]=-A[6],B[10]=-A[10],B[14]=-A[14],B[3]=0,B[7]=0,B[11]=0,B[15]=1,null!=g&&0!==g&&(B[12]*=g,B[13]*=g,B[14]*=g),B}},{key:"detectMarker",value:function(A){return this._copyImageToHeap(A)?this.artoolkit.detectMarker(this.id):-99}},{key:"getMarkerNum",value:function(){return this.artoolkit.getMarkerNum(this.id)}},{key:"getMarker",value:function(A){if(0===this.artoolkit.getMarker(this.id,A))return this.artoolkit.markerInfo}},{key:"getNFTMarker",value:function(A){if(0===this.artoolkit.getNFTMarker(this.id,A))return this.artoolkit.NFTMarkerInfo}},{key:"getNFTData",value:function(A,I){return this.artoolkit.getNFTData(A,I)}},{key:"setMarkerInfoVertex",value:function(A,I){for(var g=0;g<I.length;g++)this.marker_transform_mat[2*g+0]=I[g][0],this.marker_transform_mat[2*g+1]=I[g][1];return this.artoolkit.setMarkerInfoVertex(this.id,A)}},{key:"cloneMarkerInfo",value:function(A){return JSON.parse(JSON.stringify(A))}},{key:"getMultiEachMarker",value:function(A,I){if(0===this.artoolkit.getMultiEachMarker(this.id,A,I))return this.artoolkit.multiEachMarkerInfo}},{key:"getTransformationMatrix",value:function(){return this.transform_mat}},{key:"getCameraMatrix",value:function(){return this.camera_mat}},{key:"getMarkerTransformationMatrix",value:function(){return this.marker_transform_mat}},{key:"setDebugMode",value:function(A){return this.artoolkit.setDebugMode(this.id,A)}},{key:"getDebugMode",value:function(){return this.artoolkit.getDebugMode(this.id)}},{key:"getProcessingImage",value:function(){return this.artoolkit.getProcessingImage(this.id)}},{key:"setLogLevel",value:function(A){return this.artoolkit.setLogLevel(A)}},{key:"getLogLevel",value:function(){return this.artoolkit.getLogLevel()}},{key:"setMarkerInfoDir",value:function(A,I){return this.artoolkit.setMarkerInfoDir(this.id,A,I)}},{key:"setProjectionNearPlane",value:function(A){return this.artoolkit.setProjectionNearPlane(this.id,A)}},{key:"getProjectionNearPlane",value:function(){return this.artoolkit.getProjectionNearPlane(this.id)}},{key:"setProjectionFarPlane",value:function(A){return this.artoolkit.setProjectionFarPlane(this.id,A)}},{key:"getProjectionFarPlane",value:function(){return this.artoolkit.getProjectionFarPlane(this.id)}},{key:"setThresholdMode",value:function(A){return this.artoolkit.setThresholdMode(this.id,A)}},{key:"getThresholdMode",value:function(){return this.artoolkit.getThresholdMode(this.id)}},{key:"setThreshold",value:function(A){return this.artoolkit.setThreshold(this.id,A)}},{key:"getThreshold",value:function(){return this.artoolkit.getThreshold(this.id)}},{key:"setPatternDetectionMode",value:function(A){return this.artoolkit.setPatternDetectionMode(this.id,A)}},{key:"getPatternDetectionMode",value:function(){return this.artoolkit.getPatternDetectionMode(this.id)}},{key:"setMatrixCodeType",value:function(A){return this.artoolkit.setMatrixCodeType(this.id,A)}},{key:"getMatrixCodeType",value:function(){return this.artoolkit.getMatrixCodeType(this.id)}},{key:"setLabelingMode",value:function(A){return this.artoolkit.setLabelingMode(this.id,A)}},{key:"getLabelingMode",value:function(){return this.artoolkit.getLabelingMode(this.id)}},{key:"setPattRatio",value:function(A){return this.artoolkit.setPattRatio(this.id,A)}},{key:"getPattRatio",value:function(){return this.artoolkit.getPattRatio(this.id)}},{key:"setImageProcMode",value:function(A){return this.artoolkit.setImageProcMode(this.id,A)}},{key:"getImageProcMode",value:function(){return this.artoolkit.getImageProcMode(this.id)}},{key:"_initialize",value:(B=Q(G().mark(function A(){var I,g=this;return G().wrap(function(A){for(;;)switch(A.prev=A.next){case 0:return A.next=1,(new HI).init();case 1:return this.artoolkit=A.sent,console.log("[ARController]","ARToolkit initialized"),A.next=2,this.artoolkit.loadCamera(this.cameraParam);case 2:return this.cameraId=A.sent,console.log("[ARController]","Camera params loaded with ID",this.cameraId),this.id=this.artoolkit.setup(this.width,this.height,this.cameraId),console.log("[ARController]","Got ID from setup",this.id),this._initNFT(),I=artoolkit.frameMalloc,this.framepointer=I.framepointer,this.framesize=I.framesize,this.videoLumaPointer=I.videoLumaPointer,this.dataHeap=new Uint8Array(this.artoolkit.instance.HEAPU8.buffer,this.framepointer,this.framesize),this.videoLuma=new Uint8Array(this.artoolkit.instance.HEAPU8.buffer,this.videoLumaPointer,this.framesize/4),this.camera_mat=new Float64Array(this.artoolkit.instance.HEAPU8.buffer,I.camera,16),this.marker_transform_mat=new Float64Array(this.artoolkit.instance.HEAPU8.buffer,I.transform,12),this.setProjectionNearPlane(.1),this.setProjectionFarPlane(1e3),setTimeout(function(){g.dispatchEvent({name:"load",target:g})},1),A.abrupt("return",this);case 3:case"end":return A.stop()}},A,this)})),function(){return B.apply(this,arguments)})},{key:"_initNFT",value:function(){this.artoolkit.setupAR2(this.id)}},{key:"_copyImageToHeap",value:function(A){var I;if(A||(A=this.image),A.data)I=A.data;else{if(this.ctx.save(),"portrait"===this.orientation){this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height);var g=this.canvas.height/this.canvas.width,B=this.canvas.width*g,C=this.canvas.height*g,Q=(this.canvas.width-C)/2;this.ctx.drawImage(A,Q,0,C,B)}else this.ctx.drawImage(A,0,0,this.canvas.width,this.canvas.height);this.ctx.restore(),I=this.ctx.getImageData(0,0,this.canvas.width,this.canvas.height).data}if(this.videoLuma)for(var E=0,i=0;i<this.videoSize;i++){var o=I[E+0],D=I[E+1],a=I[E+2];this.videoLuma[i]=o+o+o+a+D+D+D+D>>3,E+=4}return!!this.dataHeap&&(this.dataHeap.set(I),!0)}}],[{key:"initWithDimensions",value:(g=Q(G().mark(function I(g,B,C,Q){var E;return G().wrap(function(I){for(;;)switch(I.prev=I.next){case 0:return E=new A(g,B,C,Q),I.next=1,E._initialize();case 1:return I.abrupt("return",I.sent);case 2:case"end":return I.stop()}},I)})),function(A,I,B,C){return g.apply(this,arguments)})},{key:"initWithImage",value:(I=Q(G().mark(function I(g,B,C){var Q,E,i;return G().wrap(function(I){for(;;)switch(I.prev=I.next){case 0:return Q=g.videoWidth||g.width,E=g.videoHeight||g.height,I.next=1,A.initWithDimensions(Q,E,B,C);case 1:return(i=I.sent).image=g,I.abrupt("return",i);case 2:case"end":return I.stop()}},I)})),function(A,g,B){return I.apply(this,arguments)})}]);var I,g,B,C,i,o}();const mI={ARToolkit:HI,ARController:pI}})(),C.default})(),A.exports=B()}},I={};function g(B){var C=I[B];if(void 0!==C)return C.exports;var Q=I[B]={exports:{}};return A[B].call(Q.exports,Q,Q.exports,g),Q.exports}g.n=A=>{var I=A&&A.__esModule?()=>A.default:()=>A;return g.d(I,{a:I}),I},g.d=(A,I)=>{for(var B in I)g.o(I,B)&&!g.o(A,B)&&Object.defineProperty(A,B,{enumerable:!0,get:I[B]})},g.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(A){if("object"==typeof window)return window}}(),g.o=(A,I)=>Object.prototype.hasOwnProperty.call(A,I),(()=>{"use strict";var A=g(144),I=g.n(A);const{ARController:B}=I();onmessage=function(A){var I=A.data;switch(I.type){case"init":return void function(A){var I,g,C=self.origin;console.log("base path:",C);var i=/https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#()?&//=]*)/gim.test(A.param);1==i?I=A.param:0==i&&(I=C+"/"+A.param);B.initWithDimensions(A.pw,A.ph,I).then(function(I){var B=(Q=I).getCameraMatrix(),i=/https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#()?&//=]*)/gim.test(A.marker);1==i?g=A.marker:0==i&&(g=C+"/"+A.marker),Q.loadNFTMarker(g).then(function(A){Q.trackNFTMarkerId(A);let I=Q.getNFTData(Q.id,0);console.log("nftMarker data: ",I),postMessage({type:"markerInfos",marker:JSON.stringify(I)}),postMessage({type:"endLoading"})}).catch(function(A){console.log("Error in loading marker on Worker",A)}),Q.addEventListener("getNFTMarker",function(A){E={type:"found",matrix:JSON.stringify(A.data.matrix)}}),postMessage({type:"loaded",proj:JSON.stringify(B)})}).catch(function(A){console.error("Error while intizalizing arController",A)})}(I);case"process":return C=I.imagedata,E=null,Q&&Q.process&&Q.process(C),E?postMessage(E):postMessage({type:"not found"}),void(C=null)}};var C=null,Q=null,E=null})()})();`,"Worker",void 0,void 0)}var v=Mo(144),D=Mo.n(v);const{ARToolkit:h}=D(),p=function(q,gA,yA){var ge=this;s.call(this,gA),this.context=q,this.parameters={size:1,type:"unknown",patternUrl:null,barcodeValue:null,descriptorsUrl:null,changeMatrixMode:"modelViewMatrix",minConfidence:.6,smooth:!1,smoothCount:5,smoothTolerance:.01,smoothThreshold:2};var le=["pattern","barcode","nft","unknown"];console.assert(le.indexOf(this.parameters.type)!==-1,"illegal value",this.parameters.type),le=["modelViewMatrix","cameraTransformMatrix"],console.assert(le.indexOf(this.parameters.changeMatrixMode)!==-1,"illegal value",this.parameters.changeMatrixMode),this.object3d=gA,this.object3d.matrixAutoUpdate=!1,this.object3d.visible=!1,function(Qt){if(Qt!==void 0)for(var Ct in Qt){var bt=Qt[Ct];bt!==void 0?ge.parameters[Ct]!==void 0?ge.parameters[Ct]=bt:console.warn("ArMarkerControls: '"+Ct+"' is not a property of this material."):console.warn("ArMarkerControls: '"+Ct+"' parameter is undefined.")}}(yA),this.parameters.smooth&&(this.smoothMatrices=[]),q.addMarker(this),ge.context.parameters.trackingBackend==="artoolkit"?this._initArtoolkit():console.assert(!1)};(p.prototype=Object.create(s.prototype)).constructor=p,p.prototype.dispose=function(){this.context&&this.context.arController&&this.context.arController.removeEventListener("getMarker",this.onGetMarker),this.context.removeMarker(this),this.object3d=null,this.smoothMatrices=[]},p.prototype.updateWithModelViewMatrix=function(q){var gA=this.object3d;if(gA.visible=!0,this.context.parameters.trackingBackend==="artoolkit"){var yA=new O.Matrix4().copy(this.context._artoolkitProjectionAxisTransformMatrix);yA.multiply(q),q.copy(yA)}else console.assert(!1);var ge=new O.Matrix4().makeRotationX(Math.PI/2);q.multiply(ge);var le=!1;if(this.parameters.changeMatrixMode==="modelViewMatrix")if(this.parameters.smooth){var Qt,Ct,bt,pi,hi=0;if(this.smoothMatrices.push(q.elements.slice()),this.smoothMatrices.length<this.parameters.smoothCount+1)gA.matrix.copy(q);else{for(Ct in this.smoothMatrices.shift(),pi=[],q.elements){for(bt in Qt=0,this.smoothMatrices)Qt+=this.smoothMatrices[bt][Ct];pi[Ct]=Qt/this.parameters.smoothCount,Math.abs(pi[Ct]-q.elements[Ct])>=this.parameters.smoothTolerance&&hi++}if(hi>=this.parameters.smoothThreshold){for(Ct in q.elements)q.elements[Ct]=pi[Ct];gA.matrix.copy(q),le=!0}}}else gA.matrix.copy(q);else this.parameters.changeMatrixMode==="cameraTransformMatrix"?gA.matrix.copy(q).invert():console.assert(!1);return gA.matrix.decompose(gA.position,gA.quaternion,gA.scale),this.dispatchEvent({type:"markerFound"}),le},p.prototype.name=function(){var q="";return q+=this.parameters.type,this.parameters.type==="pattern"?q+=" - "+this.parameters.patternUrl.replace(/^.*\//g,""):this.parameters.type==="barcode"?q+=" - "+this.parameters.barcodeValue:this.parameters.type==="nft"?q+=" - "+this.parameters.descriptorsUrl.replace(/^.*\//g,""):console.assert(!1,"no .name() implemented for this marker controls"),q},p.prototype._initArtoolkit=function(){var q=this,gA=null,yA=setInterval(()=>{var le;q.context.arController!==null&&(clearInterval(yA),yA=null,le=q.context.arController,console.assert(le!==null),q.parameters.type==="pattern"?le.loadMarker(q.parameters.patternUrl).then(function(Qt){gA=Qt,le.trackPatternMarkerId(gA,q.parameters.size)}):q.parameters.type==="barcode"?(gA=q.parameters.barcodeValue,le.trackBarcodeMarkerId(gA,q.parameters.size)):q.parameters.type==="nft"?function(Qt,Ct){var bt=new T;window.addEventListener("arjs-video-loaded",function(pi){var hi=pi.detail.component,un=hi.clientWidth,sn=hi.clientHeight,En=320/Math.max(un,sn/3*4);const bn=un*En,go=sn*En,Ao=Math.max(bn,go/3*4),Kn=Math.max(go,bn/4*3),_o=(Ao-bn)/2,Kt=(Kn-go)/2;Ct.canvas.style.clientWidth=Ao+"px",Ct.canvas.style.clientHeight=Kn+"px",Ct.canvas.width=Ao,Ct.canvas.height=Kn;var xA=Ct.canvas.getContext("2d");bt.postMessage({type:"init",pw:Ao,ph:Kn,marker:Qt,param:Ct.cameraParam}),bt.onmessage=function(vA){if(vA&&vA.data&&vA.data.type==="endLoading"){var ie=document.querySelector(".arjs-loader");ie&&ie.remove();var ZA=new Event("arjs-nft-loaded");window.dispatchEvent(ZA)}if(vA&&vA.data&&vA.data.type==="loaded"){var jA=JSON.parse(vA.data.proj),Be=Ao/bn,aA=Kn/go;jA[0]*=Be,jA[4]*=Be,jA[8]*=Be,jA[12]*=Be,jA[1]*=aA,jA[5]*=aA,jA[9]*=aA,jA[13]*=aA,function(YA,ue){var De=[];for(var si in ue)De[si]=ue[si];typeof YA.elements.set=="function"?YA.elements.set(De):YA.elements=[].slice.call(De)}(q.object3d.matrix,jA)}if(vA&&vA.data&&vA.data.type==="markerInfos"){var H=JSON.parse(vA.data.marker),k=new CustomEvent("arjs-nft-init-data",{detail:{dpi:H.dpi,width:H.width,height:H.height}});window.dispatchEvent(k)}if(vA&&vA.data&&vA.data.type==="found"){var DA=JSON.parse(vA.data.matrix);ge({data:{type:h.NFT_MARKER,matrix:DA,msg:vA.data.type}}),q.context.arController.showObject=!0}else q.context.arController.showObject=!1;(function(){xA.fillStyle="black",xA.fillRect(0,0,Ao,Kn),xA.drawImage(hi,0,0,un,sn,_o,Kt,bn,go);var YA=xA.getImageData(0,0,Ao,Kn);bt.postMessage({type:"process",imagedata:YA},[YA.data.buffer])})()}})}(q.parameters.descriptorsUrl,le):q.parameters.type==="unknown"?gA=null:console.log(!1,"invalid marker type",q.parameters.type),le.addEventListener("getMarker",function(Qt){if(Qt.data.type===h.PATTERN_MARKER&&q.parameters.type==="pattern"){if(gA===null)return;Qt.data.marker.idPatt===gA&&ge(Qt)}else if(Qt.data.type===h.BARCODE_MARKER&&q.parameters.type==="barcode"){if(gA===null)return;Qt.data.marker.idMatrix===gA&&ge(Qt)}else Qt.data.type===h.UNKNOWN_MARKER&&q.parameters.type==="unknown"&&ge(Qt)}))},20);return;function ge(le){if(!(le.data.type===h.PATTERN_MARKER&&le.data.marker.cfPatt<q.parameters.minConfidence||le.data.type===h.BARCODE_MARKER&&le.data.marker.cfMatrix<q.parameters.minConfidence)){var Qt=new O.Matrix4().fromArray(le.data.matrix);q.updateWithModelViewMatrix(Qt)}}};const m=p,u=function(q){this.object3d=new O.Group;var gA=new O.AxesHelper;this.object3d.add(gA);var yA=q.id,ge=document.createElement("canvas");ge.width=64,ge.height=64;var le=ge.getContext("2d"),Qt=new O.CanvasTexture(ge);le.font="48px monospace",le.fillStyle="rgba(192,192,255, 0.5)",le.fillRect(0,0,ge.width,ge.height),le.fillStyle="darkblue",le.fillText(yA,ge.width/4,3*ge.height/4),Qt.needsUpdate=!0;var Ct=new O.PlaneGeometry(1,1),bt=new O.MeshBasicMaterial({map:Qt,transparent:!0});(gA=new O.Mesh(Ct,bt)).rotation.x=-Math.PI/2,this.object3d.add(gA)},l=function(q,gA){var yA=this;s.call(this,q),this.object3d.visible=!1,this._lastLerpStepAt=null,this._visibleStartedAt=null,this._unvisibleStartedAt=null,gA=gA||{},this.parameters={lerpPosition:.8,lerpQuaternion:.2,lerpScale:.7,lerpStepDelay:1/60,minVisibleDelay:0,minUnvisibleDelay:.2},function(ge){if(ge!==void 0)for(var le in ge){var Qt=ge[le];Qt!==void 0?yA.parameters[le]!==void 0?yA.parameters[le]=Qt:console.warn("ArSmoothedControls: '"+le+"' is not a property of this material."):console.warn("ArSmoothedControls: '"+le+"' parameter is undefined.")}}(gA)};(l.prototype=Object.create(s.prototype)).constructor=l,l.prototype.update=function(q){var gA=this.object3d,yA=this.parameters,ge=gA.visible,le=performance.now()/1e3;if(q.visible===!1&&(this._visibleStartedAt=null),q.visible===!0&&(this._unvisibleStartedAt=null),q.visible===!0&&this._visibleStartedAt===null&&(this._visibleStartedAt=le),q.visible===!1&&this._unvisibleStartedAt===null&&(this._unvisibleStartedAt=le),ge===!1&&q.visible===!0&&le-this._visibleStartedAt>=this.parameters.minVisibleDelay&&(gA.visible=!0,gA.position.copy(q.position),gA.quaternion.copy(q.quaternion),gA.scale.copy(q.scale)),ge===!0&&q.visible===!1&&le-this._unvisibleStartedAt>=this.parameters.minUnvisibleDelay&&(gA.visible=!1),this._lastLerpStepAt===null)bt(),this._lastLerpStepAt=le;else for(var Qt=Math.floor((le-this._lastLerpStepAt)/this.parameters.lerpStepDelay),Ct=0;Ct<Qt;Ct++)bt(),this._lastLerpStepAt+=this.parameters.lerpStepDelay;return this.object3d.updateMatrix(),ge===!1&&gA.visible===!0&&this.dispatchEvent({type:"becameVisible"}),void(ge===!0&&gA.visible===!1&&this.dispatchEvent({type:"becameUnVisible"}));function bt(){gA.position.lerp(q.position,yA.lerpPosition),gA.quaternion.slerp(q.quaternion,yA.lerpQuaternion),gA.scale.lerp(q.scale,yA.lerpScale)}};const R=l,N=function(q,gA,yA){var ge=this;s.call(this,gA),arguments.length>3&&console.assert("wrong api for",N),this.parameters={subMarkersControls:yA.subMarkersControls,subMarkerPoses:yA.subMarkerPoses,changeMatrixMode:yA.changeMatrixMode!==void 0?yA.changeMatrixMode:"modelViewMatrix"},this.object3d.visible=!1,this.subMarkersControls=this.parameters.subMarkersControls,this.subMarkerPoses=this.parameters.subMarkerPoses,q.addEventListener("sourceProcessed",function(){ge._onSourceProcessed()})};N.prototype=Object.create(s.prototype),N.prototype.constructor=N,N.prototype._onSourceProcessed=function(){var q=this,gA={count:0,position:{sum:new O.Vector3(0,0,0),average:new O.Vector3(0,0,0)},quaternion:{sum:new O.Quaternion(0,0,0,0),average:new O.Quaternion(0,0,0,0)},scale:{sum:new O.Vector3(0,0,0),average:new O.Vector3(0,0,0)}},yA=q.parameters.subMarkersControls[0].object3d.quaternion;if(this.parameters.subMarkersControls.forEach(function(le,Qt){var Ct=le.object3d;if(Ct.visible!==!1){var bt=Ct.matrix.clone(),pi=q.parameters.subMarkerPoses[Qt];bt.multiply(new O.Matrix4().copy(pi).invert());var hi=new O.Vector3,un=new O.Quaternion,sn=new O.Vector3;bt.decompose(hi,un,sn),gA.count++,N.averageVector3(gA.position.sum,hi,gA.count,gA.position.average),N.averageQuaternion(gA.quaternion.sum,un,yA,gA.count,gA.quaternion.average),N.averageVector3(gA.scale.sum,sn,gA.count,gA.scale.average)}}),gA.count>0?q.object3d.visible=!0:q.object3d.visible=!1,gA.count>0){var ge=new O.Matrix4;ge.compose(gA.position.average,gA.quaternion.average,gA.scale.average),this.parameters.changeMatrixMode==="modelViewMatrix"?q.object3d.matrix.copy(ge):this.parameters.changeMatrixMode==="cameraTransformMatrix"?q.object3d.matrix.copy(ge).invert():console.assert(!1),q.object3d.matrix.decompose(q.object3d.position,q.object3d.quaternion,q.object3d.scale)}},N.averageQuaternion=function(q,gA,yA,ge,le){return le=le||new O.Quaternion,console.assert(yA instanceof O.Quaternion==1),gA.dot(yA)>0&&(gA=new O.Quaternion(-gA.x,-gA.y,-gA.z,-gA.w)),q.x+=gA.x,q.y+=gA.y,q.z+=gA.z,q.w+=gA.w,le.x=q.x/ge,le.y=q.y/ge,le.z=q.z/ge,le.w=q.w/ge,le.normalize(),le},N.averageVector3=function(q,gA,yA,ge){return ge=ge||new O.Vector3,q.x+=gA.x,q.y+=gA.y,q.z+=gA.z,ge.x=q.x/yA,ge.y=q.y/yA,ge.z=q.z/yA,ge},N.computeCenter=function(q){var gA=JSON.parse(q),yA={count:0,position:{sum:new O.Vector3(0,0,0),average:new O.Vector3(0,0,0)},quaternion:{sum:new O.Quaternion(0,0,0,0),average:new O.Quaternion(0,0,0,0)},scale:{sum:new O.Vector3(0,0,0),average:new O.Vector3(0,0,0)}},ge=new O.Quaternion;gA.subMarkersControls.forEach(function(Qt){var Ct=new O.Matrix4().fromArray(Qt.poseMatrix),bt=new O.Vector3,pi=new O.Quaternion,hi=new O.Vector3;Ct.decompose(bt,pi,hi),yA.count++,N.averageVector3(yA.position.sum,bt,yA.count,yA.position.average),N.averageQuaternion(yA.quaternion.sum,pi,ge,yA.count,yA.quaternion.average),N.averageVector3(yA.scale.sum,hi,yA.count,yA.scale.average)});var le=new O.Matrix4;return le.compose(yA.position.average,yA.quaternion.average,yA.scale.average),le},N.computeBoundingBox=function(q){var gA=JSON.parse(q),yA=new O.Box3;return gA.subMarkersControls.forEach(function(ge){var le=new O.Matrix4().fromArray(ge.poseMatrix),Qt=new O.Vector3,Ct=new O.Quaternion,bt=new O.Vector3;le.decompose(Qt,Ct,bt),yA.expandByPoint(Qt)}),yA},N.prototype.updateSmoothedControls=function(q,gA){gA===void 0&&(gA=[[.4,.1,.3],[.5,.1,.4],[.5,.2,.5],[.6,.2,.7],[.6,.2,.7]]);var yA=0;if(this.parameters.subMarkersControls.forEach(function(le,Qt){le.object3d.visible===!0&&yA++}),gA[yA-1]!==void 0)var ge=gA[yA-1];else ge=gA[gA.length-1];q.parameters.lerpPosition=ge[0],q.parameters.lerpQuaternion=ge[1],q.parameters.lerpScale=ge[2]},N.fromJSON=function(q,gA,yA,ge,le){var Qt=JSON.parse(ge),Ct=[],bt=[];return le=le||{},Qt.subMarkersControls.forEach(function(pi){var hi=new O.Object3D;gA.add(hi);var un=new m(q,hi,pi.parameters);Ct.push(un),bt.push(new O.Matrix4().fromArray(pi.poseMatrix))}),le.subMarkersControls=Ct,le.subMarkerPoses=bt,new Y(q,yA,le)};const Y=N,{ARController:G}=D(),x=function(q){var gA=this;gA._updatedAt=null,this.parameters={trackingBackend:"artoolkit",debug:!1,detectionMode:"mono",matrixCodeType:"3x3",cameraParametersUrl:x.baseURL+"../data/data/camera_para.dat",maxDetectionRate:60,canvasWidth:640,canvasHeight:480,patternRatio:.5,labelingMode:"black_region",imageSmoothingEnabled:!1},console.assert(["artoolkit"].indexOf(this.parameters.trackingBackend)!==-1,"invalid parameter trackingBackend",this.parameters.trackingBackend),console.assert(["color","color_and_matrix","mono","mono_and_matrix"].indexOf(this.parameters.detectionMode)!==-1,"invalid parameter detectionMode",this.parameters.detectionMode),console.assert(["black_region","white_region"].indexOf(this.parameters.labelingMode)!==-1,"invalid parameter labelingMode",this.parameters.labelingMode),this.arController=null,gA.initialized=!1,this._arMarkersControls=[],function(yA){if(yA!==void 0)for(var ge in yA){var le=yA[ge];le!==void 0?gA.parameters[ge]!==void 0?gA.parameters[ge]=le:console.warn("Context: '"+ge+"' is not a property of this material."):console.warn("Context: '"+ge+"' parameter is undefined.")}}(q)};x.prototype.dispatchEvent=O.EventDispatcher.prototype.dispatchEvent,x.prototype.addEventListener=O.EventDispatcher.prototype.addEventListener,x.prototype.hasEventListener=O.EventDispatcher.prototype.hasEventListener,x.prototype.removeEventListener=O.EventDispatcher.prototype.removeEventListener,x.baseURL="https://ar-js-org.github.io/AR.js/three.js/",x.REVISION="3.4.8",x.createDefaultCamera=function(q){if(console.assert(!1,"use ARjs.Utils.createDefaultCamera instead"),q==="artoolkit")var gA=new O.Camera;else console.assert(!1);return gA},x.prototype.init=function(q){var gA=this;this.parameters.trackingBackend==="artoolkit"?this._initArtoolkit(function(){gA.dispatchEvent({type:"initialized"}),gA.initialized=!0,q&&q()}):console.assert(!1)},x.prototype.update=function(q){if(this.parameters.trackingBackend==="artoolkit"&&this.arController===null)return!1;var gA=performance.now();if(this._updatedAt!==null&&gA-this._updatedAt<1e3/this.parameters.maxDetectionRate)return!1;this._updatedAt=gA;var yA=[];return this._arMarkersControls.forEach(function(ge){ge.object3d.visible&&yA.push(ge),ge.context.arController.showObject||(ge.object3d.visible=!1)}),this.parameters.trackingBackend==="artoolkit"?this._updateArtoolkit(q):console.assert(!1),this.dispatchEvent({type:"sourceProcessed"}),this._arMarkersControls.forEach(function(ge){var le=yA.includes(ge),Qt=ge.object3d.visible;Qt===!0&&le===!1?window.dispatchEvent(new CustomEvent("markerFound",{detail:ge})):Qt===!1&&le===!0&&window.dispatchEvent(new CustomEvent("markerLost",{detail:ge}))}),!0},x.prototype.addMarker=function(q){console.assert(q instanceof m),this._arMarkersControls.push(q)},x.prototype.removeMarker=function(q){console.assert(q instanceof m);var gA=this._arMarkersControls.indexOf(q);gA<0||this._arMarkersControls.splice(gA,1)},x.prototype._initArtoolkit=function(q){var gA=this;return this._artoolkitProjectionAxisTransformMatrix=new O.Matrix4,this._artoolkitProjectionAxisTransformMatrix.multiply(new O.Matrix4().makeRotationY(Math.PI)),this._artoolkitProjectionAxisTransformMatrix.multiply(new O.Matrix4().makeRotationZ(Math.PI)),G.initWithDimensions(gA.parameters.canvasWidth,gA.parameters.canvasHeight,gA.parameters.cameraParametersUrl).then(yA=>{gA.arController=yA,yA.ctx.mozImageSmoothingEnabled=gA.parameters.imageSmoothingEnabled,yA.ctx.webkitImageSmoothingEnabled=gA.parameters.imageSmoothingEnabled,yA.ctx.msImageSmoothingEnabled=gA.parameters.imageSmoothingEnabled,yA.ctx.imageSmoothingEnabled=gA.parameters.imageSmoothingEnabled,gA.parameters.debug===!0&&(yA.debugSetup(),yA.canvas.style.position="absolute",yA.canvas.style.top="0px",yA.canvas.style.opacity="0.6",yA.canvas.style.pointerEvents="none",yA.canvas.style.zIndex="-1");var ge={color:yA.artoolkit.AR_TEMPLATE_MATCHING_COLOR,color_and_matrix:yA.artoolkit.AR_TEMPLATE_MATCHING_COLOR_AND_MATRIX,mono:yA.artoolkit.AR_TEMPLATE_MATCHING_MONO,mono_and_matrix:yA.artoolkit.AR_TEMPLATE_MATCHING_MONO_AND_MATRIX}[gA.parameters.detectionMode];console.assert(ge!==void 0),yA.setPatternDetectionMode(ge);var le={"3x3":yA.artoolkit.AR_MATRIX_CODE_3x3,"3x3_HAMMING63":yA.artoolkit.AR_MATRIX_CODE_3x3_HAMMING63,"3x3_PARITY65":yA.artoolkit.AR_MATRIX_CODE_3x3_PARITY65,"4x4":yA.artoolkit.AR_MATRIX_CODE_4x4,"4x4_BCH_13_9_3":yA.artoolkit.AR_MATRIX_CODE_4x4_BCH_13_9_3,"4x4_BCH_13_5_5":yA.artoolkit.AR_MATRIX_CODE_4x4_BCH_13_5_5,"5x5_BCH_22_12_5":yA.artoolkit.AR_MATRIX_CODE_5x5_BCH_22_12_5,"5x5_BCH_22_7_7":yA.artoolkit.AR_MATRIX_CODE_5x5_BCH_22_7_7,"5x5":yA.artoolkit.AR_MATRIX_CODE_5x5,"6x6":yA.artoolkit.AR_MATRIX_CODE_6x6}[gA.parameters.matrixCodeType];console.assert(le!==void 0),yA.setMatrixCodeType(le),yA.setPattRatio(gA.parameters.patternRatio);var Qt={black_region:yA.artoolkit.AR_LABELING_BLACK_REGION,white_region:yA.artoolkit.AR_LABELING_WHITE_REGION}[gA.parameters.labelingMode];console.assert(Qt!==void 0),yA.setLabelingMode(Qt),q()}),this},x.prototype.getProjectionMatrix=function(){console.assert(this.parameters.trackingBackend==="artoolkit"),console.assert(this.arController,"arController MUST be initialized to call this function");var q=this.arController.getCameraMatrix();return new O.Matrix4().fromArray(q)},x.prototype._updateArtoolkit=function(q){this.arController.process(q)},x.prototype.dispose=function(){this.initialized=!1,this._arMarkersControls.forEach(function(q){console.assert(q instanceof m),q.dispose()}),this._arMarkersControls=[],this.arController&&this.arController.cameraParam&&this.arController.cameraParam.dispose&&this.arController.cameraParam.dispose(),this.arController&&this.arController.dispose&&this.arController.dispose(),this.arController=null,this._artoolkitProjectionAxisTransformMatrix=null};const U=x,j={navigateToLearnerPage:function(q,gA){var yA={backURL:location.href,trackingBackend:gA,markersControlsParameters:j.createDefaultMarkersControlsParameters(gA)};location.href=q+"?"+encodeURIComponent(JSON.stringify(yA))},storeDefaultMultiMarkerFile:function(q){var gA=j.createDefaultMultiMarkerFile(q);localStorage.setItem("ARjsMultiMarkerFile",JSON.stringify(gA))},createDefaultMultiMarkerFile:function(q){console.assert(q);var gA=document.createElement("a");gA.href=U.baseURL;var yA=gA.href,ge={meta:{createdBy:"AR.js "+U.REVISION+" - Default Marker",createdAt:new Date().toJSON()},trackingBackend:q,subMarkersControls:[]};return ge.subMarkersControls[0]={parameters:{},poseMatrix:new O.Matrix4().makeTranslation(0,0,0).toArray()},q==="artoolkit"?(ge.subMarkersControls[0].parameters.type="pattern",ge.subMarkersControls[0].parameters.patternUrl=yA+"examples/marker-training/examples/pattern-files/pattern-hiro.patt"):console.assert(!1),ge},createDefaultMarkersControlsParameters:function(q){var gA=document.createElement("a");gA.href=U.baseURL;var yA=gA.href;if(q==="artoolkit")var ge=[{type:"pattern",patternUrl:yA+"examples/marker-training/examples/pattern-files/pattern-hiro.patt"},{type:"pattern",patternUrl:yA+"examples/marker-training/examples/pattern-files/pattern-kanji.patt"},{type:"pattern",patternUrl:yA+"examples/marker-training/examples/pattern-files/pattern-letterA.patt"},{type:"pattern",patternUrl:yA+"examples/marker-training/examples/pattern-files/pattern-letterB.patt"},{type:"pattern",patternUrl:yA+"examples/marker-training/examples/pattern-files/pattern-letterC.patt"},{type:"pattern",patternUrl:yA+"examples/marker-training/examples/pattern-files/pattern-letterF.patt"}];else console.assert(!1);return ge},storeMarkersAreaFileFromResolution:function(q,gA,yA){var ge=this.buildMarkersAreaFileFromResolution(q,gA,yA);localStorage.setItem("ARjsMultiMarkerFile",JSON.stringify(ge))},buildMarkersAreaFileFromResolution:function(q,gA,yA){var ge={meta:{createdBy:"AR.js - Augmented Website",createdAt:new Date().toJSON()},trackingBackend:q,subMarkersControls:[]};if(gA>yA)var le=.4*yA;else gA<yA?le=.4*gA:gA===yA?le=.33*gA:console.assert(!1);var Qt=.8*le,Ct=(gA-le)/2/Qt,bt=(yA-le)/2/Qt,pi=hi("center",0,0);return ge.subMarkersControls.push(pi),pi=hi("topleft",-Ct,-bt),ge.subMarkersControls.push(pi),pi=hi("topright",+Ct,-bt),ge.subMarkersControls.push(pi),pi=hi("bottomleft",-Ct,+bt),ge.subMarkersControls.push(pi),pi=hi("bottomright",+Ct,+bt),ge.subMarkersControls.push(pi),ge;function hi(un,sn,En){console.log("buildSubMarkerControls",un,sn,En);var bn={parameters:{},poseMatrix:new O.Matrix4().makeTranslation(sn,0,En).toArray()};return q==="artoolkit"?function(go,Ao){var Kn=document.createElement("a");Kn.href=U.baseURL;var _o=Kn.href,Kt={center:xA(_o+"examples/marker-training/examples/pattern-files/pattern-hiro.patt"),topleft:xA(_o+"examples/marker-training/examples/pattern-files/pattern-letterA.patt"),topright:xA(_o+"examples/marker-training/examples/pattern-files/pattern-letterB.patt"),bottomleft:xA(_o+"examples/marker-training/examples/pattern-files/pattern-letterC.patt"),bottomright:xA(_o+"examples/marker-training/examples/pattern-files/pattern-letterF.patt")};return console.assert(Kt[Ao]!==void 0),go.type="pattern",void(go.patternUrl=Kt[Ao]);function xA(vA){var ie=document.createElement("a");return ie.href=vA,ie.href}}(bn.parameters,un):console.assert(!1),bn}}},Z=j,CA=function(q,gA){var yA=this,ge=q.arContext,le=q.parameters.scene,Qt=q.parameters.camera;this.arSession=q,this.parameters=gA,console.log("ARjs.Anchor -","changeMatrixMode:",this.parameters.changeMatrixMode,"/ markersAreaEnabled:",gA.markersAreaEnabled);var Ct=new O.Group;if(le.add(Ct),gA.changeMatrixMode==="modelViewMatrix")var bt=Ct;else gA.changeMatrixMode==="cameraTransformMatrix"?bt=Qt:console.assert(!1);if(gA.markersAreaEnabled===!1){var pi=new m(ge,bt,gA);this.controls=pi}else{if(console.assert(ge.parameters.trackingBackend==="artoolkit"),location.hash.substring(1).startsWith("markers-page-resolution=")===!0){var hi=location.hash.substring(1).match(/markers-page-resolution=(\d+)x(\d+)/);console.assert(hi.length===3);var un=parseInt(hi[1]),sn=parseInt(hi[2]);ge=q.arContext,Z.storeMarkersAreaFileFromResolution(ge.parameters.trackingBackend,un,sn)}localStorage.getItem("ARjsMultiMarkerFile")===null&&Z.storeDefaultMultiMarkerFile(ge.parameters.trackingBackend),console.assert(localStorage.getItem("ARjsMultiMarkerFile")!==null);var En=localStorage.getItem("ARjsMultiMarkerFile");if(gA.changeMatrixMode==="modelViewMatrix")var bn=le;else gA.changeMatrixMode==="cameraTransformMatrix"?bn=Qt:console.assert(!1);var go=Y.fromJSON(ge,bn,bt,En);this.controls=go,go.parameters.changeMatrixMode=gA.changeMatrixMode;var Ao=[];go.subMarkersControls.forEach(function(Kt){var xA=new u(Kt);xA.object3d.visible=!1,Kt.object3d.add(xA.object3d),Ao.push(xA)}),this.markersArea={},this.markersArea.setSubMarkersVisibility=function(Kt){Ao.forEach(function(xA){xA.object3d.visible=Kt})}}this.object3d=new O.Group;var Kn=new O.Group;le.add(Kn);var _o=new R(Kn);Kn.add(this.object3d),this.update=function(){yA.object3d.visible=yA.object3d.parent.visible,_o!==void 0&&(go!==void 0&&go.updateSmoothedControls(_o),_o.update(Ct))}},QA=function(q){var gA=q.arContext.parameters.trackingBackend;this.domElement=document.createElement("div"),this.domElement.style.color="rgba(0,0,0,0.9)",this.domElement.style.backgroundColor="rgba(127,127,127,0.5)",this.domElement.style.display="block",this.domElement.style.padding="0.5em",this.domElement.style.position="fixed",this.domElement.style.left="5px",this.domElement.style.bottom="10px",this.domElement.style.textAlign="right";var yA=document.createElement("span");yA.style.display="block",yA.innerHTML="<b>trackingBackend</b> : "+gA,this.domElement.appendChild(yA)};QA.AugmentedWebsiteURL="https://webxr.io/augmented-website";const SA=function(q){var gA=q.arSession.arContext.parameters.trackingBackend;if(this.domElement=document.createElement("div"),this.domElement.style.color="rgba(0,0,0,0.9)",this.domElement.style.backgroundColor="rgba(127,127,127,0.5)",this.domElement.style.display="inline-block",this.domElement.style.padding="0.5em",this.domElement.style.margin="0.5em",this.domElement.style.textAlign="left",(yA=document.createElement("span")).style.display="block",yA.style.padding="0.5em",yA.style.color="rgba(0,0,0,0.9)",yA.style.backgroundColor="rgba(127,127,127,0.5)",yA.style.position="fixed",yA.style.left="5px",yA.style.bottom="40px",this.domElement.appendChild(yA),yA.innerHTML="<b>markersAreaEnabled</b> :"+q.parameters.markersAreaEnabled,q.parameters.markersAreaEnabled){var yA;(yA=document.createElement("button")).style.display="block",this.domElement.style.padding="0.5em",this.domElement.style.position="fixed",this.domElement.style.textAlign="left",this.domElement.appendChild(yA),yA.id="buttonToggleMarkerHelpers",yA.innerHTML="toggle-marker-helper",yA.href="javascript:void(0)";var ge=!1;yA.addEventListener("click",function(){ge=!ge,q.markersArea.setSubMarkersVisibility(ge)})}q.parameters.markersAreaEnabled&&((yA=document.createElement("button")).style.display="block",this.domElement.appendChild(yA),yA.id="buttonMarkersAreaLearner",yA.innerHTML="Learn-new-marker-area",yA.href="javascript:void(0)",yA.addEventListener("click",function(){if(SA.MarkersAreaLearnerURL!==null)var le=SA.MarkersAreaLearnerURL;else le=U.baseURL+"examples/multi-markers/examples/learner.html";Z.navigateToLearnerPage(le,gA)})),q.parameters.markersAreaEnabled&&((yA=document.createElement("button")).style.display="block",this.domElement.appendChild(yA),yA.id="buttonMarkersAreaReset",yA.innerHTML="Reset-marker-area",yA.href="javascript:void(0)",yA.addEventListener("click",function(){Z.storeDefaultMultiMarkerFile(gA),location.reload()}))};SA.MarkersAreaLearnerURL=null,_A.registerComponent("arjs-anchor",{dependencies:["arjs","artoolkit"],schema:{preset:{type:"string"},markerhelpers:{type:"boolean",default:!1},size:{type:"number",default:1},type:{type:"string"},patternUrl:{type:"string"},barcodeValue:{type:"number"},changeMatrixMode:{type:"string",default:"modelViewMatrix"},minConfidence:{type:"number",default:.6},smooth:{type:"boolean",default:!1},smoothCount:{type:"number",default:5},smoothTolerance:{type:"number",default:.01},smoothThreshold:{type:"number",default:2}},init:function(){var q=this,gA=this.el.sceneEl.systems.arjs||this.el.sceneEl.systems.artoolkit;q.isReady=!1,q._arAnchor=null,q.data.changeMatrixMode==="modelViewMatrix"?q.el.object3D.visible=!1:q.data.changeMatrixMode==="cameraTransformMatrix"?q.el.sceneEl.object3D.visible=!1:console.assert(!1);var yA=setInterval(function(){if(gA.isReady!==!1){clearInterval(yA);var ge=gA._arProfile;ge.changeMatrixMode(q.data.changeMatrixMode);var le=Object.assign({},ge.defaultMarkerParameters);q.data.preset==="hiro"?(le.type="pattern",le.patternUrl=U.baseURL+"examples/marker-training/examples/pattern-files/pattern-hiro.patt",le.markersAreaEnabled=!1):q.data.preset==="kanji"?(le.type="pattern",le.patternUrl=U.baseURL+"examples/marker-training/examples/pattern-files/pattern-kanji.patt",le.markersAreaEnabled=!1):q.data.preset==="area"?(le.type="barcode",le.barcodeValue=1001,le.markersAreaEnabled=!0):q.data.type==="barcode"?le={type:q.data.type,changeMatrixMode:"modelViewMatrix",barcodeValue:q.data.barcodeValue,markersAreaEnabled:!1}:q.data.type==="pattern"&&(le.type=q.data.type,le.patternUrl=q.data.patternUrl,le.markersAreaEnabled=!1),le.minConfidence=q.data.minConfidence,le.smooth=q.data.smooth,le.smoothCount=q.data.smoothCount,le.smoothTolerance=q.data.smoothTolerance,le.smoothThreshold=q.data.smoothThreshold;var Qt=gA._arSession,Ct=q._arAnchor=new CA(Qt,le);if(q.isReady=!0,gA.data.debugUIEnabled){var bt=document.querySelector("#arjsDebugUIContainer");bt===null&&((bt=document.createElement("div")).id="arjsDebugUIContainer",bt.setAttribute("style","position: fixed; bottom: 10px; width:100%; text-align: center; z-index: 1; color: grey;"),document.body.appendChild(bt));var pi=new SA(Ct);bt.appendChild(pi.domElement)}}},1e3/60)},remove:function(){},update:function(){},tick:function(){var q=this;if(this.isReady!==!1){this.el.sceneEl.systems.arjs||this.el.sceneEl.systems.artoolkit,this._arAnchor.update();var gA=this._arAnchor.object3d;if(gA.updateMatrixWorld(!0),gA.matrixWorld.decompose(this.el.object3D.position,this.el.object3D.quaternion,this.el.object3D.scale),q._arAnchor.parameters.changeMatrixMode==="modelViewMatrix"){var yA=q.el.object3D.visible;q.el.object3D.visible=this._arAnchor.object3d.visible}else q._arAnchor.parameters.changeMatrixMode==="cameraTransformMatrix"?(yA=q.el.sceneEl.object3D.visible,q.el.sceneEl.object3D.visible=this._arAnchor.object3d.visible):console.assert(!1);q._arAnchor.object3d.visible===!0&&yA===!1?q.el.emit("markerFound"):q._arAnchor.object3d.visible===!1&&yA===!0&&q.el.emit("markerLost")}}}),_A.registerPrimitive("a-anchor",_A.utils.extendDeep({},_A.primitives.getMeshMixin(),{defaultComponents:{"arjs-anchor":{},"arjs-hit-testing":{}},mappings:{type:"arjs-anchor.type",size:"arjs-anchor.size",url:"arjs-anchor.patternUrl",value:"arjs-anchor.barcodeValue",preset:"arjs-anchor.preset","min-confidence":"arjs-anchor.minConfidence","marker-helpers":"arjs-anchor.markerhelpers",smooth:"arjs-anchor.smooth","smooth-count":"arjs-anchor.smoothCount","smooth-tolerance":"arjs-anchor.smoothTolerance","smooth-threshold":"arjs-anchor.smoothThreshold","hit-testing-render-debug":"arjs-hit-testing.renderDebug","hit-testing-enabled":"arjs-hit-testing.enabled"}})),_A.registerPrimitive("a-camera-static",_A.utils.extendDeep({},_A.primitives.getMeshMixin(),{defaultComponents:{camera:{}},mappings:{}})),_A.registerPrimitive("a-marker",_A.utils.extendDeep({},_A.primitives.getMeshMixin(),{defaultComponents:{"arjs-anchor":{},"arjs-hit-testing":{}},mappings:{type:"arjs-anchor.type",size:"arjs-anchor.size",url:"arjs-anchor.patternUrl",value:"arjs-anchor.barcodeValue",preset:"arjs-anchor.preset","min-confidence":"arjs-anchor.minConfidence","marker-helpers":"arjs-anchor.markerhelpers",smooth:"arjs-anchor.smooth","smooth-count":"arjs-anchor.smoothCount","smooth-tolerance":"arjs-anchor.smoothTolerance","smooth-threshold":"arjs-anchor.smoothThreshold","hit-testing-render-debug":"arjs-hit-testing.renderDebug","hit-testing-enabled":"arjs-hit-testing.enabled"}})),_A.registerPrimitive("a-marker-camera",_A.utils.extendDeep({},_A.primitives.getMeshMixin(),{defaultComponents:{"arjs-anchor":{changeMatrixMode:"cameraTransformMatrix"},camera:{}},mappings:{type:"arjs-anchor.type",size:"arjs-anchor.size",url:"arjs-anchor.patternUrl",value:"arjs-anchor.barcodeValue",preset:"arjs-anchor.preset","min-confidence":"arjs-anchor.minConfidence","marker-helpers":"arjs-anchor.markerhelpers"}}));const UA=function(q){this._sourceElement=q,this._pickingScene=new O.Scene;var gA=new O.PlaneGeometry(20,20,19,19).rotateX(-Math.PI/2),yA=new O.MeshBasicMaterial({wireframe:!0});this._pickingPlane=new O.Mesh(gA,yA),this._pickingScene.add(this._pickingPlane);var ge=parseInt(q.style.width),le=parseInt(q.style.height);this._pickingCamera=new O.PerspectiveCamera(42,ge/le,.1,30)};UA.prototype.update=function(q,gA,yA){if(this.onResize(),yA==="modelViewMatrix"){var ge=this._pickingPlane;gA.parent.updateMatrixWorld(),ge.matrix.copy(gA.parent.matrixWorld),ge.matrix.decompose(ge.position,ge.quaternion,ge.scale)}else if(yA==="cameraTransformMatrix"){var le=this._pickingCamera;q.updateMatrixWorld(),le.matrix.copy(q.matrixWorld),le.matrix.decompose(le.position,le.quaternion,le.scale)}else console.assert(!1)},UA.prototype.onResize=function(){var q=this._sourceElement,gA=this._pickingCamera,yA=parseInt(q.style.width),ge=parseInt(q.style.height);gA.aspect=yA/ge,gA.updateProjectionMatrix()},UA.prototype.test=function(q,gA){q=2*(q-.5),gA=2*-(gA-.5),this._pickingScene.updateMatrixWorld(!0);var yA=new O.Raycaster,ge=new O.Vector3(q,gA,1);yA.setFromCamera(ge,this._pickingCamera);var le=yA.intersectObjects([this._pickingPlane]);return le.length===0?null:{position:this._pickingPlane.worldToLocal(le[0].point.clone()),quaternion:new O.Quaternion,scale:new O.Vector3(1,1,1)}},UA.prototype.renderDebug=function(q){q.render(this._pickingScene,this._pickingCamera)};const TA=UA,pA=function(q){q.arContext.parameters.trackingBackend,this.enabled=!0,this._arSession=q,this._hitTestingPlane=null,this._hitTestingPlane=new TA(q.arSource.domElement)};pA.prototype.update=function(q,gA,yA){this.enabled!==!1&&(this._hitTestingPlane!==null?this._hitTestingPlane.update(q,gA,yA):console.assert(!1))},pA.prototype.testDomEvent=function(q){this._arSession.arContext.parameters.trackingBackend;var gA=this._arSession.arSource;if(this.enabled===!1)return[];var yA=q.clientX/gA.domElementWidth(),ge=q.clientY/gA.domElementHeight();return this.test(yA,ge)},pA.prototype.test=function(q,gA){this._arSession.arContext.parameters.trackingBackend;var yA=[];if(this.enabled===!1)return[];var ge=this._hitTestingPlane.test(q,gA);if(ge===null)return yA;var le=new pA.Result(ge.position,ge.quaternion,ge.scale);return yA.push(le),yA},(pA.Result=function(q,gA,yA){this.position=q,this.quaternion=gA,this.scale=yA}).prototype.apply=function(q){q.position.copy(this.position),q.quaternion.copy(this.quaternion),q.scale.copy(this.scale),q.updateMatrix()},pA.Result.prototype.applyPosition=function(q){return q.position.copy(this.position),q.updateMatrix(),this},pA.Result.prototype.applyQuaternion=function(q){return q.quaternion.copy(this.quaternion),q.updateMatrix(),this};const hA=pA;_A.registerComponent("arjs-hit-testing",{dependencies:["arjs","artoolkit"],schema:{enabled:{type:"boolean",default:!1},renderDebug:{type:"boolean",default:!1}},init:function(){var q=this,gA=this.el.sceneEl.systems.arjs||this.el.sceneEl.systems.artoolkit;q.isReady=!1,q._arAnchor=null,q._arHitTesting=null;var yA=setInterval(function(){var ge=q.el.components["arjs-anchor"];if(ge!==void 0&&ge.isReady!==!1){clearInterval(yA),ge._arAnchor;var le=gA._arSession;le.parameters.renderer,(q._arHitTesting=new hA(le)).enabled=q.data.enabled,q.isReady=!0}},1e3/60)},remove:function(){},update:function(){},tick:function(){if(this.isReady!==!1){var q=(this.el.sceneEl.systems.arjs||this.el.sceneEl.systems.artoolkit)._arSession,gA=this.el.components["arjs-anchor"]._arAnchor,yA=this._arHitTesting,ge=q.parameters.camera;yA.update(ge,gA.object3d,gA.parameters.changeMatrixMode)}}});const uA=function(q){var gA=this;this.object=q,this.object.rotation.reorder("YXZ"),this.enabled=!0,this.deviceOrientation={},this.screenOrientation=0,this.alphaOffset=0,this.smoothingFactor=1,this.TWO_PI=2*Math.PI,this.HALF_PI=.5*Math.PI;var yA,ge,le,Qt,Ct=function(hi){gA.deviceOrientation=hi},bt=function(){gA.screenOrientation=window.orientation||0},pi=(yA=new O.Vector3(0,0,1),ge=new O.Euler,le=new O.Quaternion,Qt=new O.Quaternion(-Math.sqrt(.5),0,0,Math.sqrt(.5)),function(hi,un,sn,En,bn){ge.set(sn,un,-En,"YXZ"),hi.setFromEuler(ge),hi.multiply(Qt),hi.multiply(le.setFromAxisAngle(yA,-bn))});this.connect=function(){bt(),window.addEventListener("orientationchange",bt,!1),window.addEventListener("deviceorientation",Ct,!1),gA.enabled=!0},this.disconnect=function(){window.removeEventListener("orientationchange",bt,!1),window.removeEventListener("deviceorientation",Ct,!1),gA.enabled=!1},this.update=function(){if(gA.enabled!==!1){var hi=gA.deviceOrientation;if(hi){var un=hi.alpha?O.MathUtils.degToRad(hi.alpha)+gA.alphaOffset:0,sn=hi.beta?O.MathUtils.degToRad(hi.beta):0,En=hi.gamma?O.MathUtils.degToRad(hi.gamma):0,bn=gA.screenOrientation?O.MathUtils.degToRad(gA.screenOrientation):0,go=this.smoothingFactor;this.lastOrientation?(un=this._getSmoothedAngle(un,this.lastOrientation.alpha,go),sn=this._getSmoothedAngle(sn+Math.PI,this.lastOrientation.beta,go),En=this._getSmoothedAngle(En+this.HALF_PI,this.lastOrientation.gamma,go,Math.PI)):(sn+=Math.PI,En+=this.HALF_PI),this.lastOrientation={alpha:un,beta:sn,gamma:En},pi(gA.object.quaternion,un,sn-Math.PI,En-this.HALF_PI,bn)}}},this._orderAngle=function(hi,un,sn=this.TWO_PI){return un>hi&&Math.abs(un-hi)<sn/2||hi>un&&Math.abs(un-hi)>sn/2?{left:hi,right:un}:{left:un,right:hi}},this._getSmoothedAngle=function(hi,un,sn,En=this.TWO_PI){const bn=this._orderAngle(hi,un,En),go=bn.left,Ao=bn.right;bn.left=0,bn.right-=go,bn.right<0&&(bn.right+=En);let Kn=Ao==un?(1-sn)*bn.right+sn*bn.left:sn*bn.right+(1-sn)*bn.left;return Kn+=go,Kn>=En&&(Kn-=En),Kn},this.dispose=function(){gA.disconnect()},this.connect()};var lA,NA=Math.PI/2;_A.registerComponent("arjs-look-controls",{dependencies:["position","rotation"],schema:{enabled:{default:!0},magicWindowTrackingEnabled:{default:!0},pointerLockEnabled:{default:!1},reverseMouseDrag:{default:!1},reverseTouchDrag:{default:!1},touchEnabled:{default:!0},smoothingFactor:{type:"number",default:1}},init:function(){this.deltaYaw=0,this.previousHMDPosition=new THREE.Vector3,this.hmdQuaternion=new THREE.Quaternion,this.magicWindowAbsoluteEuler=new THREE.Euler,this.magicWindowDeltaEuler=new THREE.Euler,this.position=new THREE.Vector3,this.magicWindowObject=new THREE.Object3D,this.rotation={},this.deltaRotation={},this.savedPose=null,this.pointerLocked=!1,this.setupMouseControls(),this.bindMethods(),this.previousMouseEvent={},this.setupMagicWindowControls(),this.savedPose={position:new THREE.Vector3,rotation:new THREE.Euler},this.el.sceneEl.is("vr-mode")&&this.onEnterVR()},setupMagicWindowControls:function(){var q,gA=this.data;_A.utils.device.isMobile()&&(q=this.magicWindowControls=new uA(this.magicWindowObject),typeof DeviceOrientationEvent<"u"&&DeviceOrientationEvent.requestPermission&&(q.enabled=!1,this.el.sceneEl.components["device-orientation-permission-ui"].permissionGranted?q.enabled=gA.magicWindowTrackingEnabled:this.el.sceneEl.addEventListener("deviceorientationpermissiongranted",function(){q.enabled=gA.magicWindowTrackingEnabled})))},update:function(q){var gA=this.data;gA.enabled!==q.enabled&&this.updateGrabCursor(gA.enabled),q&&!gA.magicWindowTrackingEnabled&&q.magicWindowTrackingEnabled&&(this.magicWindowAbsoluteEuler.set(0,0,0),this.magicWindowDeltaEuler.set(0,0,0)),this.magicWindowControls&&(this.magicWindowControls.enabled=gA.magicWindowTrackingEnabled,this.magicWindowControls.smoothingFactor=gA.smoothingFactor),q&&!gA.pointerLockEnabled!==q.pointerLockEnabled&&(this.removeEventListeners(),this.addEventListeners(),this.pointerLocked&&this.exitPointerLock())},tick:function(q){this.data.enabled&&this.updateOrientation()},play:function(){this.addEventListeners()},pause:function(){this.removeEventListeners(),this.pointerLocked&&this.exitPointerLock()},remove:function(){this.removeEventListeners(),this.pointerLocked&&this.exitPointerLock()},bindMethods:function(){this.onMouseDown=_A.utils.bind(this.onMouseDown,this),this.onMouseMove=_A.utils.bind(this.onMouseMove,this),this.onMouseUp=_A.utils.bind(this.onMouseUp,this),this.onTouchStart=_A.utils.bind(this.onTouchStart,this),this.onTouchMove=_A.utils.bind(this.onTouchMove,this),this.onTouchEnd=_A.utils.bind(this.onTouchEnd,this),this.onEnterVR=_A.utils.bind(this.onEnterVR,this),this.onExitVR=_A.utils.bind(this.onExitVR,this),this.onPointerLockChange=_A.utils.bind(this.onPointerLockChange,this),this.onPointerLockError=_A.utils.bind(this.onPointerLockError,this)},setupMouseControls:function(){this.mouseDown=!1,this.pitchObject=new THREE.Object3D,this.yawObject=new THREE.Object3D,this.yawObject.position.y=10,this.yawObject.add(this.pitchObject)},addEventListeners:function(){var q=this.el.sceneEl,gA=q.canvas;gA?(gA.addEventListener("mousedown",this.onMouseDown,!1),window.addEventListener("mousemove",this.onMouseMove,!1),window.addEventListener("mouseup",this.onMouseUp,!1),gA.addEventListener("touchstart",this.onTouchStart),window.addEventListener("touchmove",this.onTouchMove),window.addEventListener("touchend",this.onTouchEnd),q.addEventListener("enter-vr",this.onEnterVR),q.addEventListener("exit-vr",this.onExitVR),this.data.pointerLockEnabled&&(document.addEventListener("pointerlockchange",this.onPointerLockChange,!1),document.addEventListener("mozpointerlockchange",this.onPointerLockChange,!1),document.addEventListener("pointerlockerror",this.onPointerLockError,!1))):q.addEventListener("render-target-loaded",_A.utils.bind(this.addEventListeners,this))},removeEventListeners:function(){var q=this.el.sceneEl,gA=q&&q.canvas;gA&&(gA.removeEventListener("mousedown",this.onMouseDown),window.removeEventListener("mousemove",this.onMouseMove),window.removeEventListener("mouseup",this.onMouseUp),gA.removeEventListener("touchstart",this.onTouchStart),window.removeEventListener("touchmove",this.onTouchMove),window.removeEventListener("touchend",this.onTouchEnd),q.removeEventListener("enter-vr",this.onEnterVR),q.removeEventListener("exit-vr",this.onExitVR),document.removeEventListener("pointerlockchange",this.onPointerLockChange,!1),document.removeEventListener("mozpointerlockchange",this.onPointerLockChange,!1),document.removeEventListener("pointerlockerror",this.onPointerLockError,!1))},updateOrientation:(lA=new THREE.Matrix4,function(){var q,gA=this.el.object3D,yA=this.pitchObject,ge=this.yawObject,le=this.el.sceneEl;le.is("vr-mode")&&le.checkHeadsetConnected()?le.hasWebXR&&(q=le.renderer.xr.getCameraPose())&&(lA.elements=q.transform.matrix,lA.decompose(gA.position,gA.rotation,gA.scale)):(this.updateMagicWindowOrientation(),gA.rotation.x=this.magicWindowDeltaEuler.x+yA.rotation.x,gA.rotation.y=this.magicWindowDeltaEuler.y+ge.rotation.y,gA.rotation.z=this.magicWindowDeltaEuler.z)}),updateMagicWindowOrientation:function(){var q=this.magicWindowAbsoluteEuler,gA=this.magicWindowDeltaEuler;this.magicWindowControls&&this.magicWindowControls.enabled&&(this.magicWindowControls.update(),q.setFromQuaternion(this.magicWindowObject.quaternion,"YXZ"),this.previousMagicWindowYaw||q.y===0||(this.previousMagicWindowYaw=q.y),this.previousMagicWindowYaw&&(gA.x=q.x,gA.y+=q.y-this.previousMagicWindowYaw,gA.z=q.z,this.previousMagicWindowYaw=q.y))},onMouseMove:function(q){var gA,yA,ge,le=this.pitchObject,Qt=this.previousMouseEvent,Ct=this.yawObject;this.data.enabled&&(this.mouseDown||this.pointerLocked)&&(this.pointerLocked?(yA=q.movementX||q.mozMovementX||0,ge=q.movementY||q.mozMovementY||0):(yA=q.screenX-Qt.screenX,ge=q.screenY-Qt.screenY),this.previousMouseEvent.screenX=q.screenX,this.previousMouseEvent.screenY=q.screenY,gA=this.data.reverseMouseDrag?1:-1,Ct.rotation.y+=.002*yA*gA,le.rotation.x+=.002*ge*gA,le.rotation.x=Math.max(-NA,Math.min(NA,le.rotation.x)))},onMouseDown:function(q){var gA=this.el.sceneEl;if(!(!this.data.enabled||gA.is("vr-mode")&&gA.checkHeadsetConnected())&&q.button===0){var yA=gA&&gA.canvas;this.mouseDown=!0,this.previousMouseEvent.screenX=q.screenX,this.previousMouseEvent.screenY=q.screenY,this.showGrabbingCursor(),this.data.pointerLockEnabled&&!this.pointerLocked&&(yA.requestPointerLock?yA.requestPointerLock():yA.mozRequestPointerLock&&yA.mozRequestPointerLock())}},showGrabbingCursor:function(){this.el.sceneEl.canvas.style.cursor="grabbing"},hideGrabbingCursor:function(){this.el.sceneEl.canvas.style.cursor=""},onMouseUp:function(){this.mouseDown=!1,this.hideGrabbingCursor()},onTouchStart:function(q){q.touches.length===1&&this.data.touchEnabled&&!this.el.sceneEl.is("vr-mode")&&(this.touchStart={x:q.touches[0].pageX,y:q.touches[0].pageY},this.touchStarted=!0)},onTouchMove:function(q){var gA,yA,ge=this.el.sceneEl.canvas,le=this.yawObject;this.touchStarted&&this.data.touchEnabled&&(yA=2*Math.PI*(q.touches[0].pageX-this.touchStart.x)/ge.clientWidth,gA=this.data.reverseTouchDrag?1:-1,le.rotation.y-=.5*yA*gA,this.touchStart={x:q.touches[0].pageX,y:q.touches[0].pageY})},onTouchEnd:function(){this.touchStarted=!1},onEnterVR:function(){var q=this.el.sceneEl;q.checkHeadsetConnected()&&(this.saveCameraPose(),this.el.object3D.position.set(0,0,0),this.el.object3D.rotation.set(0,0,0),q.hasWebXR&&(this.el.object3D.matrixAutoUpdate=!1,this.el.object3D.updateMatrix()))},onExitVR:function(){this.el.sceneEl.checkHeadsetConnected()&&(this.restoreCameraPose(),this.previousHMDPosition.set(0,0,0),this.el.object3D.matrixAutoUpdate=!0)},onPointerLockChange:function(){this.pointerLocked=!(!document.pointerLockElement&&!document.mozPointerLockElement)},onPointerLockError:function(){this.pointerLocked=!1},exitPointerLock:function(){document.exitPointerLock(),this.pointerLocked=!1},updateGrabCursor:function(q){var gA=this.el.sceneEl;function yA(){gA.canvas.classList.add("a-grab-cursor")}function ge(){gA.canvas.classList.remove("a-grab-cursor")}gA.canvas?q?yA():ge():q?gA.addEventListener("render-target-loaded",yA):gA.addEventListener("render-target-loaded",ge)},saveCameraPose:function(){var q=this.el;this.savedPose.position.copy(q.object3D.position),this.savedPose.rotation.copy(q.object3D.rotation),this.hasSavedPose=!0},restoreCameraPose:function(){var q=this.el,gA=this.savedPose;this.hasSavedPose&&(q.object3D.position.copy(gA.position),q.object3D.rotation.copy(gA.rotation),this.hasSavedPose=!1)}}),_A.registerComponent("arjs-webcam-texture",{init:function(){this.scene=this.el.sceneEl,this.texCamera=new O.OrthographicCamera(-.5,.5,.5,-.5,0,10),this.texScene=new O.Scene,this.scene.renderer.autoClear=!1,this.video=document.createElement("video"),this.video.setAttribute("autoplay",!0),this.video.setAttribute("playsinline",!0),this.video.setAttribute("display","none"),document.body.appendChild(this.video),this.geom=new O.PlaneGeometry,this.texture=new O.VideoTexture(this.video),this.material=new O.MeshBasicMaterial({map:this.texture});const q=new O.Mesh(this.geom,this.material);this.texScene.add(q)},play:function(){if(navigator.mediaDevices&&navigator.mediaDevices.getUserMedia){const q={video:{facingMode:"environment"}};navigator.mediaDevices.getUserMedia(q).then(gA=>{this.video.srcObject=gA,this.video.play()}).catch(gA=>{this.el.sceneEl.systems.arjs._displayErrorPopup(`Webcam error: ${gA}`)})}else this.el.sceneEl.systems.arjs._displayErrorPopup("sorry - media devices API not supported")},tick:function(){this.scene.renderer.clear(),this.scene.renderer.render(this.texScene,this.texCamera),this.scene.renderer.clearDepth()},pause:function(){this.video.srcObject.getTracks().forEach(q=>{q.stop()})},remove:function(){this.material.dispose(),this.texture.dispose(),this.geom.dispose()}}),_A.registerComponent("gps-camera",{_watchPositionId:null,originCoords:null,currentCoords:null,lookControls:null,heading:null,schema:{simulateLatitude:{type:"number",default:0},simulateLongitude:{type:"number",default:0},simulateAltitude:{type:"number",default:0},positionMinAccuracy:{type:"int",default:100},alert:{type:"boolean",default:!1},minDistance:{type:"int",default:0},maxDistance:{type:"int",default:0},gpsMinDistance:{type:"number",default:5},gpsTimeInterval:{type:"number",default:0}},update:function(){if(this.data.simulateLatitude!==0&&this.data.simulateLongitude!==0){var q=Object.assign({},this.currentCoords||{});q.longitude=this.data.simulateLongitude,q.latitude=this.data.simulateLatitude,q.altitude=this.data.simulateAltitude,this.currentCoords=q,this.originCoords=null,this._updatePosition()}},init:function(){if(this.el.components["arjs-look-controls"]||this.el.components["look-controls"]){this.lastPosition={latitude:0,longitude:0},this.loader=document.createElement("DIV"),this.loader.classList.add("arjs-loader"),document.body.appendChild(this.loader),this.onGpsEntityPlaceAdded=this._onGpsEntityPlaceAdded.bind(this),window.addEventListener("gps-entity-place-added",this.onGpsEntityPlaceAdded),this.lookControls=this.el.components["arjs-look-controls"]||this.el.components["look-controls"];var q=this._getDeviceOrientationEventName();if(this._onDeviceOrientation=this._onDeviceOrientation.bind(this),navigator.userAgent.match(/Version\/[\d.]+.*Safari/))if(typeof DeviceOrientationEvent.requestPermission=="function"){var gA=function(){console.log("Requesting device orientation permissions..."),DeviceOrientationEvent.requestPermission(),document.removeEventListener("touchend",gA)};document.addEventListener("touchend",function(){gA()},!1),this.el.sceneEl.systems.arjs._displayErrorPopup("After camera permission prompt, please tap the screen to activate geolocation.")}else{var yA=setTimeout(function(){this.el.sceneEl.systems.arjs._displayErrorPopup("Please enable device orientation in Settings > Safari > Motion & Orientation Access.")},750);window.addEventListener(q,function(){clearTimeout(yA)})}window.addEventListener(q,this._onDeviceOrientation,!1)}},play:function(){if(this.data.simulateLatitude!==0&&this.data.simulateLongitude!==0){var q=Object.assign({},this.currentCoords||{});q.latitude=this.data.simulateLatitude,q.longitude=this.data.simulateLongitude,this.data.simulateAltitude!==0&&(q.altitude=this.data.simulateAltitude),this.currentCoords=q,this._updatePosition()}else this._watchPositionId=this._initWatchGPS((function(gA){var yA={latitude:gA.coords.latitude,longitude:gA.coords.longitude,altitude:gA.coords.altitude,accuracy:gA.coords.accuracy,altitudeAccuracy:gA.coords.altitudeAccuracy};this.data.simulateAltitude!==0&&(yA.altitude=this.data.simulateAltitude),this.currentCoords=yA,(this._haversineDist(this.lastPosition,this.currentCoords)>=this.data.gpsMinDistance||!this.originCoords)&&(this._updatePosition(),this.lastPosition={longitude:this.currentCoords.longitude,latitude:this.currentCoords.latitude})}).bind(this))},tick:function(){this.heading!==null&&this._updateRotation()},pause:function(){this._watchPositionId&&navigator.geolocation.clearWatch(this._watchPositionId),this._watchPositionId=null},remove:function(){var q=this._getDeviceOrientationEventName();window.removeEventListener(q,this._onDeviceOrientation,!1),window.removeEventListener("gps-entity-place-added",this.onGpsEntityPlaceAdded)},_getDeviceOrientationEventName:function(){if("ondeviceorientationabsolute"in window)var q="deviceorientationabsolute";else"ondeviceorientation"in window?q="deviceorientation":(q="",console.error("Compass not supported"));return q},_initWatchGPS:function(q,gA){return gA||(gA=function(yA){console.warn("ERROR("+yA.code+"): "+yA.message),yA.code!==1?yA.code!==3||this.el.sceneEl.systems.arjs._displayErrorPopup("Cannot retrieve GPS position. Signal is absent."):this.el.sceneEl.systems.arjs._displayErrorPopup("Please activate Geolocation and refresh the page. If it is already active, please check permissions for this website.")}),"geolocation"in navigator==0?(gA({code:0,message:"Geolocation is not supported by your browser"}),Promise.resolve()):navigator.geolocation.watchPosition(q,gA,{enableHighAccuracy:!0,maximumAge:this.data.gpsTimeInterval,timeout:27e3})},_updatePosition:function(){if(this.currentCoords.accuracy>this.data.positionMinAccuracy){if(this.data.alert&&!document.getElementById("alert-popup")){var q=document.createElement("div");q.innerHTML="GPS signal is very poor. Try move outdoor or to an area with a better signal.",q.setAttribute("id","alert-popup"),document.body.appendChild(q)}}else{var gA=document.getElementById("alert-popup");if(this.currentCoords.accuracy<=this.data.positionMinAccuracy&&gA&&document.body.removeChild(gA),this.originCoords)this._setPosition();else{this.originCoords=this.currentCoords,this._setPosition();var yA=document.querySelector(".arjs-loader");yA&&yA.remove(),window.dispatchEvent(new CustomEvent("gps-camera-origin-coord-set"))}}},_setPosition:function(){var q=this.el.getAttribute("position"),gA={longitude:this.currentCoords.longitude,latitude:this.originCoords.latitude};q.x=this.computeDistanceMeters(this.originCoords,gA),q.x*=this.currentCoords.longitude>this.originCoords.longitude?1:-1,gA={longitude:this.originCoords.longitude,latitude:this.currentCoords.latitude},q.z=this.computeDistanceMeters(this.originCoords,gA),q.z*=this.currentCoords.latitude>this.originCoords.latitude?-1:1,this.el.setAttribute("position",q),window.dispatchEvent(new CustomEvent("gps-camera-update-position",{detail:{position:this.currentCoords,origin:this.originCoords}}))},computeDistanceMeters:function(q,gA,yA){var ge=this._haversineDist(q,gA);return yA&&this.data.minDistance&&this.data.minDistance>0&&ge<this.data.minDistance||yA&&this.data.maxDistance&&this.data.maxDistance>0&&ge>this.data.maxDistance?Number.MAX_SAFE_INTEGER:ge},_haversineDist:function(q,gA){var yA=O.MathUtils.degToRad(gA.longitude-q.longitude),ge=O.MathUtils.degToRad(gA.latitude-q.latitude),le=Math.sin(ge/2)*Math.sin(ge/2)+Math.cos(O.MathUtils.degToRad(q.latitude))*Math.cos(O.MathUtils.degToRad(gA.latitude))*(Math.sin(yA/2)*Math.sin(yA/2));return 2*Math.atan2(Math.sqrt(le),Math.sqrt(1-le))*6371e3},_computeCompassHeading:function(q,gA,yA){var ge=q*(Math.PI/180),le=gA*(Math.PI/180),Qt=yA*(Math.PI/180),Ct=Math.cos(ge),bt=Math.sin(ge),pi=Math.sin(le),hi=Math.cos(Qt),un=Math.sin(Qt),sn=-Ct*un-bt*pi*hi,En=-bt*un+Ct*pi*hi,bn=Math.atan(sn/En);return En<0?bn+=Math.PI:sn<0&&(bn+=2*Math.PI),bn*(180/Math.PI)},_onDeviceOrientation:function(q){q.webkitCompassHeading!==void 0?q.webkitCompassAccuracy<50?this.heading=q.webkitCompassHeading:console.warn("webkitCompassAccuracy is event.webkitCompassAccuracy"):q.alpha!==null?q.absolute===!0||q.absolute===void 0?this.heading=this._computeCompassHeading(q.alpha,q.beta,q.gamma):console.warn("event.absolute === false"):console.warn("event.alpha === null")},_updateRotation:function(){var q=(360-this.heading-(this.el.getAttribute("rotation").y-O.MathUtils.radToDeg(this.lookControls.yawObject.rotation.y)))%360;this.lookControls.yawObject.rotation.y=O.MathUtils.degToRad(q)},_onGpsEntityPlaceAdded:function(){this.originCoords&&window.dispatchEvent(new CustomEvent("gps-camera-origin-coord-set")),this.loader&&this.loader.parentElement&&document.body.removeChild(this.loader)}}),_A.registerComponent("gps-entity-place",{_cameraGps:null,schema:{longitude:{type:"number",default:0},latitude:{type:"number",default:0}},remove:function(){window.removeEventListener("gps-camera-origin-coord-set",this.coordSetListener),window.removeEventListener("gps-camera-update-position",this.updatePositionListener)},init:function(){this.coordSetListener=()=>{if(!this._cameraGps){var q=document.querySelector("[gps-camera]");if(!q.components["gps-camera"])return void console.error("gps-camera not initialized");this._cameraGps=q.components["gps-camera"]}this._updatePosition()},this.updatePositionListener=q=>{if(this.data&&this._cameraGps){var gA={longitude:this.data.longitude,latitude:this.data.latitude},yA=this._cameraGps.computeDistanceMeters(q.detail.position,gA);this.el.setAttribute("distance",yA),this.el.setAttribute("distanceMsg",this._formatDistance(yA)),this.el.dispatchEvent(new CustomEvent("gps-entity-place-update-position",{detail:{distance:yA}})),this._cameraGps.computeDistanceMeters(q.detail.position,gA,!0)===Number.MAX_SAFE_INTEGER?this.hideForMinDistance(this.el,!0):this.hideForMinDistance(this.el,!1)}},window.addEventListener("gps-camera-origin-coord-set",this.coordSetListener),window.addEventListener("gps-camera-update-position",this.updatePositionListener),this._positionXDebug=0,window.dispatchEvent(new CustomEvent("gps-entity-place-added",{detail:{component:this.el}}))},hideForMinDistance:function(q,gA){gA?q.setAttribute("visible","false"):q.setAttribute("visible","true")},_updatePosition:function(){var q={x:0,y:this.el.getAttribute("position").y||0,z:0},gA={longitude:this.data.longitude,latitude:this._cameraGps.originCoords.latitude};if(q.x=this._cameraGps.computeDistanceMeters(this._cameraGps.originCoords,gA),this._positionXDebug=q.x,q.x*=this.data.longitude>this._cameraGps.originCoords.longitude?1:-1,gA={longitude:this._cameraGps.originCoords.longitude,latitude:this.data.latitude},q.z=this._cameraGps.computeDistanceMeters(this._cameraGps.originCoords,gA),q.z*=this.data.latitude>this._cameraGps.originCoords.latitude?-1:1,q.y!==0){var yA=this._cameraGps.originCoords.altitude!==void 0?this._cameraGps.originCoords.altitude:0;q.y=q.y-yA}this.el.setAttribute("position",q)},_formatDistance:function(q){return(q=q.toFixed(0))>=1e3?q/1e3+" kilometers":q+" meters"}}),_A.registerComponent("gps-projected-camera",{_watchPositionId:null,originCoords:null,currentCoords:null,lookControls:null,heading:null,schema:{simulateLatitude:{type:"number",default:0},simulateLongitude:{type:"number",default:0},simulateAltitude:{type:"number",default:0},positionMinAccuracy:{type:"int",default:100},alert:{type:"boolean",default:!1},minDistance:{type:"int",default:0},gpsMinDistance:{type:"number",default:0},gpsTimeInterval:{type:"number",default:0}},update:function(){if(this.data.simulateLatitude!==0&&this.data.simulateLongitude!==0){var q=Object.assign({},this.currentCoords||{});q.longitude=this.data.simulateLongitude,q.latitude=this.data.simulateLatitude,q.altitude=this.data.simulateAltitude,this.currentCoords=q,this.originCoords=null,this._updatePosition()}},init:function(){if(this.el.components["arjs-look-controls"]||this.el.components["look-controls"]){this.lastPosition={latitude:0,longitude:0},this.loader=document.createElement("DIV"),this.loader.classList.add("arjs-loader"),document.body.appendChild(this.loader),this.onGpsEntityPlaceAdded=this._onGpsEntityPlaceAdded.bind(this),window.addEventListener("gps-entity-place-added",this.onGpsEntityPlaceAdded),this.lookControls=this.el.components["arjs-look-controls"]||this.el.components["look-controls"];var q=this._getDeviceOrientationEventName();if(this._onDeviceOrientation=this._onDeviceOrientation.bind(this),navigator.userAgent.match(/Version\/[\d.]+.*Safari/))if(typeof DeviceOrientationEvent.requestPermission=="function"){var gA=function(){console.log("Requesting device orientation permissions..."),DeviceOrientationEvent.requestPermission(),document.removeEventListener("touchend",gA)};document.addEventListener("touchend",function(){gA()},!1),this.el.sceneEl.systems.arjs._displayErrorPopup("After camera permission prompt, please tap the screen to activate geolocation.")}else{var yA=setTimeout(function(){this.el.sceneEl.systems.arjs._displayErrorPopup("Please enable device orientation in Settings > Safari > Motion & Orientation Access.")},750);window.addEventListener(q,function(){clearTimeout(yA)})}window.addEventListener(q,this._onDeviceOrientation,!1)}},play:function(){if(this.data.simulateLatitude!==0&&this.data.simulateLongitude!==0){var q=Object.assign({},this.currentCoords||{});q.latitude=this.data.simulateLatitude,q.longitude=this.data.simulateLongitude,this.data.simulateAltitude!==0&&(q.altitude=this.data.simulateAltitude),this.currentCoords=q,this._updatePosition()}else this._watchPositionId=this._initWatchGPS((function(gA){var yA={latitude:gA.coords.latitude,longitude:gA.coords.longitude,altitude:gA.coords.altitude,accuracy:gA.coords.accuracy,altitudeAccuracy:gA.coords.altitudeAccuracy};this.data.simulateAltitude!==0&&(yA.altitude=this.data.simulateAltitude),this.currentCoords=yA,(this._haversineDist(this.lastPosition,this.currentCoords)>=this.data.gpsMinDistance||!this.originCoords)&&(this._updatePosition(),this.lastPosition={longitude:this.currentCoords.longitude,latitude:this.currentCoords.latitude})}).bind(this))},tick:function(){this.heading!==null&&this._updateRotation()},pause:function(){this._watchPositionId&&navigator.geolocation.clearWatch(this._watchPositionId),this._watchPositionId=null},remove:function(){var q=this._getDeviceOrientationEventName();window.removeEventListener(q,this._onDeviceOrientation,!1),window.removeEventListener("gps-entity-place-added",this.onGpsEntityPlaceAdded)},_getDeviceOrientationEventName:function(){if("ondeviceorientationabsolute"in window)var q="deviceorientationabsolute";else"ondeviceorientation"in window?q="deviceorientation":(q="",console.error("Compass not supported"));return q},_initWatchGPS:function(q,gA){return gA||(gA=function(yA){console.warn("ERROR("+yA.code+"): "+yA.message),yA.code!==1?yA.code!==3||this.el.sceneEl.systems.arjs._displayErrorPopup("Cannot retrieve GPS position. Signal is absent."):this.el.sceneEl.systems.arjs._displayErrorPopup("Please activate Geolocation and refresh the page. If it is already active, please check permissions for this website.")}),"geolocation"in navigator==0?(gA({code:0,message:"Geolocation is not supported by your browser"}),Promise.resolve()):navigator.geolocation.watchPosition(q,gA,{enableHighAccuracy:!0,maximumAge:this.data.gpsTimeInterval,timeout:27e3})},_updatePosition:function(){if(this.currentCoords.accuracy>this.data.positionMinAccuracy){if(this.data.alert&&!document.getElementById("alert-popup")){var q=document.createElement("div");q.innerHTML="GPS signal is very poor. Try move outdoor or to an area with a better signal.",q.setAttribute("id","alert-popup"),document.body.appendChild(q)}}else{var gA=document.getElementById("alert-popup");if(this.currentCoords.accuracy<=this.data.positionMinAccuracy&&gA&&document.body.removeChild(gA),this.originCoords)this._setPosition();else{this.originCoords=this._project(this.currentCoords.latitude,this.currentCoords.longitude),this._setPosition();var yA=document.querySelector(".arjs-loader");yA&&yA.remove(),window.dispatchEvent(new CustomEvent("gps-camera-origin-coord-set"))}}},_setPosition:function(){var q=this.el.getAttribute("position"),gA=this.latLonToWorld(this.currentCoords.latitude,this.currentCoords.longitude);q.x=gA[0],q.z=gA[1],this.el.setAttribute("position",q),window.dispatchEvent(new CustomEvent("gps-camera-update-position",{detail:{position:this.currentCoords,origin:this.originCoords}}))},computeDistanceMeters:function(q,gA){var yA=this.el.getAttribute("position"),ge=q.x-yA.x,le=q.z-yA.z,Qt=Math.sqrt(ge*ge+le*le);return gA&&this.data.minDistance&&this.data.minDistance>0&&Qt<this.data.minDistance?Number.MAX_SAFE_INTEGER:Qt},latLonToWorld:function(q,gA){var yA=this._project(q,gA);return[yA[0]-this.originCoords[0],-(yA[1]-this.originCoords[1])]},_project:function(q,gA){const yA=2003750834e-2;return[gA/180*yA,Math.log(Math.tan((90+q)*Math.PI/360))/(Math.PI/180)*yA/180]},_unproject:function(q,gA){const yA=2003750834e-2;var ge=gA/yA*180;return{longitude:q/yA*180,latitude:180/Math.PI*(2*Math.atan(Math.exp(ge*Math.PI/180))-Math.PI/2)}},_computeCompassHeading:function(q,gA,yA){var ge=q*(Math.PI/180),le=gA*(Math.PI/180),Qt=yA*(Math.PI/180),Ct=Math.cos(ge),bt=Math.sin(ge),pi=Math.sin(le),hi=Math.cos(Qt),un=Math.sin(Qt),sn=-Ct*un-bt*pi*hi,En=-bt*un+Ct*pi*hi,bn=Math.atan(sn/En);return En<0?bn+=Math.PI:sn<0&&(bn+=2*Math.PI),bn*(180/Math.PI)},_onDeviceOrientation:function(q){q.webkitCompassHeading!==void 0?q.webkitCompassAccuracy<50?this.heading=q.webkitCompassHeading:console.warn("webkitCompassAccuracy is event.webkitCompassAccuracy"):q.alpha!==null?q.absolute===!0||q.absolute===void 0?this.heading=this._computeCompassHeading(q.alpha,q.beta,q.gamma):console.warn("event.absolute === false"):console.warn("event.alpha === null")},_updateRotation:function(){var q=(360-this.heading-(this.el.getAttribute("rotation").y-THREE.MathUtils.radToDeg(this.lookControls.yawObject.rotation.y)))%360;this.lookControls.yawObject.rotation.y=THREE.MathUtils.degToRad(q)},_haversineDist:function(q,gA){var yA=THREE.MathUtils.degToRad(gA.longitude-q.longitude),ge=THREE.MathUtils.degToRad(gA.latitude-q.latitude),le=Math.sin(ge/2)*Math.sin(ge/2)+Math.cos(THREE.MathUtils.degToRad(q.latitude))*Math.cos(THREE.MathUtils.degToRad(gA.latitude))*(Math.sin(yA/2)*Math.sin(yA/2));return 2*Math.atan2(Math.sqrt(le),Math.sqrt(1-le))*6371e3},_onGpsEntityPlaceAdded:function(){this.originCoords&&window.dispatchEvent(new CustomEvent("gps-camera-origin-coord-set")),this.loader&&this.loader.parentElement&&document.body.removeChild(this.loader)}}),_A.registerComponent("gps-projected-entity-place",{_cameraGps:null,schema:{longitude:{type:"number",default:0},latitude:{type:"number",default:0}},remove:function(){window.removeEventListener("gps-camera-update-position",this.updatePositionListener)},init:function(){this.coordSetListener=()=>{if(!this._cameraGps){var q=document.querySelector("[gps-projected-camera]");if(!q.components["gps-projected-camera"])return void console.error("gps-projected-camera not initialized");this._cameraGps=q.components["gps-projected-camera"],this._updatePosition()}},this.updatePositionListener=q=>{if(this.data&&this._cameraGps){var gA=this.el.getAttribute("position"),yA=this._cameraGps.computeDistanceMeters(gA);this.el.setAttribute("distance",yA),this.el.setAttribute("distanceMsg",this._formatDistance(yA)),this.el.dispatchEvent(new CustomEvent("gps-entity-place-update-position",{detail:{distance:yA}})),this._cameraGps.computeDistanceMeters(gA,!0)===Number.MAX_SAFE_INTEGER?this.hideForMinDistance(this.el,!0):this.hideForMinDistance(this.el,!1)}},window.addEventListener("gps-camera-origin-coord-set",this.coordSetListener),window.addEventListener("gps-camera-update-position",this.updatePositionListener),this._positionXDebug=0,window.dispatchEvent(new CustomEvent("gps-entity-place-added",{detail:{component:this.el}}))},hideForMinDistance:function(q,gA){gA?q.setAttribute("visible","false"):q.setAttribute("visible","true")},_updatePosition:function(){var q=this._cameraGps.latLonToWorld(this.data.latitude,this.data.longitude),gA=this.el.getAttribute("position");this.el.setAttribute("position",{x:q[0],y:gA.y,z:q[1]})},_formatDistance:function(q){return(q=q.toFixed(0))>=1e3?q/1e3+" kilometers":q+" meters"}});var HA=Mo(763);_A.registerComponent("gps-new-camera",{schema:{simulateLatitude:{type:"number",default:0},simulateLongitude:{type:"number",default:0},simulateAltitude:{type:"number",default:-Number.MAX_VALUE},gpsMinDistance:{type:"number",default:0},positionMinAccuracy:{type:"number",default:100},gpsTimeInterval:{type:"number",default:0},initialPositionAsOrigin:{type:"boolean",default:!1}},init:function(){this._testForOrientationControls(),this.threeLoc=new HA.LocationBased(this.el.sceneEl.object3D,this.el.object3D,{initialPositionAsOrigin:this.data.initialPositionAsOrigin}),this.threeLoc.on("gpsupdate",gA=>{this._currentPosition={longitude:gA.coords.longitude,latitude:gA.coords.latitude},this._sendGpsUpdateEvent(gA.coords.longitude,gA.coords.latitude)}),this.threeLoc.on("gpserror",gA=>{gA>=1&&gA<=3?this._displayError(["User denied access to GPS.","GPS satellites not available.","Timeout communicating with GPS satellites - try moving to a more open area."][gA-1]):this._displayError(`Unknown geolocation error code ${gA}.`)});const q=this._isMobile();this.el.setAttribute("look-controls-enabled",!q),q&&this.el.setAttribute("arjs-device-orientation-controls",!0),navigator.userAgent.match(/Version\/[\d.]+.*Safari/)&&this._setupSafariOrientationPermissions(),this.el.sceneEl.addEventListener("gps-entity-place-added",gA=>{const yA=gA.detail.component.components["gps-new-entity-place"];this._currentPosition&&yA.setDistanceFrom(this._currentPosition)})},update:function(q){this.threeLoc.setGpsOptions({gpsMinAccuracy:this.data.positionMinAccuracy,gpsMinDistance:this.data.gpsMinDistance,maximumAge:this.data.gpsTimeInterval}),this.data.simulateLatitude===0&&this.data.simulateLongitude===0||this.data.simulateLatitude==q.simulateLatitude&&this.data.simulateLongitude==q.simulateLongitude||(this.threeLoc.stopGps(),this.threeLoc.fakeGps(this.data.simulateLongitude,this.data.simulateLatitude),this.data.simulateLatitude=0,this.data.simulateLongitude=0),this.data.simulateAltitude>-Number.MAX_VALUE&&this.threeLoc.setElevation(this.data.simulateAltitude+1.6)},play:function(){this.data.simulateLatitude===0&&this.data.simulateLongitude===0&&this.threeLoc.startGps()},pause:function(){this.threeLoc.stopGps()},latLonToWorld:function(q,gA){return this.threeLoc.lonLatToWorldCoords(gA,q)},getInitialPosition:function(){return this.threeLoc.initialPosition},_sendGpsUpdateEvent:function(q,gA){this.el.emit("gps-camera-update-position",{position:{longitude:q,latitude:gA}})},_testForOrientationControls:function(){this.el.components["arjs-device-orientation-controls"]||this.el.components["look-controls"]||this._displayError("WARNING - No orientation controls component, app will not respond to device rotation.")},_displayError:function(q){const gA=this.el.sceneEl.systems.arjs;gA?gA._displayErrorPopup(q):alert(q)},_setupSafariOrientationPermissions:function(){var yA;if(typeof((yA=window.DeviceOrientationEvent)==null?void 0:yA.requestPermission)=="function"){var q=function(){console.log("Requesting device orientation permissions..."),DeviceOrientationEvent.requestPermission(),document.removeEventListener("touchend",q)};document.addEventListener("touchend",function(){q()},!1),this.el.sceneEl.systems.arjs._displayErrorPopup("After camera permission prompt, please tap the screen to activate geolocation.")}else{var gA=setTimeout(()=>{this.el.sceneEl.systems.arjs._displayErrorPopup("Please enable device orientation in Settings > Safari > Motion & Orientation Access.")},750);window.addEventListener("deviceorientation",function(){clearTimeout(gA)},{once:!0})}},_isMobile:function(){return!!(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)||/Macintosh/i.test(navigator.userAgent)&&navigator.maxTouchPoints!=null&&navigator.maxTouchPoints>1)}}),_A.registerComponent("gps-new-entity-place",{schema:{longitude:{type:"number",default:0},latitude:{type:"number",default:0}},init:function(){const q=document.querySelector("[gps-new-camera]");q.components["gps-new-camera"]?(this._cameraGps=q.components["gps-new-camera"],q.addEventListener("gps-camera-update-position",gA=>{this.distance=this._haversineDist(gA.detail.position,this.data)}),this.el.sceneEl.emit("gps-entity-place-added",{component:this.el})):console.error("gps-new-camera not initialised")},update:function(){const q=this._cameraGps.threeLoc.lonLatToWorldCoords(this.data.longitude,this.data.latitude);this.el.object3D.position.set(q[0],this.el.object3D.position.y,q[1])},setDistanceFrom:function(q){this.distance=this._haversineDist(q,this.data)},_haversineDist:function(q,gA){const yA=O.MathUtils.degToRad(gA.longitude-q.longitude),ge=O.MathUtils.degToRad(gA.latitude-q.latitude),le=Math.sin(ge/2)*Math.sin(ge/2)+Math.cos(O.MathUtils.degToRad(q.latitude))*Math.cos(O.MathUtils.degToRad(gA.latitude))*(Math.sin(yA/2)*Math.sin(yA/2));return 2*Math.atan2(Math.sqrt(le),Math.sqrt(1-le))*6371e3}}),_A.registerComponent("arjs-device-orientation-controls",{schema:{smoothingFactor:{type:"number",default:1}},init:function(){this._orientationControls=new THREEx.DeviceOrientationControls(this.el.object3D)},update:function(){this._orientationControls.smoothingFactor=this.data.smoothingFactor},tick:function(){this._orientationControls.update()}});const pe={createDefaultCamera:function(q){var gA=this.parseTrackingMethod(q).trackingBackend;if(gA==="artoolkit")var yA=new O.Camera;else console.assert(!1,"unknown trackingBackend: "+gA);return yA},parseTrackingMethod:function(q){return q==="best"&&(q="area-artoolkit"),q.startsWith("area-")?{trackingBackend:q.replace("area-",""),markersAreaEnabled:!0}:{trackingBackend:q,markersAreaEnabled:!1}}},He=function(){this.reset(),this.performance("default")};He.prototype._guessPerformanceLabel=function(){return navigator.userAgent.match(/Android/i)||navigator.userAgent.match(/webOS/i)||navigator.userAgent.match(/iPhone/i)||navigator.userAgent.match(/iPad/i)||navigator.userAgent.match(/Macintosh/i)&&navigator.maxTouchPoints!=null&&navigator.maxTouchPoints>1||navigator.userAgent.match(/iPod/i)||navigator.userAgent.match(/BlackBerry/i)||navigator.userAgent.match(/Windows Phone/i)?"phone-normal":"desktop-normal"},He.prototype.reset=function(){return this.sourceParameters={sourceType:"webcam"},this.contextParameters={cameraParametersUrl:U.baseURL+"../data/data/camera_para.dat",detectionMode:"mono"},this.defaultMarkerParameters={type:"pattern",patternUrl:U.baseURL+"../data/data/patt.hiro",changeMatrixMode:"modelViewMatrix"},this},He.prototype.performance=function(q){return q==="default"&&(q=this._guessPerformanceLabel()),q==="desktop-fast"?(this.contextParameters.canvasWidth=1920,this.contextParameters.canvasHeight=1440,this.contextParameters.maxDetectionRate=30):q==="desktop-normal"?(this.contextParameters.canvasWidth=640,this.contextParameters.canvasHeight=480,this.contextParameters.maxDetectionRate=60):q==="phone-normal"?(this.contextParameters.canvasWidth=320,this.contextParameters.canvasHeight=240,this.contextParameters.maxDetectionRate=30):q==="phone-slow"?(this.contextParameters.canvasWidth=240,this.contextParameters.canvasHeight=180,this.contextParameters.maxDetectionRate=30):console.assert(!1,"unknonwn label "+q),this},He.prototype.defaultMarker=function(q){return(q=q||this.contextParameters.trackingBackend)==="artoolkit"?(this.contextParameters.detectionMode="mono",this.defaultMarkerParameters.type="pattern",this.defaultMarkerParameters.patternUrl=U.baseURL+"../data/data/patt.hiro"):console.assert(!1),this},He.prototype.sourceWebcam=function(){return this.sourceParameters.sourceType="webcam",delete this.sourceParameters.sourceUrl,this},He.prototype.sourceVideo=function(q){return this.sourceParameters.sourceType="video",this.sourceParameters.sourceUrl=q,this},He.prototype.sourceImage=function(q){return this.sourceParameters.sourceType="image",this.sourceParameters.sourceUrl=q,this},He.prototype.trackingBackend=function(q){return console.warn("stop profile.trackingBackend() obsolete function. use .trackingMethod instead"),this.contextParameters.trackingBackend=q,this},He.prototype.changeMatrixMode=function(q){return this.defaultMarkerParameters.changeMatrixMode=q,this},He.prototype.trackingMethod=function(q){var gA=pe.parseTrackingMethod(q);return this.defaultMarkerParameters.markersAreaEnabled=gA.markersAreaEnabled,this.contextParameters.trackingBackend=gA.trackingBackend,this},He.prototype.checkIfValid=function(){return this};const Oe=He,ye=function(q){var gA=this;this.ready=!1,this.domElement=null,this.parameters={sourceType:"webcam",sourceUrl:null,deviceId:null,sourceWidth:640,sourceHeight:480,displayWidth:640,displayHeight:480},function(yA){if(yA!==void 0)for(var ge in yA){var le=yA[ge];le!==void 0?gA.parameters[ge]!==void 0?gA.parameters[ge]=le:console.warn("ArToolkitSource: '"+ge+"' is not a property of this material."):console.warn("ArToolkitSource: '"+ge+"' parameter is undefined.")}}(q),this.onInitialClick=function(){this.domElement&&this.domElement.play&&this.domElement.play().then(()=>{})}};ye.prototype.init=function(q,gA){var yA=this;if(this.parameters.sourceType==="image")var ge=this._initSourceImage(le,gA);else this.parameters.sourceType==="video"?ge=this._initSourceVideo(le,gA):this.parameters.sourceType==="webcam"?ge=this._initSourceWebcam(le,gA):console.assert(!1);return this.domElement=ge,this.domElement.style.position="absolute",this.domElement.style.top="0px",this.domElement.style.left="0px",this.domElement.style.zIndex="-2",this.domElement.setAttribute("id","arjs-video"),this;function le(){yA.domElement&&(document.body.appendChild(yA.domElement),window.dispatchEvent(new CustomEvent("arjs-video-loaded",{detail:{component:document.querySelector("#arjs-video")}})),yA.ready=!0,q&&q())}},ye.prototype._initSourceImage=function(q){var gA=document.createElement("img");return gA.src=this.parameters.sourceUrl,gA.width=this.parameters.sourceWidth,gA.height=this.parameters.sourceHeight,gA.style.width=this.parameters.displayWidth+"px",gA.style.height=this.parameters.displayHeight+"px",gA.onload=q,gA},ye.prototype._initSourceVideo=function(q){var gA=document.createElement("video");return gA.src=this.parameters.sourceUrl,gA.style.objectFit="initial",gA.autoplay=!0,gA.webkitPlaysinline=!0,gA.controls=!1,gA.loop=!0,gA.muted=!0,document.body.addEventListener("click",this.onInitialClick,{once:!0}),gA.width=this.parameters.sourceWidth,gA.height=this.parameters.sourceHeight,gA.style.width=this.parameters.displayWidth+"px",gA.style.height=this.parameters.displayHeight+"px",gA.onloadeddata=q,gA},ye.prototype._initSourceWebcam=function(q,gA){var yA=this;gA=gA||function(Qt){var Ct=new CustomEvent("camera-error",{error:Qt});window.dispatchEvent(Ct),setTimeout(()=>{if(!document.getElementById("error-popup")){var bt=document.createElement("div");bt.innerHTML=`Webcam Error
Name: `+Qt.name+`
Message: `+Qt.message,bt.setAttribute("id","error-popup"),document.body.appendChild(bt)}},1e3)};var ge=document.createElement("video");if(ge.setAttribute("autoplay",""),ge.setAttribute("muted",""),ge.setAttribute("playsinline",""),ge.style.width=this.parameters.displayWidth+"px",ge.style.height=this.parameters.displayHeight+"px",navigator.mediaDevices===void 0||navigator.mediaDevices.enumerateDevices===void 0||navigator.mediaDevices.getUserMedia===void 0){if(navigator.mediaDevices===void 0)var le="navigator.mediaDevices";else navigator.mediaDevices.enumerateDevices===void 0?le="navigator.mediaDevices.enumerateDevices":navigator.mediaDevices.getUserMedia===void 0?le="navigator.mediaDevices.getUserMedia":console.assert(!1);return gA({name:"",message:"WebRTC issue-! "+le+" not present in your browser"}),null}return navigator.mediaDevices.enumerateDevices().then(function(Qt){var Ct={audio:!1,video:{facingMode:"environment",width:{ideal:yA.parameters.sourceWidth},height:{ideal:yA.parameters.sourceHeight}}};yA.parameters.deviceId!==null&&(Ct.video.deviceId={exact:yA.parameters.deviceId}),navigator.mediaDevices.getUserMedia(Ct).then(function(bt){ge.srcObject=bt;var pi=new CustomEvent("camera-init",{stream:bt});window.dispatchEvent(pi),document.body.addEventListener("click",yA.onInitialClick,{once:!0}),q()}).catch(function(bt){gA({name:bt.name,message:bt.message})})}).catch(function(Qt){gA({message:Qt.message})}),ge},ye.prototype.dispose=function(){switch(this.ready=!1,this.parameters.sourceType){case"image":this._disposeSourceImage();break;case"video":this._disposeSourceVideo();break;case"webcam":this._disposeSourceWebcam()}this.domElement=null,document.body.removeEventListener("click",this.onInitialClick,{once:!0})},ye.prototype._disposeSourceImage=function(){var q=document.querySelector("#arjs-video");q&&q.remove()},ye.prototype._disposeSourceVideo=function(){var q=document.querySelector("#arjs-video");q&&(q.pause(),q.removeAttribute("src"),q.load(),q.remove())},ye.prototype._disposeSourceWebcam=function(){var q=document.querySelector("#arjs-video");q&&(q.srcObject&&q.srcObject.getTracks&&q.srcObject.getTracks().map(gA=>gA.stop()),q.remove())},ye.prototype.hasMobileTorch=function(){var q=arToolkitSource.domElement.srcObject;if(q instanceof MediaStream==0)return!1;this._currentTorchStatus===void 0&&(this._currentTorchStatus=!1);var gA=q.getVideoTracks()[0];return gA.getCapabilities!==void 0&&!!gA.getCapabilities().torch},ye.prototype.toggleMobileTorch=function(){console.assert(this.hasMobileTorch()===!0);var q=arToolkitSource.domElement.srcObject;if(q instanceof MediaStream!=0){this._currentTorchStatus===void 0&&(this._currentTorchStatus=!1);var gA=q.getVideoTracks()[0];gA.getCapabilities().torch?(this._currentTorchStatus=this._currentTorchStatus===!1,gA.applyConstraints({advanced:[{torch:this._currentTorchStatus}]}).catch(function(ge){console.log(ge)})):document.getElementById("error-popup")||((yA=document.createElement("div")).innerHTML="no mobile torch is available on your camera",yA.setAttribute("id","error-popup"),document.body.appendChild(yA))}else{var yA;document.getElementById("error-popup")||((yA=document.createElement("div")).innerHTML="enabling mobile torch is available only on webcam",yA.setAttribute("id","error-popup"),document.body.appendChild(yA))}},ye.prototype.domElementWidth=function(){return parseInt(this.domElement.style.width)},ye.prototype.domElementHeight=function(){return parseInt(this.domElement.style.height)},ye.prototype.onResizeElement=function(){var q=window.innerWidth,gA=window.innerHeight;if(console.assert(arguments.length===0),this.domElement.nodeName==="IMG")var yA=this.domElement.naturalWidth,ge=this.domElement.naturalHeight;else this.domElement.nodeName==="VIDEO"?(yA=this.domElement.videoWidth,ge=this.domElement.videoHeight):console.assert(!1);var le=yA/ge;if(q/gA<le){var Qt=le*gA;this.domElement.style.width=Qt+"px",this.domElement.style.marginLeft=-(Qt-q)/2+"px",this.domElement.style.height=gA+"px",this.domElement.style.marginTop="0px"}else{var Ct=1/(le/q);this.domElement.style.height=Ct+"px",this.domElement.style.marginTop=-(Ct-gA)/2+"px",this.domElement.style.width=q+"px",this.domElement.style.marginLeft="0px"}},ye.prototype.copyElementSizeTo=function(q){window.innerWidth>window.innerHeight?(q.style.width=this.domElement.style.width,q.style.height=this.domElement.style.height,q.style.marginLeft=this.domElement.style.marginLeft,q.style.marginTop=this.domElement.style.marginTop):(q.style.height=this.domElement.style.height,q.style.width=4*parseInt(q.style.height)/3+"px",q.style.marginLeft=(window.innerWidth-parseInt(q.style.width))/2+"px",q.style.marginTop=0)},ye.prototype.copySizeTo=function(){console.warn("obsolete function arToolkitSource.copySizeTo. Use arToolkitSource.copyElementSizeTo"),this.copyElementSizeTo.apply(this,arguments)},ye.prototype.onResize=function(q,gA,yA){if(arguments.length!==3)return console.warn("obsolete function arToolkitSource.onResize. Use arToolkitSource.onResizeElement"),this.onResizeElement.apply(this,arguments);var ge=q.parameters.trackingBackend;ge==="artoolkit"?(this.onResizeElement(),!gA.domElement.dataset.aframeCanvas&&this.copyElementSizeTo(gA.domElement),q.arController!==null&&this.copyElementSizeTo(q.arController.canvas)):console.assert(!1,"unhandled trackingBackend "+ge),ge==="artoolkit"?q.arController!==null&&yA.projectionMatrix.copy(q.getProjectionMatrix()):console.assert(!1,"unhandled trackingBackend "+ge)};const Ye=ye,Et=function(q){var gA=this;this.parameters={renderer:null,camera:null,scene:null,sourceParameters:{},contextParameters:{}},function(Qt){if(Qt!==void 0)for(var Ct in Qt){var bt=Qt[Ct];bt!==void 0?gA.parameters[Ct]!==void 0?gA.parameters[Ct]=bt:console.warn("THREEx.Session: '"+Ct+"' is not a property of this material."):console.warn("THREEx.Session: '"+Ct+"' parameter is undefined.")}}(q),console.assert(this.parameters.renderer instanceof O.WebGLRenderer),console.assert(this.parameters.camera instanceof O.Camera),console.assert(this.parameters.scene instanceof O.Scene),Object.defineProperty(this,"renderer",{get:function(){return console.warn("use .parameters.renderer renderer"),this.parameters.renderer}}),Object.defineProperty(this,"camera",{get:function(){return console.warn("use .parameters.camera instead"),this.parameters.camera}}),Object.defineProperty(this,"scene",{get:function(){return console.warn("use .parameters.scene instead"),this.parameters.scene}}),console.log("AR.js",U.REVISION,"- trackingBackend:",q.contextParameters.trackingBackend);var yA=gA.arSource=new Ye(q.sourceParameters);yA.init(function(){yA.onResize(ge,gA.parameters.renderer,gA.parameters.camera)}),window.addEventListener("resize",function(){yA.onResize(ge,gA.parameters.renderer,gA.parameters.camera)});var ge=gA.arContext=new U(q.contextParameters);function le(){return gA?(console.log("actual source dimensions",yA.domElement.clientWidth,yA.domElement.clientHeight),yA.domElement.clientWidth>yA.domElement.clientHeight?(console.log("source orientation","landscape"),"landscape"):(console.log("source orientation","portrait"),"portrait")):null}window.addEventListener("arjs-video-loaded",function(){gA.arContext.init(()=>{gA.arContext.arController.orientation=le(),gA.arContext.arController.options.orientation=le()})}),ge.addEventListener("initialized",function(Qt){yA.onResize(ge,gA.parameters.renderer,gA.parameters.camera)}),this.update=function(){yA.ready!==!1&&ge.update(yA.domElement)}};Et.prototype.onResize=function(){this.arSource.onResize(this.arContext,this.parameters.renderer,this.parameters.camera)};const ct=Et;_A.registerSystem("arjs",{schema:{trackingMethod:{type:"string",default:"best"},debugUIEnabled:{type:"boolean",default:!1},areaLearningButton:{type:"boolean",default:!0},performanceProfile:{type:"string",default:"default"},labelingMode:{type:"string",default:""},videoTexture:{type:"boolean",default:!1},debug:{type:"boolean",default:!1},detectionMode:{type:"string",default:""},matrixCodeType:{type:"string",default:""},patternRatio:{type:"number",default:-1},cameraParametersUrl:{type:"string",default:""},maxDetectionRate:{type:"number",default:-1},sourceType:{type:"string",default:""},sourceUrl:{type:"string",default:""},sourceWidth:{type:"number",default:-1},sourceHeight:{type:"number",default:-1},deviceId:{type:"string",default:""},displayWidth:{type:"number",default:-1},displayHeight:{type:"number",default:-1},canvasWidth:{type:"number",default:-1},canvasHeight:{type:"number",default:-1},errorPopup:{type:"string",default:""}},init:function(){var q=this;if(this.data.videoTexture===!0&&this.data.sourceType==="webcam"){var gA=document.createElement("a-entity");return gA.setAttribute("arjs-webcam-texture",!0),void this.el.sceneEl.appendChild(gA)}var yA=this._arProfile=new Oe().trackingMethod(this.data.trackingMethod).performance(this.data.performanceProfile).defaultMarker();this.data.debug!==!1&&(yA.contextParameters.debug=this.data.debug),this.data.detectionMode!==""&&(yA.contextParameters.detectionMode=this.data.detectionMode),this.data.matrixCodeType!==""&&(yA.contextParameters.matrixCodeType=this.data.matrixCodeType),this.data.patternRatio!==-1&&(yA.contextParameters.patternRatio=this.data.patternRatio),this.data.labelingMode!==""&&(yA.contextParameters.labelingMode=this.data.labelingMode),this.data.cameraParametersUrl!==""&&(yA.contextParameters.cameraParametersUrl=this.data.cameraParametersUrl),this.data.maxDetectionRate!==-1&&(yA.contextParameters.maxDetectionRate=this.data.maxDetectionRate),this.data.canvasWidth!==-1&&(yA.contextParameters.canvasWidth=this.data.canvasWidth),this.data.canvasHeight!==-1&&(yA.contextParameters.canvasHeight=this.data.canvasHeight),this.data.sourceType!==""&&(yA.sourceParameters.sourceType=this.data.sourceType),this.data.sourceUrl!==""&&(yA.sourceParameters.sourceUrl=this.data.sourceUrl),this.data.sourceWidth!==-1&&(yA.sourceParameters.sourceWidth=this.data.sourceWidth),this.data.sourceHeight!==-1&&(yA.sourceParameters.sourceHeight=this.data.sourceHeight),this.data.deviceId!==""&&(yA.sourceParameters.deviceId=this.data.deviceId),this.data.displayWidth!==-1&&(yA.sourceParameters.displayWidth=this.data.displayWidth),this.data.displayHeight!==-1&&(yA.sourceParameters.displayHeight=this.data.displayHeight),yA.checkIfValid(),this._arSession=null,q.isReady=!1,q.needsOverride=!0,this.el.sceneEl.addEventListener("renderstart",function(){var ge=q.el.sceneEl.object3D,le=q.el.sceneEl.camera,Qt=q.el.sceneEl.renderer,Ct=q._arSession=new ct({scene:ge,renderer:Qt,camera:le,sourceParameters:yA.sourceParameters,contextParameters:yA.contextParameters});q.isReady=!0,window.addEventListener("resize",function(){var bt=q._arSession.arSource;yA.contextParameters.trackingBackend!=="tango"&&bt.copyElementSizeTo(document.body);var pi=document.querySelector(".a-enter-vr");pi&&(pi.style.position="fixed")}),q.data.debugUIEnabled&&function(){var bt=document.querySelector("#arjsDebugUIContainer");bt===null&&((bt=document.createElement("div")).id="arjsDebugUIContainer",bt.setAttribute("style","position: fixed; bottom: 10px; width:100%; text-align: center; z-index: 1;color: grey;"),document.body.appendChild(bt));var pi=new QA(Ct);bt.appendChild(pi.domElement)}()}),function(ge,le=1/0,Qt=1e3){if(ge==null||Object.prototype.toString.call(ge)!="[object Function]")return;let Ct=33.3,bt=Date.now(),pi=function(){Ct=2*Ct<Qt?2*Ct:Qt,setTimeout(function(){ge(),(le==1/0||Date.now()-bt<le)&&pi()},Ct)};pi()}(()=>{window.dispatchEvent(new Event("resize"))})},tick:function(){this.isReady!==!1&&this.data.videoTexture!==!0&&(this._arSession.update(),this._arSession.onResize())},_displayErrorPopup:function(q){if(this.data.errorPopup!==""){let gA=document.getElementById(this.data.errorPopup);gA||(gA=document.createElement("div"),gA.setAttribute("id",this.data.errorPopup),document.body.appendChild(gA)),gA.innerHTML=q}else alert(q)}})})(),{}})())})(Dp);function ld(_i,Ln){(Ln==null||Ln>_i.length)&&(Ln=_i.length);for(var xn=0,Ir=Array(Ln);xn<Ln;xn++)Ir[xn]=_i[xn];return Ir}function Mp(_i){if(Array.isArray(_i))return _i}function Sp(_i){if(Array.isArray(_i))return ld(_i)}function Vh(_i,Ln,xn){return(Ln=Up(Ln))in _i?Object.defineProperty(_i,Ln,{value:xn,enumerable:!0,configurable:!0,writable:!0}):_i[Ln]=xn,_i}function Rp(_i){if(typeof Symbol<"u"&&_i[Symbol.iterator]!=null||_i["@@iterator"]!=null)return Array.from(_i)}function Gp(_i,Ln){var xn=_i==null?null:typeof Symbol<"u"&&_i[Symbol.iterator]||_i["@@iterator"];if(xn!=null){var Ir,ng,dn,Mo,_A=[],O=!0,d=!1;try{if(dn=(xn=xn.call(_i)).next,Ln!==0)for(;!(O=(Ir=dn.call(xn)).done)&&(_A.push(Ir.value),_A.length!==Ln);O=!0);}catch(s){d=!0,ng=s}finally{try{if(!O&&xn.return!=null&&(Mo=xn.return(),Object(Mo)!==Mo))return}finally{if(d)throw ng}}return _A}}function Fp(){throw new TypeError(`Invalid attempt to destructure non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function vp(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Ku(_i,Ln){var xn=Object.keys(_i);if(Object.getOwnPropertySymbols){var Ir=Object.getOwnPropertySymbols(_i);Ln&&(Ir=Ir.filter(function(ng){return Object.getOwnPropertyDescriptor(_i,ng).enumerable})),xn.push.apply(xn,Ir)}return xn}function Ju(_i){for(var Ln=1;Ln<arguments.length;Ln++){var xn=arguments[Ln]!=null?arguments[Ln]:{};Ln%2?Ku(Object(xn),!0).forEach(function(Ir){Vh(_i,Ir,xn[Ir])}):Object.getOwnPropertyDescriptors?Object.defineProperties(_i,Object.getOwnPropertyDescriptors(xn)):Ku(Object(xn)).forEach(function(Ir){Object.defineProperty(_i,Ir,Object.getOwnPropertyDescriptor(xn,Ir))})}return _i}function qh(_i,Ln){return Mp(_i)||Gp(_i,Ln)||Yu(_i,Ln)||Fp()}function Wh(_i){return Sp(_i)||Rp(_i)||Yu(_i)||vp()}function Np(_i,Ln){if(typeof _i!="object"||!_i)return _i;var xn=_i[Symbol.toPrimitive];if(xn!==void 0){var Ir=xn.call(_i,Ln);if(typeof Ir!="object")return Ir;throw new TypeError("@@toPrimitive must return a primitive value.")}return(Ln==="string"?String:Number)(_i)}function Up(_i){var Ln=Np(_i,"string");return typeof Ln=="symbol"?Ln:Ln+""}function Yu(_i,Ln){if(_i){if(typeof _i=="string")return ld(_i,Ln);var xn={}.toString.call(_i).slice(8,-1);return xn==="Object"&&_i.constructor&&(xn=_i.constructor.name),xn==="Map"||xn==="Set"?Array.from(_i):xn==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(xn)?ld(_i,Ln):void 0}}var Lp=mp({props:{width:{},height:{},yOffset:{default:1.5},glScale:{default:200},jsonUrl:{},graphData:{default:{nodes:[],links:[]}},numDimensions:{default:3},dagMode:{},dagLevelDistance:{},dagNodeFilter:{default:function(){return!0}},onDagError:{default:void 0},nodeRelSize:{default:4},nodeId:{default:"id"},nodeVal:{default:"val"},nodeResolution:{default:8},nodeVisibility:{default:!0},nodeColor:{default:"color"},nodeAutoColorBy:{},nodeOpacity:{default:.75},nodeThreeObject:{},nodeThreeObjectExtend:{default:!1},linkSource:{default:"source"},linkTarget:{default:"target"},linkVisibility:{default:!0},linkColor:{default:"color"},linkAutoColorBy:{},linkOpacity:{default:.2},linkWidth:{default:0},linkResolution:{default:6},linkCurvature:{default:0},linkCurveRotation:{default:0},linkMaterial:{},linkThreeObject:{},linkThreeObjectExtend:{default:!1},linkPositionUpdate:{},linkDirectionalArrowLength:{default:0},linkDirectionalArrowColor:{},linkDirectionalArrowRelPos:{default:.5},linkDirectionalArrowResolution:{default:8},linkDirectionalParticles:{default:0},linkDirectionalParticleSpeed:{default:.01},linkDirectionalParticleOffset:{default:0},linkDirectionalParticleWidth:{default:.5},linkDirectionalParticleColor:{},linkDirectionalParticleResolution:{default:4},linkDirectionalParticleThreeObject:{},onNodeHover:{},onNodeClick:{},onLinkHover:{},onLinkClick:{},forceEngine:{default:"d3"},d3AlphaMin:{default:0},d3AlphaDecay:{default:.0228},d3VelocityDecay:{default:.4},ngraphPhysics:{},warmupTicks:{default:0},cooldownTicks:{},cooldownTime:{default:15e3},onEngineTick:{},onEngineStop:{}},methods:Ju(Ju({},Object.assign.apply(Object,[{}].concat(Wh(["getGraphBbox","emitParticle","d3Force","d3ReheatSimulation","refresh"].map(function(_i){return Vh({},_i,function(Ln){for(var xn=Ln.forcegraph.components.forcegraph,Ir=arguments.length,ng=new Array(Ir>1?Ir-1:0),dn=1;dn<Ir;dn++)ng[dn-1]=arguments[dn];var Mo=xn[_i].apply(xn,ng);return Mo===xn?this:Mo})}))))),{},{_destructor:function(){this.graphData({nodes:[],links:[]})}}),init:function(Ln,xn){var Ir=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},ng=Ir.markerAttrs,dn=ng===void 0?{preset:"hiro"}:ng;Ln.innerHTML="",xn.container=document.createElement("div"),Ln.appendChild(xn.container);var Mo=document.createElement("a-scene");Mo.setAttribute("embedded",""),Mo.setAttribute("vr-mode-ui","enabled: false"),Mo.setAttribute("arjs","debugUIEnabled: false;");var _A=document.createElement("a-marker");Object.entries(dn).forEach(function(s){var z=qh(s,2),_=z[0],T=z[1];return _A.setAttribute(_,T)}),Mo.appendChild(_A);var O;Mo.appendChild(O=document.createElement("a-entity")),O.setAttribute("cursor"),O.setAttribute("raycaster","objects: [forcegraph]"),xn.forcegraph=document.createElement("a-entity"),xn.forcegraph.setAttribute("forcegraph",null),_A.appendChild(xn.forcegraph);var d=document.createElement("a-entity");d.setAttribute("camera",""),Mo.appendChild(d),xn.container.appendChild(Mo)},update:function(Ln,xn){xn.hasOwnProperty("width")&&Ln.width&&(Ln.container.style.width="".concat(Ln.width,"px")),xn.hasOwnProperty("height")&&Ln.height&&(Ln.container.style.height="".concat(Ln.height,"px")),xn.hasOwnProperty("glScale")&&Ln.forcegraph.setAttribute("scale",Wh(new Array(3)).map(function(){return 1/Ln.glScale}).join(" ")),xn.hasOwnProperty("yOffset")&&Ln.forcegraph.setAttribute("position","0 ".concat(Ln.yOffset," 0"));var Ir=["jsonUrl","numDimensions","dagMode","dagLevelDistance","dagNodeFilter","onDagError","nodeRelSize","nodeId","nodeVal","nodeResolution","nodeVisibility","nodeColor","nodeAutoColorBy","nodeOpacity","nodeThreeObject","nodeThreeObjectExtend","linkSource","linkTarget","linkVisibility","linkColor","linkAutoColorBy","linkOpacity","linkWidth","linkResolution","linkCurvature","linkCurveRotation","linkMaterial","linkThreeObject","linkThreeObjectExtend","linkPositionUpdate","linkDirectionalArrowLength","linkDirectionalArrowColor","linkDirectionalArrowRelPos","linkDirectionalArrowResolution","linkDirectionalParticles","linkDirectionalParticleSpeed","linkDirectionalParticleOffset","linkDirectionalParticleWidth","linkDirectionalParticleColor","linkDirectionalParticleResolution","linkDirectionalParticleThreeObject","onNodeHover","onNodeClick","onLinkHover","onLinkClick","forceEngine","d3AlphaMin","d3AlphaDecay","d3VelocityDecay","ngraphPhysics","warmupTicks","cooldownTicks","cooldownTime","onEngineTick","onEngineStop"],ng=Object.assign.apply(Object,[{}].concat(Wh(Object.entries(Ln).filter(function(dn){var Mo=qh(dn,2),_A=Mo[0],O=Mo[1];return xn.hasOwnProperty(_A)&&Ir.indexOf(_A)!==-1&&O!==void 0&&O!==null}).map(function(dn){var Mo=qh(dn,2),_A=Mo[0],O=Mo[1];return Vh({},_A,O)})),Wh(Object.entries(Ln.graphData).map(function(dn){var Mo=qh(dn,2),_A=Mo[0],O=Mo[1];return Vh({},_A,O)}))));Ln.forcegraph.setAttribute("forcegraph",ng)}});function Jp(_i){const Ln=_i.instance||Lp(),xn=getComputedStyle(_i.element);return _i.instance||Ln(_i.element),Ln.graphData(_i.data).width(Number(xn.width.slice(0,-2))||window.innerWidth).height(Number(xn.height.slice(0,-2))||window.innerHeight).cooldownTicks(100),Ln}export{Jp as render};